diff options
Diffstat (limited to 'intern/mantaflow')
-rw-r--r-- | intern/mantaflow/intern/MANTA_main.cpp | 5 | ||||
-rw-r--r-- | intern/mantaflow/intern/strings/fluid_script.h | 31 | ||||
-rw-r--r-- | intern/mantaflow/intern/strings/liquid_script.h | 33 |
3 files changed, 60 insertions, 9 deletions
diff --git a/intern/mantaflow/intern/MANTA_main.cpp b/intern/mantaflow/intern/MANTA_main.cpp index 6c8e45ceeb4..0959e017352 100644 --- a/intern/mantaflow/intern/MANTA_main.cpp +++ b/intern/mantaflow/intern/MANTA_main.cpp @@ -59,8 +59,8 @@ int MANTA::with_debug(0); MANTA::MANTA(int *res, FluidModifierData *fmd) : mCurrentID(++solverID), mMaxRes(fmd->domain->maxres) { - if (with_debug) - cout << "FLUID: " << mCurrentID << " with res(" << res[0] << ", " << res[1] << ", " << res[2] + //if (with_debug) + cout << "============= FLUID: " << mCurrentID << " with res(" << res[0] << ", " << res[1] << ", " << res[2] << ")" << endl; FluidDomainSettings *fds = fmd->domain; @@ -279,6 +279,7 @@ MANTA::MANTA(int *res, FluidModifierData *fmd) } /* All requested initializations must not fail in constructor. */ BLI_assert(initSuccess); + UNUSED_VARS(initSuccess); updatePointers(fmd); } diff --git a/intern/mantaflow/intern/strings/fluid_script.h b/intern/mantaflow/intern/strings/fluid_script.h index 3bf8e66c110..eb29b95affb 100644 --- a/intern/mantaflow/intern/strings/fluid_script.h +++ b/intern/mantaflow/intern/strings/fluid_script.h @@ -273,13 +273,32 @@ def fluid_adapt_time_step_$ID$():\n\ const std::string fluid_alloc = "\n\ mantaMsg('Fluid alloc data')\n\ -flags_s$ID$ = s$ID$.create(FlagGrid, name='$NAME_FLAGS$')\n\ -vel_s$ID$ = s$ID$.create(MACGrid, name='$NAME_VELOCITY$', sparse=True)\n\ +flags_s$ID$ = s$ID$.create(FlagGrid, name='$NAME_FLAGS$', offload=True)\n\ +mantaMsg('Fluid alloc data vel')\n\ +vel_s$ID$ = s$ID$.create(MACGrid, name='$NAME_VELOCITY$', sparse=True, offload=True)\n\ velTmp_s$ID$ = s$ID$.create(MACGrid, name='$NAME_VELOCITYTMP$', sparse=True)\n\ x_vel_s$ID$ = s$ID$.create(RealGrid, name='$NAME_VELOCITY_X$')\n\ y_vel_s$ID$ = s$ID$.create(RealGrid, name='$NAME_VELOCITY_Y$')\n\ z_vel_s$ID$ = s$ID$.create(RealGrid, name='$NAME_VELOCITY_Z$')\n\ -pressure_s$ID$ = s$ID$.create(RealGrid, name='$NAME_PRESSURE$')\n\ +mantaMsg('Fluid alloc data pressure')\n\ +pressure_s$ID$ = s$ID$.create(RealGrid, name='$NAME_PRESSURE$', offload=True)\n\ +mantaMsg('Fluid alloc data rhs')\n\ +rhs_s$ID$ = s$ID$.create(RealGrid, offload=True)\n\ +mantaMsg('Fluid alloc data A0')\n\ +A0_s$ID$ = s$ID$.create(RealGrid, offload=True)\n\ +mantaMsg('Fluid alloc data Ai')\n\ +Ai_s$ID$ = s$ID$.create(RealGrid, offload=True)\n\ +mantaMsg('Fluid alloc data Aj')\n\ +Aj_s$ID$ = s$ID$.create(RealGrid, offload=True)\n\ +mantaMsg('Fluid alloc data Ak')\n\ +Ak_s$ID$ = s$ID$.create(RealGrid, offload=True)\n\ +mantaMsg('Fluid alloc data search')\n\ +search_s$ID$ = s$ID$.create(RealGrid, offload=True)\n\ +mantaMsg('Fluid alloc data residual')\n\ +residual_s$ID$ = s$ID$.create(RealGrid, offload=True)\n\ +mantaMsg('Fluid alloc data tmp')\n\ +tmp_s$ID$ = s$ID$.create(RealGrid, offload=True)\n\ +mantaMsg('Fluid alloc data 6')\n\ phiObs_s$ID$ = s$ID$.create(LevelsetGrid, name='$NAME_PHIOBS$')\n\ phiSIn_s$ID$ = s$ID$.create(LevelsetGrid, name='$NAME_PHISIN$') # helper for static flow objects\n\ phiIn_s$ID$ = s$ID$.create(LevelsetGrid, name='$NAME_PHIIN$')\n\ @@ -298,7 +317,8 @@ phiOut_s$ID$.setConst(9999)\n\ \n\ # Keep track of important objects in dict to load them later on\n\ fluid_data_dict_final_s$ID$ = { 'vel' : vel_s$ID$ }\n\ -fluid_data_dict_resume_s$ID$ = { 'phiObs' : phiObs_s$ID$, 'phiIn' : phiIn_s$ID$, 'phiOut' : phiOut_s$ID$, 'flags' : flags_s$ID$, 'velTmp' : velTmp_s$ID$ }\n"; +fluid_data_dict_resume_s$ID$ = { 'phiObs' : phiObs_s$ID$, 'phiIn' : phiIn_s$ID$, 'phiOut' : phiOut_s$ID$, 'flags' : flags_s$ID$, 'velTmp' : velTmp_s$ID$ }\n\ +mantaMsg('Fluid alloc DONE')\n"; const std::string fluid_alloc_obstacle = "\n\ @@ -477,7 +497,8 @@ mantaMsg('Delete guiding solver')\n\ if 'sg$ID$' in globals(): del sg$ID$\n\ \n\ # Release unreferenced memory (if there is some left)\n\ -gc.collect()\n"; +gc.collect()\n\ +mantaMsg('Done deleting')\n"; ////////////////////////////////////////////////////////////////////// // BAKE diff --git a/intern/mantaflow/intern/strings/liquid_script.h b/intern/mantaflow/intern/strings/liquid_script.h index c44727bd47e..1773d4869aa 100644 --- a/intern/mantaflow/intern/strings/liquid_script.h +++ b/intern/mantaflow/intern/strings/liquid_script.h @@ -274,9 +274,14 @@ def liquid_step_$ID$():\n\ velTmp_s$ID$.copyFrom(vel_s$ID$)\n\ \n\ mantaMsg('Advecting phi')\n\ + #phi_s$ID$.updateToOmp()\n\ + #vel_s$ID$.updateToOmp()\n\ advectSemiLagrange(flags=flags_s$ID$, vel=vel_s$ID$, grid=phi_s$ID$, order=1) # first order is usually enough\n\ + \n\ mantaMsg('Advecting velocity')\n\ advectSemiLagrange(flags=flags_s$ID$, vel=vel_s$ID$, grid=vel_s$ID$, order=2)\n\ + #phi_s$ID$.updateFromOmp()\n\ + #vel_s$ID$.updateFromOmp()\n\ \n\ # create level set of particles\n\ gridParticleIndex(parts=pp_s$ID$, flags=flags_s$ID$, indexSys=pindex_s$ID$, index=gpi_s$ID$)\n\ @@ -323,21 +328,45 @@ def liquid_step_$ID$():\n\ getLaplacian(laplacian=curvature_s$ID$, grid=phi_s$ID$)\n\ curvature_s$ID$.clamp(-1.0, 1.0)\n\ \n\ + #vel_s$ID$.updateToOmp()\n\ setWallBcs(flags=flags_s$ID$, vel=vel_s$ID$, obvel=None if using_fractions_s$ID$ else obvel_s$ID$, phiObs=phiObs_s$ID$, fractions=fractions_s$ID$)\n\ + #vel_s$ID$.updateFromOmp()\n\ + \n\ if using_viscosity_s$ID$:\n\ viscosity_s$ID$.setConst(viscosityValue_s$ID$)\n\ applyViscosity(flags=flags_s$ID$, phi=phi_s$ID$, vel=vel_s$ID$, volumes=volumes_s$ID$, viscosity=viscosity_s$ID$)\n\ \n\ + #vel_s$ID$.updateToOmp()\n\ setWallBcs(flags=flags_s$ID$, vel=vel_s$ID$, obvel=None if using_fractions_s$ID$ else obvel_s$ID$, phiObs=phiObs_s$ID$, fractions=fractions_s$ID$)\n\ + #vel_s$ID$.updateFromOmp()\n\ + \n\ if using_guiding_s$ID$:\n\ mantaMsg('Guiding and pressure')\n\ PD_fluid_guiding(vel=vel_s$ID$, velT=velT_s$ID$, flags=flags_s$ID$, phi=phi_s$ID$, curv=curvature_s$ID$, surfTens=surfaceTension_s$ID$, fractions=fractions_s$ID$, weight=weightGuide_s$ID$, blurRadius=beta_sg$ID$, pressure=pressure_s$ID$, tau=tau_sg$ID$, sigma=sigma_sg$ID$, theta=theta_sg$ID$, zeroPressureFixing=domainClosed_s$ID$)\n\ else:\n\ - mantaMsg('Pressure')\n\ - solvePressure(flags=flags_s$ID$, vel=vel_s$ID$, pressure=pressure_s$ID$, curv=curvature_s$ID$, surfTens=surfaceTension_s$ID$, fractions=fractions_s$ID$, obvel=obvel_s$ID$ if using_fractions_s$ID$ else None, zeroPressureFixing=domainClosed_s$ID$)\n\ + print('Pressure')\n\ + # openmp sync to device\n\ + flags_s$ID$.updateToOmp()\n\ + vel_s$ID$.updateToOmp()\n\ + print('Pressure 2')\n\ + \n\ + #solvePressure(flags=flags_s$ID$, vel=vel_s$ID$, pressure=pressure_s$ID$, curv=curvature_s$ID$, surfTens=surfaceTension_s$ID$, fractions=fractions_s$ID$, obvel=obvel_s$ID$ if using_fractions_s$ID$ else None, zeroPressureFixing=domainClosed_s$ID$)\n\ + computePressureRhs(rhs=rhs_s$ID$, vel=vel_s$ID$, pressure=pressure_s$ID$, flags=flags_s$ID$, preconditioner=PcNone)\n\ + print('Pressure 21')\n\ + solvePressureSystem(rhs=rhs_s$ID$, vel=vel_s$ID$, pressure=pressure_s$ID$, flags=flags_s$ID$, useL2Norm=True, preconditioner=PcNone, residual=residual_s$ID$, search=search_s$ID$, A0=A0_s$ID$, Ai=Ai_s$ID$, Aj=Aj_s$ID$, Ak=Ak_s$ID$, tmp=tmp_s$ID$)\n\ + print('Pressure 22')\n\ + correctVelocity(vel=vel_s$ID$, pressure=pressure_s$ID$, flags=flags_s$ID$, preconditioner=PcNone)\n\ + \n\ + print('Pressure 3')\n\ + # openmp sync from device\n\ + pressure_s$ID$.updateFromOmp()\n\ + vel_s$ID$.updateFromOmp()\n\ \n\ extrapolateMACSimple(flags=flags_s$ID$, vel=vel_s$ID$, distance=4, intoObs=True if using_fractions_s$ID$ else False)\n\ + \n\ + #vel_s$ID$.updateToOmp()\n\ setWallBcs(flags=flags_s$ID$, vel=vel_s$ID$, obvel=None if using_fractions_s$ID$ else obvel_s$ID$, phiObs=phiObs_s$ID$, fractions=fractions_s$ID$)\n\ + #vel_s$ID$.updateFromOmp()\n\ \n\ if not using_fractions_s$ID$:\n\ extrapolateMACSimple(flags=flags_s$ID$, vel=vel_s$ID$)\n\ |