Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
109 commits
Select commit Hold shift + click to select a range
6abf8e8
Modified moving window
May 8, 2020
9381c45
SendRecv for all field components in one go
usinhampik May 8, 2020
e1cb65a
modified all_comp_field_bc()
usinhampik May 26, 2020
82bfc4c
reorganized moving window
usinhampik May 28, 2020
49f733b
fixed bugs in boundary.F90 and window.F90
usinhampik Jun 5, 2020
ffe0357
re-introduced window_shift_cell > ng - 1
usinhampik Jun 7, 2020
a860834
Merge branch 'ujjwal/new_moving_window' of ssh://gitlab.version.fz-ju…
usinhampik Jun 7, 2020
7bd3ce6
testing for window_shift_cells > 0
usinhampik Jul 14, 2020
5ecae0e
fixed bug in moving_window_field_bc
usinhampik Jul 14, 2020
5db10a0
back to window_shift_cells > ng - 1
usinhampik Jul 14, 2020
916688b
window_shift_cells > 1
usinhampik Jul 14, 2020
984b532
introduced do loop for insert particles in window.f90
usinhampik Jul 15, 2020
366b385
back to window_shift_cells > ng - 1
usinhampik Jul 15, 2020
462ccb9
Shifting window in chuncks of size ng
usinhampik Jul 20, 2020
6b327a6
minor bug fix
usinhampik Jul 20, 2020
5434759
Improved copy-in/out of MPI buffers
usinhampik Jul 20, 2020
d4bc4f0
introduced do loop with jumps of ng in moving window
usinhampik Jul 24, 2020
2303e00
corrected for nremainder in window.F90 and offset in boundary.F90
usinhampik Jul 27, 2020
b2315ae
Attempt to align moving_window with I/O
dbroemmel Jul 30, 2020
d44496e
Fixing circular module dependency
dbroemmel Aug 4, 2020
9a8f2ab
Simpler fix for circular dependencies
dbroemmel Aug 4, 2020
92d1eea
Incorporated changes in moving window of epoch3d
usinhampik Sep 24, 2020
b92633a
Update README.md
usinhampik Oct 7, 2020
ff74d94
Update README.md
usinhampik Oct 7, 2020
061a246
back to non-aligned I/O for moving window
usinhampik Oct 12, 2020
297c021
Merge branch 'ujjwal/new_moving_window' of ssh://gitlab.version.fz-ju…
usinhampik Oct 12, 2020
bc377ad
remove_particles not needed in moving_window
usinhampik Oct 13, 2020
bf85928
Commented remove_particles_() moving window for epoch3d
Oct 22, 2020
f78a0cd
Aligning moving window with I/O
usinhampik Oct 29, 2020
aab0e87
Aligning moving window with I/O and checkpoints
usinhampik Oct 30, 2020
1f9d6c8
Aligned moving window I/O with checkpoints
usinhampik Nov 9, 2020
0597bec
Bugfix for aligned I/O with checkpoints
usinhampik Nov 9, 2020
8482eaf
Cleaned version: Aligned moving window with I/O
usinhampik Nov 9, 2020
fd00fc1
Aligned moving window with I/O in epoch3d
usinhampik Nov 13, 2020
60df12d
Cleaned dependencies
usinhampik Nov 13, 2020
1cd1cd8
Initial steps towards current vectorization
usinhampik Nov 29, 2020
c57d919
Fixing incides in jxh, jyh, jzh
usinhampik Nov 29, 2020
4962a1d
Added the deck_io_block dependency in Makefile
usinhampik Dec 30, 2020
18267b4
Fix for moving window 3D and ADJUSTL()
usinhampik Jan 4, 2021
6f9163a
Minor fix in strings.f90
usinhampik Jan 5, 2021
a8bc20f
Update .gitmodules
dbroemmel Feb 5, 2021
0d4894f
First step towards particle sorting, and vec. pusher and current
usinhampik Mar 5, 2021
fd3f388
Added modified f0
usinhampik Mar 5, 2021
a5fb378
Minor typo
usinhampik Mar 5, 2021
3c1cdb8
First attempt to current vectorization
usinhampik Mar 10, 2021
2136995
Correction in mem. alloc
usinhampik Mar 10, 2021
fc10d3f
Adjusting the cell range from static to dynamic
usinhampik Mar 10, 2021
28c7a7b
Falling back to basic push_particles
usinhampik Mar 24, 2021
40982f1
Update to EPOCH coding style
usinhampik Sep 3, 2021
dbd5164
Removed dummy routine
usinhampik Sep 3, 2021
1043e61
Update epoch3d to EPOCH coding style
usinhampik Sep 3, 2021
c02dcfd
Removed Score-P instrumentation
usinhampik Sep 3, 2021
617373a
Modified moving window
May 8, 2020
481a0ce
SendRecv for all field components in one go
usinhampik May 8, 2020
1a13a25
modified all_comp_field_bc()
usinhampik May 26, 2020
a352db6
reorganized moving window
usinhampik May 28, 2020
386777e
re-introduced window_shift_cell > ng - 1
usinhampik Jun 7, 2020
45cb080
fixed bugs in boundary.F90 and window.F90
usinhampik Jun 5, 2020
fa7a6ea
testing for window_shift_cells > 0
usinhampik Jul 14, 2020
b986357
fixed bug in moving_window_field_bc
usinhampik Jul 14, 2020
ebabdf4
back to window_shift_cells > ng - 1
usinhampik Jul 14, 2020
58f0802
window_shift_cells > 1
usinhampik Jul 14, 2020
eef8a44
introduced do loop for insert particles in window.f90
usinhampik Jul 15, 2020
f0578da
back to window_shift_cells > ng - 1
usinhampik Jul 15, 2020
20c5eaa
Shifting window in chuncks of size ng
usinhampik Jul 20, 2020
e21c4fd
minor bug fix
usinhampik Jul 20, 2020
17c0346
Improved copy-in/out of MPI buffers
usinhampik Jul 20, 2020
1501900
introduced do loop with jumps of ng in moving window
usinhampik Jul 24, 2020
6cb1de6
corrected for nremainder in window.F90 and offset in boundary.F90
usinhampik Jul 27, 2020
f1c548a
Attempt to align moving_window with I/O
dbroemmel Jul 30, 2020
5f8923b
Fixing circular module dependency
dbroemmel Aug 4, 2020
318bcf6
Simpler fix for circular dependencies
dbroemmel Aug 4, 2020
ebdb08e
Incorporated changes in moving window of epoch3d
usinhampik Sep 24, 2020
617291e
back to non-aligned I/O for moving window
usinhampik Oct 12, 2020
f4503cd
Update README.md
usinhampik Oct 7, 2020
164db7e
Update README.md
usinhampik Oct 7, 2020
854efee
remove_particles not needed in moving_window
usinhampik Oct 13, 2020
64efe44
Commented remove_particles_() moving window for epoch3d
Oct 22, 2020
8ef744c
Aligning moving window with I/O
usinhampik Oct 29, 2020
e93053f
Aligning moving window with I/O and checkpoints
usinhampik Oct 30, 2020
72d9d99
Aligned moving window I/O with checkpoints
usinhampik Nov 9, 2020
a95fabc
Bugfix for aligned I/O with checkpoints
usinhampik Nov 9, 2020
07c7dd3
Cleaned version: Aligned moving window with I/O
usinhampik Nov 9, 2020
de10cee
Aligned moving window with I/O in epoch3d
usinhampik Nov 13, 2020
09bdada
Cleaned dependencies
usinhampik Nov 13, 2020
c974781
Initial steps towards current vectorization
usinhampik Nov 29, 2020
555207b
Fixing incides in jxh, jyh, jzh
usinhampik Nov 29, 2020
af92f6b
Added the deck_io_block dependency in Makefile
usinhampik Dec 30, 2020
6d1ecc8
First merge conflict resolved
usinhampik Sep 7, 2021
1fd08a3
Minor fix in strings.f90
usinhampik Jan 5, 2021
03a458d
Second merge conflict resolved
usinhampik Sep 7, 2021
e65db54
First step towards particle sorting, and vec. pusher and current
usinhampik Mar 5, 2021
1845a04
Added modified f0
usinhampik Mar 5, 2021
7a23418
Minor typo
usinhampik Mar 5, 2021
2458a65
First attempt to current vectorization
usinhampik Mar 10, 2021
426b5f1
Correction in mem. alloc
usinhampik Mar 10, 2021
6488258
Adjusting the cell range from static to dynamic
usinhampik Mar 10, 2021
b1dc5d2
Falling back to basic push_particles
usinhampik Mar 24, 2021
287ca9d
Update to EPOCH coding style
usinhampik Sep 3, 2021
752a5dd
Removed dummy routine
usinhampik Sep 3, 2021
65495d5
Update epoch3d to EPOCH coding style
usinhampik Sep 3, 2021
de8f6f0
Removed Score-P instrumentation
usinhampik Sep 3, 2021
fd336e1
Merge branch 'ujjwal/new_moving_window' of https://gitlab.jsc.fz-juel…
usinhampik Sep 7, 2021
bac9727
Update .gitmodules
usinhampik Sep 8, 2021
3f13d0a
Update CONTRIBUTORS.md
usinhampik Sep 8, 2021
a306be1
Acknowledgement of PRACE funding
usinhampik Sep 8, 2021
2c06cac
Update CONTRIBUTORS.md
usinhampik Sep 8, 2021
b2b7cbc
Update CONTRIBUTORS.md
usinhampik Sep 8, 2021
92dfb01
Update CONTRIBUTORS.md
usinhampik Sep 8, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions CONTRIBUTORS.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,3 +14,5 @@ Phil Tooley <phil.tooley@gmail.com>
Stephan Kuschel <stephan.kuschel@gmail.com>
Stuart Morris <sjm630@york.ac.uk>
Tom Goffrey <t.goffrey@warwick.ac.uk>
Ujjwal Sinha <u.sinha@fz-juelich.de> (Acknowledgement:
Contributions from Ujjwal Sinha was financially supported by the PRACE project funded in part by the EU’s Horizon 2020 Research and Innovation programme (2014-2020) under grant agreement 823767.)
16 changes: 16 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,19 @@
## EPOCH development

