diff --git a/regressioncheck/NIG_DSMC/VirtualCellMerge/analyze.ini b/regressioncheck/NIG_DSMC/VirtualCellMerge/analyze.ini index 9b6217ca2..2cec5268c 100644 --- a/regressioncheck/NIG_DSMC/VirtualCellMerge/analyze.ini +++ b/regressioncheck/NIG_DSMC/VirtualCellMerge/analyze.ini @@ -2,6 +2,6 @@ h5diff_file = VirtualCellMerge_DSMCState_000.00000080000000000.h5 h5diff_reference_file = VirtualCellMerge_DSMCState_000.00000080000000000_ref.h5 h5diff_data_set = ElemData -h5diff_tolerance_value = 2e19 +h5diff_tolerance_value = 2.20e19 h5diff_tolerance_type = absolute h5diff_max_differences = 0 diff --git a/regressioncheck/NIG_DSMC/VirtualCellMerge/command_line.ini b/regressioncheck/NIG_DSMC/VirtualCellMerge/command_line.ini index b67a54f8e..61c705afb 100644 --- a/regressioncheck/NIG_DSMC/VirtualCellMerge/command_line.ini +++ b/regressioncheck/NIG_DSMC/VirtualCellMerge/command_line.ini @@ -1,3 +1,3 @@ -MPI=4 +MPI=1,2,4 restart_file = VirtualCellMerge_restart_State_000.00000040000000000.h5 cmd_suffix=DSMC.ini diff --git a/regressioncheck/NIG_DSMC/VirtualCellMerge/parameter.ini b/regressioncheck/NIG_DSMC/VirtualCellMerge/parameter.ini index 1570bf478..571644046 100644 --- a/regressioncheck/NIG_DSMC/VirtualCellMerge/parameter.ini +++ b/regressioncheck/NIG_DSMC/VirtualCellMerge/parameter.ini @@ -10,7 +10,15 @@ tend = 8.0e-7 Analyze_dt = 1E-2 ! time output -IterDisplayStep = 1000 +IterDisplayStep = 1 +! =============================================================================== ! +! Load Balance +! =============================================================================== ! +DoLoadBalance = F +PartWeightLoadBalance = F +DoInitialAutoRestart = T +InitialAutoRestart-PartWeightLoadBalance = T +LoadBalanceMaxSteps = 2 ! =============================================================================== ! ! DISCRETIZATION ! =============================================================================== ! @@ -82,9 +90,9 @@ Part-Species1-Init1-VeloIC = 0 Part-Species1-Init1-VeloVecIC = (/0.,0.,1./) Particles-NumberForDSMCOutputs = 1 -Part-TimeFracForSampling = 1 +Part-TimeFracForSampling = 0.99 Part-DoVirtualCellMerge = T Part-MinPartNumCellMerge = 1000 Part-CellMergeSpread = 3 -Part-MaxNumbCellsMerge = 500 \ No newline at end of file +Part-MaxNumbCellsMerge = 500 diff --git a/src/particles/restart/particle_restart.f90 b/src/particles/restart/particle_restart.f90 index 5178f875e..d607ddd4f 100644 --- a/src/particles/restart/particle_restart.f90 +++ b/src/particles/restart/particle_restart.f90 @@ -62,9 +62,10 @@ SUBROUTINE ParticleRestart() ! Particles USE MOD_HDF5_Input_Particles ,ONLY: ReadEmissionVariablesFromHDF5 USE MOD_Part_Operations ,ONLY: RemoveAllElectrons -USE MOD_Part_Tools ,ONLY: UpdateNextFreePosition,StoreLostParticleProperties +USE MOD_Part_Tools ,ONLY: UpdateNextFreePosition,StoreLostParticleProperties, MergeCells USE MOD_Particle_Boundary_Vars ,ONLY: PartBound USE MOD_Particle_Vars ,ONLY: PartInt,PartData,PartState,PartSpecies,PEM,PDM,usevMPF,PartMPF,PartPosRef,SpecReset,Species +USE MOD_Particle_Vars ,ONLY: DoVirtualCellMerge ! Restart USE MOD_Restart_Vars ,ONLY: DoMacroscopicRestart ! HDG @@ -808,6 +809,8 @@ SUBROUTINE ParticleRestart() ! ------------------------------------------------ CALL ReadEmissionVariablesFromHDF5() +IF (DoVirtualCellMerge) CALL MergeCells() + #if USE_HDG ! Create electrons from BR fluid properties IF(BRConvertFluidToElectrons) CALL CreateElectronsFromBRFluid(.TRUE.) diff --git a/src/timedisc/timedisc_TimeStep_BGK.f90 b/src/timedisc/timedisc_TimeStep_BGK.f90 index f4627d453..ee9f909f7 100644 --- a/src/timedisc/timedisc_TimeStep_BGK.f90 +++ b/src/timedisc/timedisc_TimeStep_BGK.f90 @@ -38,9 +38,9 @@ SUBROUTINE TimeStep_BGK() USE MOD_Globals ,ONLY: abort, CROSS USE MOD_Particle_Vars ,ONLY: PartState, LastPartPos, PDM, PEM, DoSurfaceFlux, WriteMacroVolumeValues USE MOD_Particle_Vars ,ONLY: UseRotRefFrame, RotRefFrameOmega -USE MOD_Particle_Vars ,ONLY: VarTimeStep, Symmetry, DoVirtualCellMerge +USE MOD_Particle_Vars ,ONLY: VarTimeStep, Symmetry USE MOD_DSMC_Vars ,ONLY: DSMC, CollisMode -USE MOD_part_tools ,ONLY: UpdateNextFreePosition, MergeCells +USE MOD_part_tools ,ONLY: UpdateNextFreePosition USE MOD_part_emission ,ONLY: ParticleInserting USE MOD_Particle_SurfFlux ,ONLY: ParticleSurfaceflux USE MOD_Particle_Tracking ,ONLY: PerformTracking @@ -48,7 +48,6 @@ SUBROUTINE TimeStep_BGK() USE MOD_Eval_xyz ,ONLY: GetPositionInRefElem USE MOD_part_RHS ,ONLY: CalcPartRHSRotRefFrame USE MOD_Part_Tools ,ONLY: InRotRefFrameCheck -USE MOD_Restart_Vars ,ONLY: DoRestart #if USE_MPI USE MOD_Particle_MPI ,ONLY: IRecvNbOfParticles, MPIParticleSend,MPIParticleRecv,SendNbOfparticles USE MOD_Particle_MPI_Vars ,ONLY: DoParticleLatencyHiding @@ -71,9 +70,7 @@ SUBROUTINE TimeStep_BGK() #ifdef EXTRAE CALL extrae_eventandcounters(int(9000001), int8(5)) #endif /*EXTRAE*/ -IF (DoVirtualCellMerge) THEN - IF ((iter.EQ.0).AND.DoRestart) CALL MergeCells() -END IF + IF (DoSurfaceFlux) THEN CALL ParticleSurfaceflux() END IF diff --git a/src/timedisc/timedisc_TimeStep_DSMC.f90 b/src/timedisc/timedisc_TimeStep_DSMC.f90 index 8baa8381a..561a77f1e 100644 --- a/src/timedisc/timedisc_TimeStep_DSMC.f90 +++ b/src/timedisc/timedisc_TimeStep_DSMC.f90 @@ -38,11 +38,11 @@ SUBROUTINE TimeStep_DSMC() USE MOD_Globals ,ONLY: abort, CROSS USE MOD_Particle_Vars ,ONLY: PartState, LastPartPos, PDM, PEM, DoSurfaceFlux, WriteMacroVolumeValues USE MOD_Particle_Vars ,ONLY: UseRotRefFrame, RotRefFrameOmega -USE MOD_Particle_Vars ,ONLY: WriteMacroSurfaceValues, Symmetry, VarTimeStep, Species, PartSpecies, DoVirtualCellMerge +USE MOD_Particle_Vars ,ONLY: WriteMacroSurfaceValues, Symmetry, VarTimeStep, Species, PartSpecies USE MOD_Particle_Vars ,ONLY: UseSplitAndMerge USE MOD_DSMC_Vars ,ONLY: DSMC, CollisMode, AmbipolElecVelo USE MOD_DSMC ,ONLY: DSMC_main -USE MOD_part_tools ,ONLY: UpdateNextFreePosition, MergeCells +USE MOD_part_tools ,ONLY: UpdateNextFreePosition USE MOD_part_emission ,ONLY: ParticleInserting USE MOD_Particle_SurfFlux ,ONLY: ParticleSurfaceflux USE MOD_Particle_Tracking_vars ,ONLY: tTracking,MeasureTrackTime @@ -78,11 +78,6 @@ SUBROUTINE TimeStep_DSMC() CALL LBStartTime(tLBStart) #endif /*USE_LOADBALANCE*/ - -IF (DoVirtualCellMerge) THEN - IF ((iter.EQ.0).AND.DoRestart) CALL MergeCells() -END IF - IF (DoSurfaceFlux) THEN #if USE_LOADBALANCE CALL LBPauseTime(LB_SURF,tLBStart) diff --git a/src/timedisc/timedisc_TimeStep_FPFlow.f90 b/src/timedisc/timedisc_TimeStep_FPFlow.f90 index 7be7e45c6..623223886 100644 --- a/src/timedisc/timedisc_TimeStep_FPFlow.f90 +++ b/src/timedisc/timedisc_TimeStep_FPFlow.f90 @@ -37,9 +37,9 @@ SUBROUTINE TimeStep_FPFlow() USE MOD_TimeDisc_Vars ,ONLY: dt, IterDisplayStep, iter, TEnd, Time USE MOD_Globals ,ONLY: abort USE MOD_Particle_Vars ,ONLY: PartState, LastPartPos, PDM, PEM, DoSurfaceFlux, WriteMacroVolumeValues -USE MOD_Particle_Vars ,ONLY: VarTimeStep, Symmetry, DoVirtualCellMerge +USE MOD_Particle_Vars ,ONLY: VarTimeStep, Symmetry USE MOD_DSMC_Vars ,ONLY: DSMC, CollisMode -USE MOD_part_tools ,ONLY: UpdateNextFreePosition, MergeCells +USE MOD_part_tools ,ONLY: UpdateNextFreePosition USE MOD_part_emission ,ONLY: ParticleInserting USE MOD_Particle_SurfFlux ,ONLY: ParticleSurfaceflux USE MOD_Particle_Tracking ,ONLY: PerformTracking @@ -62,9 +62,6 @@ SUBROUTINE TimeStep_FPFlow() INTEGER :: iPart REAL :: RandVal, dtVar, NewYPart, NewYVelo !=================================================================================================================================== -IF (DoVirtualCellMerge) THEN - IF ((iter.EQ.0).AND.DoRestart) CALL MergeCells() -END IF IF (DoSurfaceFlux) THEN CALL ParticleSurfaceflux() END IF