Skip to content

Commit

Permalink
Merge branch '239-initial-auto-load-balance-deletes-the-original-rest…
Browse files Browse the repository at this point in the history
…art-file' into 'master.dev'

[239-initial-auto-load-balance-deletes-the-original-restart-file] Resolve "Initial auto load balance deletes the original restart file"

Closes #239

See merge request piclas/piclas!977
  • Loading branch information
pnizenkov committed Nov 5, 2024
2 parents 07fd244 + 121711b commit 66f936c
Show file tree
Hide file tree
Showing 8 changed files with 70 additions and 45 deletions.
29 changes: 18 additions & 11 deletions src/io_hdf5/hdf5_output.f90
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,6 @@ SUBROUTINE WriteTimeAverage(MeshFileName,OutputTime,PreviousTime,VarNamesAvg,Var
! MODULES
USE MOD_PreProc
USE MOD_Globals
USE MOD_Globals_Vars ,ONLY: ProjectName
USE MOD_Mesh_Vars ,ONLY: offsetElem,nGlobalElems,nElems
! IMPLICIT VARIABLE HANDLING
IMPLICIT NONE
Expand Down Expand Up @@ -115,9 +114,8 @@ SUBROUTINE WriteTimeAverage(MeshFileName,OutputTime,PreviousTime,VarNamesAvg,Var
! Write timeaverages ---------------------------------------------------------------------------------------------------------------
IF(nVar_Avg.GT.0)THEN
! Generate skeleton for the file with all relevant data on a single proc (MPIRoot)
FileName=TRIM(TIMESTAMP(TRIM(ProjectName)//'_TimeAvg',OutputTime))//'.h5'
CALL GenerateFileSkeleton('TimeAvg',nVar_Avg,VarNamesAvg,MeshFileName,OutputTime,FileNameOut=FileName)
IF(MPIRoot)THEN
CALL GenerateFileSkeleton('TimeAvg',nVar_Avg,VarNamesAvg,MeshFileName,OutputTime)
CALL OpenDataFile(FileName,create=.FALSE.,single=.TRUE.,readOnly=.FALSE.)
CALL WriteAttributeToHDF5(File_ID,'AvgTime',1,RealScalar=dtAvg)
CALL CloseDataFile()
Expand Down Expand Up @@ -145,9 +143,8 @@ SUBROUTINE WriteTimeAverage(MeshFileName,OutputTime,PreviousTime,VarNamesAvg,Var

! Write fluctuations ---------------------------------------------------------------------------------------------------------------
IF(nVar_Fluc.GT.0)THEN
FileName=TRIM(TIMESTAMP(TRIM(ProjectName)//'_Fluc',OutputTime))//'.h5'
CALL GenerateFileSkeleton('Fluc',nVar_Fluc,VarNamesFluc,MeshFileName,OutputTime,FileNameOut=FileName)
IF(MPIRoot)THEN
CALL GenerateFileSkeleton('Fluc',nVar_Fluc,VarNamesFluc,MeshFileName,OutputTime)
CALL OpenDataFile(FileName,create=.FALSE.,single=.TRUE.,readOnly=.FALSE.)
CALL WriteAttributeToHDF5(File_ID,'AvgTime',1,RealScalar=dtAvg)
CALL CloseDataFile()
Expand Down Expand Up @@ -180,7 +177,7 @@ SUBROUTINE WriteTimeAverage(MeshFileName,OutputTime,PreviousTime,VarNamesAvg,Var
END SUBROUTINE WriteTimeAverage


SUBROUTINE GenerateFileSkeleton(TypeString,nVar,StrVarNames,MeshFileName,OutputTime,FileNameIn,WriteUserblockIn,NIn,NodeType_in)
SUBROUTINE GenerateFileSkeleton(TypeString,nVar,StrVarNames,MeshFileName,OutputTime,FileNameIn,WriteUserblockIn,NIn,NodeType_in,FileNameOut)
!===================================================================================================================================
! Subroutine that generates the output file on a single processor and writes all the necessary attributes (better MPI performance)
!===================================================================================================================================
Expand Down Expand Up @@ -214,6 +211,7 @@ SUBROUTINE GenerateFileSkeleton(TypeString,nVar,StrVarNames,MeshFileName,OutputT
REAL,INTENT(IN) :: OutputTime
LOGICAL,INTENT(IN),OPTIONAL :: WriteUserblockIn
CHARACTER(LEN=*),INTENT(IN),OPTIONAL :: NodeType_in !< Type of 1D points
CHARACTER(LEN=*),INTENT(OUT),OPTIONAL:: FileNameOut
!-----------------------------------------------------------------------------------------------------------------------------------
! OUTPUT VARIABLES
!-----------------------------------------------------------------------------------------------------------------------------------
Expand All @@ -227,18 +225,25 @@ SUBROUTINE GenerateFileSkeleton(TypeString,nVar,StrVarNames,MeshFileName,OutputT
LOGICAL :: WriteUserblock
INTEGER :: Nloc
!===================================================================================================================================
! Create filename
IF(PRESENT(FileNameIn))THEN
FileName=FileNameIn
ELSE
FileName=TRIM(TIMESTAMP(TRIM(ProjectName)//'_'//TRIM(TypeString),OutputTime))//'.h5'
END IF ! PRESENT(FileNameIn)
IF(.NOT.MPIRoot) THEN
IF(PRESENT(FileNameOut)) FileNameOut = FileName
RETURN
END IF

! Check if NIn is to be used
IF(PRESENT(NIn))THEN
Nloc = NIn
ELSE
Nloc = PP_N
END IF ! PRESENT(NIn)

! Create file
IF(PRESENT(FileNameIn))THEN
FileName=FileNameIn
ELSE
FileName=TRIM(TIMESTAMP(TRIM(ProjectName)//'_'//TRIM(TypeString),OutputTime))//'.h5'
END IF ! PRESENT(FileNameIn)
CALL OpenDataFile(TRIM(FileName),create=.TRUE.,single=.TRUE.,readOnly=.FALSE.,userblockSize=userblock_total_len)

! Write file header
Expand Down Expand Up @@ -288,6 +293,8 @@ SUBROUTINE GenerateFileSkeleton(TypeString,nVar,StrVarNames,MeshFileName,OutputT
END IF ! PRESENT(WriteUserblockIn)
IF(WriteUserblock) CALL copy_userblock(TRIM(FileName)//C_NULL_CHAR,TRIM(UserblockTmpFile)//C_NULL_CHAR)

IF(PRESENT(FileNameOut)) FileNameOut = FileName

END SUBROUTINE GenerateFileSkeleton


Expand Down
4 changes: 2 additions & 2 deletions src/io_hdf5/hdf5_output_elemdata.f90
Original file line number Diff line number Diff line change
Expand Up @@ -168,7 +168,7 @@ SUBROUTINE WriteMyInvisibleRankToHDF5()
StrVarNames(1)='dummy'
! Generate skeleton for the file with all relevant data on a single proc (MPIRoot)
FileName=TRIM(ProjectName)//'_MyInvisibleRank.h5'
IF(MPIRoot) CALL GenerateFileSkeleton('MyInvisibleRank',N_variables,StrVarNames,TRIM(MeshFile),OutputTime,FileNameIn=FileName)
CALL GenerateFileSkeleton('MyInvisibleRank',N_variables,StrVarNames,TRIM(MeshFile),OutputTime,FileNameIn=FileName)
#if USE_MPI
CALL MPI_BARRIER(MPI_COMM_PICLAS,iError)
#endif
Expand Down Expand Up @@ -213,7 +213,7 @@ SUBROUTINE WriteLostRotPeriodicSidesToHDF5()
StrVarNames(1)='dummy'
! Generate skeleton for the file with all relevant data on a single proc (MPIRoot)
FileName=TRIM(ProjectName)//'_LostRotPeriodicSides.h5'
IF(MPIRoot) CALL GenerateFileSkeleton('LostRotPeriodicSides',N_variables,StrVarNames,TRIM(MeshFile),OutputTime,FileNameIn=FileName)
CALL GenerateFileSkeleton('LostRotPeriodicSides',N_variables,StrVarNames,TRIM(MeshFile),OutputTime,FileNameIn=FileName)
#if USE_MPI
CALL MPI_BARRIER(MPI_COMM_PICLAS,iError)
#endif
Expand Down
11 changes: 3 additions & 8 deletions src/io_hdf5/hdf5_output_field.f90
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,6 @@ SUBROUTINE WriteDielectricGlobalToHDF5()
USE MOD_Dielectric_Vars ,ONLY: DielectricGlobal,DielectricEps
USE MOD_Dielectric_Vars ,ONLY: DielectricMu,isDielectricElem,ElemToDielectric
USE MOD_Mesh_Vars ,ONLY: MeshFile,nGlobalElems,offsetElem
USE MOD_Globals_Vars ,ONLY: ProjectName
USE MOD_io_HDF5
#if USE_LOADBALANCE
USE MOD_LoadBalance_Vars,ONLY: PerformLoadBalance
Expand Down Expand Up @@ -93,8 +92,7 @@ SUBROUTINE WriteDielectricGlobalToHDF5()
GETTIME(StartT)
OutputTime=0.0
! Generate skeleton for the file with all relevant data on a single proc (MPIRoot)
FileName=TRIM(TIMESTAMP(TRIM(ProjectName)//'_DielectricGlobal',OutputTime))//'.h5'
IF(MPIRoot) CALL GenerateFileSkeleton('DielectricGlobal',N_variables,StrVarNames,TRIM(MeshFile),OutputTime)
CALL GenerateFileSkeleton('DielectricGlobal',N_variables,StrVarNames,TRIM(MeshFile),OutputTime,FileNameOut=FileName)
#if USE_MPI
CALL MPI_BARRIER(MPI_COMM_PICLAS,iError)
#endif
Expand Down Expand Up @@ -172,8 +170,7 @@ SUBROUTINE WriteBRAverageElemToHDF5(isBRAverageElem)
GETTIME(StartT)
OutputTime=0.0
! Generate skeleton for the file with all relevant data on a single proc (MPIRoot)
FileName=TRIM(TIMESTAMP(TRIM(ProjectName)//'_BRAverageElem',OutputTime))//'.h5'
IF(MPIRoot) CALL GenerateFileSkeleton('BRAverageElem',N_variables,StrVarNames,TRIM(MeshFile),OutputTime)
CALL GenerateFileSkeleton('BRAverageElem',N_variables,StrVarNames,TRIM(MeshFile),OutputTime,FileNameOut=FileName)
#if USE_MPI
CALL MPI_BARRIER(MPI_COMM_PICLAS,iError)
#endif
Expand Down Expand Up @@ -211,7 +208,6 @@ SUBROUTINE WritePMLzetaGlobalToHDF5()
USE MOD_PreProc
USE MOD_PML_Vars ,ONLY: PMLzetaGlobal,PMLzeta0,PMLzeta,isPMLElem,ElemToPML
USE MOD_Mesh_Vars ,ONLY: MeshFile,nGlobalElems,offsetElem
USE MOD_Globals_Vars ,ONLY: ProjectName
USE MOD_io_HDF5
#if USE_LOADBALANCE
USE MOD_LoadBalance_Vars ,ONLY: PerformLoadBalance
Expand Down Expand Up @@ -255,8 +251,7 @@ SUBROUTINE WritePMLzetaGlobalToHDF5()
GETTIME(StartT)
OutputTime=0.0
! Generate skeleton for the file with all relevant data on a single proc (MPIRoot)
FileName=TRIM(TIMESTAMP(TRIM(ProjectName)//'_PMLZetaGlobal',OutputTime))//'.h5'
IF(MPIRoot) CALL GenerateFileSkeleton('PMLZetaGlobal',N_variables,StrVarNames,TRIM(MeshFile),OutputTime)
CALL GenerateFileSkeleton('PMLZetaGlobal',N_variables,StrVarNames,TRIM(MeshFile),OutputTime,FileNameOut=FileName)
#if USE_MPI
CALL MPI_BARRIER(MPI_COMM_PICLAS,iError)
#endif
Expand Down
22 changes: 9 additions & 13 deletions src/io_hdf5/hdf5_output_particle.f90
Original file line number Diff line number Diff line change
Expand Up @@ -179,8 +179,7 @@ SUBROUTINE WriteNodeSourceExtToHDF5(OutputTime)
ELSE
! Generate skeleton for the file with all relevant data on a single processor (MPIRoot)
! Write field to separate file for debugging purposes
FileName=TRIM(TIMESTAMP(TRIM(ProjectName)//'_NodeSourceExtGlobal',OutputTime))//'.h5'
IF(MPIRoot) CALL GenerateFileSkeleton('NodeSourceExtGlobal',N_variables,StrVarNames,TRIM(MeshFile),OutputTime)
CALL GenerateFileSkeleton('NodeSourceExtGlobal',N_variables,StrVarNames,TRIM(MeshFile),OutputTime,FileNameOut=FileName)
#if USE_MPI
CALL MPI_BARRIER(MPI_COMM_PICLAS,iError)
#endif
Expand Down Expand Up @@ -577,18 +576,17 @@ SUBROUTINE WriteBoundaryParticleToHDF5(MeshFileName,OutputTime,PreviousTime)
! set local variables for output and previous times
IF(PRESENT(PreviousTime))PreviousTime_loc = PreviousTime
! Generate skeleton for the file with all relevant data on a single proc (MPIRoot)
FileName=TRIM(TIMESTAMP(TRIM(ProjectName)//'_PartStateBoundary',OutputTime))//'.h5'

#if USE_HDG
#if PP_nVar==1
IF(MPIRoot) CALL GenerateFileSkeleton('PartStateBoundary',4,StrVarNames,MeshFileName,OutputTime)
CALL GenerateFileSkeleton('PartStateBoundary',4,StrVarNames,MeshFileName,OutputTime,FileNameOut=FileName)
#elif PP_nVar==3
IF(MPIRoot) CALL GenerateFileSkeleton('PartStateBoundary',3,StrVarNames,MeshFileName,OutputTime)
CALL GenerateFileSkeleton('PartStateBoundary',3,StrVarNames,MeshFileName,OutputTime,FileNameOut=FileName)
#else
IF(MPIRoot) CALL GenerateFileSkeleton('PartStateBoundary',7,StrVarNames,MeshFileName,OutputTime)
CALL GenerateFileSkeleton('PartStateBoundary',7,StrVarNames,MeshFileName,OutputTime,FileNameOut=FileName)
#endif
#else
IF(MPIRoot) CALL GenerateFileSkeleton('PartStateBoundary',PP_nVar,StrVarNames,MeshFileName,OutputTime)
CALL GenerateFileSkeleton('PartStateBoundary',PP_nVar,StrVarNames,MeshFileName,OutputTime,FileNameOut=FileName)
#endif /*USE_HDG*/
! generate nextfile info in previous output file
IF(PRESENT(PreviousTime))THEN
Expand Down Expand Up @@ -757,7 +755,6 @@ SUBROUTINE WriteLostParticlesToHDF5(MeshFileName,OutputTime)
USE MOD_PreProc
USE MOD_Globals
USE MOD_Mesh_Vars ,ONLY: nGlobalElems, offsetElem
USE MOD_Globals_Vars ,ONLY: ProjectName
USE MOD_Particle_Tracking_Vars ,ONLY: PartStateLost,PartLostDataSize,PartStateLostVecLength,NbrOfLostParticles
USE MOD_Particle_Tracking_Vars ,ONLY: TotalNbrOfMissingParticlesSum
USE MOD_Equation_Vars ,ONLY: StrVarNames
Expand All @@ -783,18 +780,17 @@ SUBROUTINE WriteLostParticlesToHDF5(MeshFileName,OutputTime)
INTEGER :: ALLOCSTAT
!===================================================================================================================================
! Generate skeleton for the file with all relevant data on a single proc (MPIRoot)
FileName=TRIM(TIMESTAMP(TRIM(ProjectName)//'_PartStateLost',OutputTime))//'.h5'

#if USE_HDG
#if PP_nVar==1
IF(MPIRoot) CALL GenerateFileSkeleton('PartStateLost',4,StrVarNames,MeshFileName,OutputTime)
CALL GenerateFileSkeleton('PartStateLost',4,StrVarNames,MeshFileName,OutputTime,FileNameOut=FileName)
#elif PP_nVar==3
IF(MPIRoot) CALL GenerateFileSkeleton('PartStateLost',3,StrVarNames,MeshFileName,OutputTime)
CALL GenerateFileSkeleton('PartStateLost',3,StrVarNames,MeshFileName,OutputTime,FileNameOut=FileName)
#else
IF(MPIRoot) CALL GenerateFileSkeleton('PartStateLost',7,StrVarNames,MeshFileName,OutputTime)
CALL GenerateFileSkeleton('PartStateLost',7,StrVarNames,MeshFileName,OutputTime,FileNameOut=FileName)
#endif
#else
IF(MPIRoot) CALL GenerateFileSkeleton('PartStateLost',PP_nVar,StrVarNames,MeshFileName,OutputTime)
CALL GenerateFileSkeleton('PartStateLost',PP_nVar,StrVarNames,MeshFileName,OutputTime,FileNameOut=FileName)
#endif /*USE_HDG*/

! Reopen file and write DG solution
Expand Down
41 changes: 32 additions & 9 deletions src/io_hdf5/hdf5_output_state.f90
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,8 @@ MODULE MOD_HDF5_Output_State

CONTAINS

SUBROUTINE WriteStateToHDF5(MeshFileName,OutputTime,PreviousTime)

SUBROUTINE WriteStateToHDF5(MeshFileName,OutputTime,PreviousTime,InitialAutoRestartIn)
!===================================================================================================================================
! Subroutine to write the solution U to HDF5 format
! Is used for postprocessing and for restart
Expand Down Expand Up @@ -120,6 +121,7 @@ SUBROUTINE WriteStateToHDF5(MeshFileName,OutputTime,PreviousTime)
CHARACTER(LEN=*),INTENT(IN) :: MeshFileName
REAL,INTENT(IN) :: OutputTime
REAL,INTENT(IN),OPTIONAL :: PreviousTime
LOGICAL,OPTIONAL :: InitialAutoRestartIn
!-----------------------------------------------------------------------------------------------------------------------------------
! OUTPUT VARIABLES
!-----------------------------------------------------------------------------------------------------------------------------------
Expand Down Expand Up @@ -156,7 +158,7 @@ SUBROUTINE WriteStateToHDF5(MeshFileName,OutputTime,PreviousTime)
REAL :: OutputTime_loc
REAL :: PreviousTime_loc
INTEGER(KIND=IK) :: PP_nVarTmp
LOGICAL :: usePreviousTime_loc
LOGICAL :: usePreviousTime_loc, InitialAutoRestart
#if USE_HDG
INTEGER :: iSide
INTEGER :: iGlobSide
Expand Down Expand Up @@ -188,6 +190,12 @@ SUBROUTINE WriteStateToHDF5(MeshFileName,OutputTime,PreviousTime)
IF(PRESENT(PreviousTime))PreviousTime_loc = PreviousTime
END IF

IF(PRESENT(InitialAutoRestartIn)) THEN
InitialAutoRestart = InitialAutoRestartIn
ELSE
InitialAutoRestart = .FALSE.
END IF

#ifdef PARTICLES
! Output lost particles if 1. lost during simulation : NbrOfNewLostParticlesTotal > 0
! 2. went missing during restart: TotalNbrOfMissingParticlesSum > 0
Expand All @@ -212,20 +220,35 @@ SUBROUTINE WriteStateToHDF5(MeshFileName,OutputTime,PreviousTime)
GETTIME(StartT)

! Generate skeleton for the file with all relevant data on a single proc (MPIRoot)
FileName=TRIM(TIMESTAMP(TRIM(ProjectName)//'_State',OutputTime_loc))//'.h5'
SWRITE(UNIT_stdOut,'(a)',ADVANCE='NO') '['//TRIM(FileName)//'] ...'
RestartFile=Filename
IF(InitialAutoRestart) THEN
FileName=TRIM(TIMESTAMP(TRIM(ProjectName)//'_State',OutputTime_loc))//'_InitalRestart.h5'
#if USE_HDG
#if PP_nVar==1
CALL GenerateFileSkeleton('State',4,StrVarNames,MeshFileName,OutputTime_loc,FileNameIn=FileName)
#elif PP_nVar==3
CALL GenerateFileSkeleton('State',3,StrVarNames,MeshFileName,OutputTime_loc,FileNameIn=FileName)
#else
CALL GenerateFileSkeleton('State',7,StrVarNames,MeshFileName,OutputTime_loc,FileNameIn=FileName)
#endif
#else
CALL GenerateFileSkeleton('State',PP_nVar,StrVarNames,MeshFileName,OutputTime_loc,FileNameIn=FileName)
#endif /*USE_HDG*/
ELSE
#if USE_HDG
#if PP_nVar==1
IF(MPIRoot) CALL GenerateFileSkeleton('State',4,StrVarNames,MeshFileName,OutputTime_loc)
CALL GenerateFileSkeleton('State',4,StrVarNames,MeshFileName,OutputTime_loc,FileNameOut=FileName)
#elif PP_nVar==3
IF(MPIRoot) CALL GenerateFileSkeleton('State',3,StrVarNames,MeshFileName,OutputTime_loc)
CALL GenerateFileSkeleton('State',3,StrVarNames,MeshFileName,OutputTime_loc,FileNameOut=FileName)
#else
IF(MPIRoot) CALL GenerateFileSkeleton('State',7,StrVarNames,MeshFileName,OutputTime_loc)
CALL GenerateFileSkeleton('State',7,StrVarNames,MeshFileName,OutputTime_loc,FileNameOut=FileName)
#endif
#else
IF(MPIRoot) CALL GenerateFileSkeleton('State',PP_nVar,StrVarNames,MeshFileName,OutputTime_loc)
CALL GenerateFileSkeleton('State',PP_nVar,StrVarNames,MeshFileName,OutputTime_loc,FileNameOut=FileName)
#endif /*USE_HDG*/
END IF

SWRITE(UNIT_stdOut,'(a)',ADVANCE='NO') '['//TRIM(FileName)//'] ...'
RestartFile=Filename
! generate nextfile info in previous output file
usePreviousTime_loc=.FALSE.

Expand Down
2 changes: 1 addition & 1 deletion src/posti/dmd/dmd_main.f90
Original file line number Diff line number Diff line change
Expand Up @@ -563,7 +563,7 @@ SUBROUTINE WriteDmdStateFile()
ALLOCATE(StrVarNames(1:N_variables))
StrVarNames(N_variables)='DUMMY_DO_NOT_VISUALIZE'
!StrVarNames(1)='dummy'
IF(MPIRoot) CALL GenerateFileSkeleton('DMD',N_variables,StrVarNames,TRIM(MeshFile),Time_State,FileNameIn=TRIM(FileName),&
CALL GenerateFileSkeleton('DMD',N_variables,StrVarNames,TRIM(MeshFile),Time_State,FileNameIn=TRIM(FileName),&
WriteUserblockIn = .FALSE.)
#if USE_MPI
CALL MPI_BARRIER(MPI_COMM_PICLAS,iError)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -301,7 +301,7 @@ SUBROUTINE WritePhotonVolSampleToHDF5()

! Generate skeleton for the file with all relevant data on a single proc (MPIRoot)
! Write file after last abort to prevent a corrupt output file (which might be used when restarting the simulation)
IF(MPIRoot) CALL GenerateFileSkeleton('RadiationVolState',nVarRay,StrVarNames,TRIM(MeshFile),0.,FileNameIn=RadiationVolState,NIn=Ray%NMax,NodeType_in=Ray%NodeType)
CALL GenerateFileSkeleton('RadiationVolState',nVarRay,StrVarNames,TRIM(MeshFile),0.,FileNameIn=RadiationVolState,NIn=Ray%NMax,NodeType_in=Ray%NodeType)
#if USE_MPI
CALL MPI_BARRIER(MPI_COMM_PICLAS,iError)
#endif
Expand Down
4 changes: 4 additions & 0 deletions src/timedisc/timedisc.f90
Original file line number Diff line number Diff line change
Expand Up @@ -436,7 +436,11 @@ SUBROUTINE TimeDisc()
CALL FillParticleData() ! Fill the SFC-ordered particle arrays for LB or I/O
#endif /*defined(PARTICLES)*/
! Write state to file
#if USE_LOADBALANCE
CALL WriteStateToHDF5(TRIM(MeshFile),time,tPreviousAnalyze,ForceInitialLoadBalance)
#else
CALL WriteStateToHDF5(TRIM(MeshFile),time,tPreviousAnalyze)
#endif
IF(doCalcTimeAverage) CALL CalcTimeAverage(.TRUE.,dt,time,tPreviousAverageAnalyze)
! Write recordpoints data to hdf5
IF(RP_onProc) CALL WriteRPtoHDF5(tAnalyze,.TRUE.)
Expand Down

0 comments on commit 66f936c

Please sign in to comment.