**This is not the official repository for the EPOCH code.**

This version of EPOCH is being developed within the project PiCKeX-
Particle Kinetic codes for Exascale plasma simulation, which is a
part of Work Package 8 (WP8) of PRACE-6IP. This repository has been
cloned to the Jülich Supercomputing Centre (JSC) GitLab server to
perform and publish this work. The main production version of EPOCH is
maintained by the University of Warwick. The development version found
here might not have the full functionality of the production version of
EPOCH, but includes a performance improved, refactored branch that will
be merged with the official version by the end of the project.

Current developments include improving the efficiency of the moving window book-keeping, reducing the number MPI calls for the field boundary conditions and the particle boundary conditions.

# *** PLEASE READ THIS NOTE ***

If you are obtaining this code from the github server *DO NOT* use the
Expand Down
6 changes: 3 additions & 3 deletions epoch2d/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -50,11 +50,11 @@ endif
# Intel
# =====
ifeq ($(strip $(COMPILER)),intel)
FFLAGS = -O3 -g -stand f03
FFLAGS = -O3 -g -stand f03 -qopenmp
ifeq ($(strip $(CONS)),1)
FLTCONS = -pc64 -fltconsistency
endif
#FFLAGS = -O3 -heap-arrays 64 -ipo -xHost # Optimised (B)
#FFLAGS = -O3 -heap-arrays 64 -qopt-report-phase=vec -qopt-report=5 -qopenmp # Optimised (B)
#FFLAGS = -O3 -heap-arrays 64 -ipo -xAVX # Optimised (W)
ifeq ($(strip $(MODE)),debug)
FFLAGS = -O0 -fpe0 -nothreads -traceback -fltconsistency \
Expand Down Expand Up @@ -554,4 +554,4 @@ tokenizer_blocks.o: tokenizer_blocks.f90 strings.o
utilities.o: utilities.f90 constants.o shared_data.o
version_data.o: version_data.F90 $(SRCDIR)/COMMIT
welcome.o: welcome.F90 shared_data.o terminal_controls.o version_data.o
window.o: window.F90 boundary.o evaluate.o partlist.o
window.o: window.F90 boundary.o evaluate.o partlist.o deck_io_block.o
227 changes: 221 additions & 6 deletions epoch2d/src/boundary.F90
Original file line number Diff line number Diff line change
Expand Up @@ -316,6 +316,218 @@ END SUBROUTINE do_field_mpi_with_lengths



SUBROUTINE all_comp_field_bc(fieldx, fieldy, fieldz, ng, nx_local, &
ny_local)


! | field_top |
!____________|____________________|____________
! | |
! field_left | | field_right
!____________|____________________|____________
! | |
! | field_bottom |

INTEGER, INTENT(IN) :: ng
REAL(num), DIMENSION(1-ng:,1-ng:), INTENT(INOUT) :: fieldx, fieldy, fieldz
INTEGER, INTENT(IN) :: nx_local, ny_local
INTEGER, DIMENSION(c_ndims) :: sizes, subsizes
INTEGER :: basetype, sz, szmax, i, j, k, n
REAL(num), ALLOCATABLE :: field(:)
REAL(num), ALLOCATABLE :: temp(:)
INTEGER :: xmin, xmax, ymin, ymax, offset

basetype = mpireal

sizes(1) = nx_local + 2 * ng
sizes(2) = ny_local + 2 * ng

szmax = 3 * sizes(1) * ng
sz = 3 * sizes(2) * ng
IF (sz > szmax) szmax = sz

ALLOCATE(temp(szmax))
ALLOCATE(field(szmax))

subsizes(1) = ng
subsizes(2) = sizes(2)

sz = 3 * subsizes(1) * subsizes(2)

! offset0 = 0
! offset1 = subsizes(1) * subsizes(2)
! offset2 = 2 * offset1

offset = subsizes(1) * subsizes(2)

xmin = 1
xmax = ng
ymin = 1-ng
ymax = subsizes(2)-ng

CALL load_field_boundaries_to_buffer(fieldx, field, &
xmin, xmax, ymin, ymax, 0*offset)
CALL load_field_boundaries_to_buffer(fieldy, field, &
xmin, xmax, ymin, ymax, offset)
CALL load_field_boundaries_to_buffer(fieldz, field, &
xmin, xmax, ymin, ymax, 2*offset)

CALL MPI_SENDRECV(field, sz, basetype, proc_x_min, &
tag, temp, sz, basetype, proc_x_max, tag, comm, status, errcode)

xmin = nx_local + 1
xmax = subsizes(1) + nx_local

IF (.NOT. x_max_boundary .OR. bc_field(c_bd_x_max)==c_bc_periodic) THEN

CALL unload_field_boundaries_from_buffer(fieldx, temp, &
xmin, xmax, ymin, ymax, 0*offset)
CALL unload_field_boundaries_from_buffer(fieldy, temp, &
xmin, xmax, ymin, ymax, offset)
CALL unload_field_boundaries_from_buffer(fieldz, temp, &
xmin, xmax, ymin, ymax, 2*offset)

END IF

xmin = nx_local - ng + 1
xmax = nx_local

CALL load_field_boundaries_to_buffer(fieldx, field, &
xmin, xmax, ymin, ymax, 0*offset)
CALL load_field_boundaries_to_buffer(fieldy, field, &
xmin, xmax, ymin, ymax, offset)
CALL load_field_boundaries_to_buffer(fieldz, field, &
xmin, xmax, ymin, ymax, 2*offset)

CALL MPI_SENDRECV(field, sz, basetype, proc_x_max, &
tag, temp, sz, basetype, proc_x_min, tag, comm, status, errcode)

xmin = 1-ng
xmax = subsizes(1)-ng

IF (.NOT. x_min_boundary .OR. bc_field(c_bd_x_min)==c_bc_periodic) THEN

CALL unload_field_boundaries_from_buffer(fieldx, temp, &
xmin, xmax, ymin, ymax, 0*offset)
CALL unload_field_boundaries_from_buffer(fieldy, temp, &
xmin, xmax, ymin, ymax, offset)
CALL unload_field_boundaries_from_buffer(fieldz, temp, &
xmin, xmax, ymin, ymax, 2*offset)

END IF

subsizes(1) = sizes(1)
subsizes(2) = ng
sz = 3 * subsizes(1) * subsizes(2)

! offset0 = 0
! offset1 = subsizes(1) * subsizes(2)
! offset2 = 2 * offset1

offset = subsizes(1) * subsizes(2)

xmin = 1 - ng
xmax = subsizes(1) - ng
ymin = ny_local - subsizes(2) + 1
ymax = ny_local

CALL load_field_boundaries_to_buffer(fieldx, field, &
xmin, xmax, ymin, ymax, 0*offset)
CALL load_field_boundaries_to_buffer(fieldy, field, &
xmin, xmax, ymin, ymax, offset)
CALL load_field_boundaries_to_buffer(fieldz, field, &
xmin, xmax, ymin, ymax, 2*offset)

CALL MPI_SENDRECV(field, sz, basetype, proc_y_max, &
tag, temp, sz, basetype, proc_y_min, tag, comm, status, errcode)

ymin = 1 - ng
ymax = subsizes(2) - ng

IF (.NOT. y_min_boundary .OR. bc_field(c_bd_y_min)==c_bc_periodic) THEN

CALL unload_field_boundaries_from_buffer(fieldx, temp, &
xmin, xmax, ymin, ymax, 0*offset)
CALL unload_field_boundaries_from_buffer(fieldy, temp, &
xmin, xmax, ymin, ymax, offset)
CALL unload_field_boundaries_from_buffer(fieldz, temp, &
xmin, xmax, ymin, ymax, 2*offset)

END IF

ymin = 1
ymax = subsizes(2)

CALL load_field_boundaries_to_buffer(fieldx, field, &
xmin, xmax, ymin, ymax, 0*offset)
CALL load_field_boundaries_to_buffer(fieldy, field, &
xmin, xmax, ymin, ymax, offset)
CALL load_field_boundaries_to_buffer(fieldz, field, &
xmin, xmax, ymin, ymax, 2*offset)

ymin = ny_local + 1
ymax = subsizes(2) + ny_local

CALL MPI_SENDRECV(field, sz, basetype, proc_y_min, &
tag, temp, sz, basetype, proc_y_max, tag, comm, status, errcode)

IF (.NOT. y_max_boundary .OR. bc_field(c_bd_y_max)==c_bc_periodic) THEN

CALL unload_field_boundaries_from_buffer(fieldx, temp, &
xmin, xmax, ymin, ymax, 0*offset)
CALL unload_field_boundaries_from_buffer(fieldy, temp, &
xmin, xmax, ymin, ymax, offset)
CALL unload_field_boundaries_from_buffer(fieldz, temp, &
xmin, xmax, ymin, ymax, 2*offset)

END IF


DEALLOCATE(field)
DEALLOCATE(temp)

END SUBROUTINE all_comp_field_bc



SUBROUTINE load_field_boundaries_to_buffer(field, buffer, &
xmin, xmax, ymin, ymax, offset)

INTEGER, INTENT(IN) :: xmin, xmax, ymin, ymax, offset
REAL(num), DIMENSION(1-ng:, 1-ng:), INTENT(INOUT) :: field
REAL(num), DIMENSION(:), INTENT(INOUT) :: buffer
INTEGER :: i, j, n

n = 1
DO j = ymin, ymax
DO i = xmin, xmax
buffer(n + offset) = field(i,j)
n = n + 1
END DO
END DO

END SUBROUTINE load_field_boundaries_to_buffer

SUBROUTINE unload_field_boundaries_from_buffer(field, buffer, &
xmin, xmax, ymin, ymax, offset)

INTEGER, INTENT(IN) :: xmin, xmax, ymin, ymax, offset
REAL(num), DIMENSION(1-ng:, 1-ng:), INTENT(INOUT) :: field
REAL(num), DIMENSION(:), INTENT(INOUT) :: buffer
INTEGER :: i, j, n

n = 1
DO j = ymin, ymax
DO i = xmin, xmax
field(i,j) = buffer(n + offset)
n = n + 1
END DO
END DO

END SUBROUTINE unload_field_boundaries_from_buffer



SUBROUTINE do_field_mpi_with_lengths_r4(field, ng, nx_local, ny_local)

INTEGER, INTENT(IN) :: ng
Expand Down Expand Up @@ -810,9 +1022,10 @@ SUBROUTINE efield_bcs
INTEGER :: i

! These are the MPI boundaries
CALL field_bc(ex, ng)
CALL field_bc(ey, ng)
CALL field_bc(ez, ng)
!CALL field_bc(ex, ng)
!CALL field_bc(ey, ng)
!CALL field_bc(ez, ng)
CALL all_comp_field_bc(ex, ey, ez, ng, nx, ny)

! Perfectly conducting boundaries
DO i = c_bd_x_min, c_bd_x_max, c_bd_x_max - c_bd_x_min
Expand Down Expand Up @@ -861,9 +1074,11 @@ SUBROUTINE bfield_bcs(mpi_only)
INTEGER :: i

! These are the MPI boundaries
CALL field_bc(bx, ng)
CALL field_bc(by, ng)
CALL field_bc(bz, ng)
!CALL field_bc(bx, ng)
!CALL field_bc(by, ng)
!CALL field_bc(bz, ng)
CALL all_comp_field_bc(bx, by, bz, ng, nx, ny)


IF (mpi_only) RETURN

Expand Down
2 changes: 2 additions & 0 deletions epoch2d/src/deck/deck_io_block.F90
Original file line number Diff line number Diff line change
Expand Up @@ -1010,13 +1010,15 @@ SUBROUTINE init_io_block(io_block)
io_block%name = ''
io_block%dt_snapshot = -1.0_num
io_block%time_prev = 0.0_num
io_block%buffer_time_prev = 0.0_num
io_block%time_first = 0.0_num
io_block%dt_average = -1.0_num
io_block%dt_min_average = -1.0_num
io_block%average_time = -1.0_num
io_block%average_time_start = -1.0_num
io_block%nstep_snapshot = -1
io_block%nstep_prev = 0
io_block%buffer_nstep_prev = 0
io_block%nstep_first = 0
io_block%nstep_average = -1
io_block%restart = .FALSE.
Expand Down
14 changes: 6 additions & 8 deletions epoch2d/src/deck/strings.f90
Original file line number Diff line number Diff line change
Expand Up @@ -323,17 +323,15 @@ END FUNCTION lowercase



FUNCTION trim_string(string)
FUNCTION trim_string(string_in)

CHARACTER(LEN=c_max_string_length) :: trim_string
CHARACTER(LEN=*) :: string
CHARACTER(LEN=:), ALLOCATABLE :: string_copy
CHARACTER(LEN=*) :: string_in
CHARACTER(LEN=LEN_TRIM(string_in)) :: string

ALLOCATE(CHARACTER(LEN=LEN(string)) :: string_copy)

string_copy = ADJUSTL(string)
IF (LEN_TRIM(string_copy) > c_max_string_length) THEN
trim_string = string_copy(1:c_max_string_length)
string = ADJUSTL(string_in)
IF (LEN_TRIM(string) > c_max_string_length) THEN
trim_string = string(1:c_max_string_length)
ELSE
trim_string = TRIM(string_copy)
END IF
Expand Down
5 changes: 3 additions & 2 deletions epoch2d/src/epoch2d.F90
Original file line number Diff line number Diff line change
Expand Up @@ -152,7 +152,7 @@ PROGRAM pic
ELSE
time = time + dt / 2.0_num
CALL update_eb_fields_final
CALL moving_window
CALL moving_window(step)
END IF
ELSE
dt_store = dt
Expand Down Expand Up @@ -258,7 +258,8 @@ PROGRAM pic

CALL update_eb_fields_final

CALL moving_window
CALL moving_window(step)

END DO

IF (rank == 0) runtime = MPI_WTIME() - walltime_started
Expand Down
7 changes: 4 additions & 3 deletions epoch2d/src/housekeeping/current_smooth.F90
Original file line number Diff line number Diff line change
Expand Up @@ -30,9 +30,10 @@ SUBROUTINE current_finish

CALL current_bcs

CALL field_bc(jx, jng)
CALL field_bc(jy, jng)
CALL field_bc(jz, jng)
!CALL field_bc(jx, jng)
!CALL field_bc(jy, jng)
!CALL field_bc(jz, jng)
CALL all_comp_field_bc(jx, jy, jz, jng, nx, ny)

IF (smooth_currents) CALL smooth_current

Expand Down
4 changes: 4 additions & 0 deletions epoch2d/src/housekeeping/setup.F90
Original file line number Diff line number Diff line change
Expand Up @@ -990,13 +990,17 @@ SUBROUTINE restart_data(step)
END IF
IF (io_block_list(i)%dt_snapshot > 0.0_num) THEN
io_block_list(i)%time_prev = time
io_block_list(i)%buffer_time_prev = time
ELSE
io_block_list(i)%time_prev = 0.0_num
io_block_list(i)%buffer_time_prev = 0.0_num
END IF
IF (io_block_list(i)%nstep_snapshot > 0) THEN
io_block_list(i)%nstep_prev = step
io_block_list(i)%buffer_nstep_prev = step
ELSE
io_block_list(i)%nstep_prev = 0
io_block_list(i)%buffer_nstep_prev = 0
END IF
io_block_list(i)%walltime_prev = time
IF (ALLOCATED(io_block_list(i)%dump_at_nsteps)) THEN
Expand Down
Loading