Skip to content

Commit 86ed81f

Browse files
committed
Use field_checksum in save_restart & restore_state
Use field_checksum and its unscale argument in save_restart and restore_state to avoid 10 instances of array-syntax math which are unnecessary in most cases because the conversion factor is 1. All answers are bitwise identical.
1 parent 090e323 commit 86ed81f

File tree

1 file changed

+11
-11
lines changed

1 file changed

+11
-11
lines changed

src/framework/MOM_restart.F90

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ module MOM_restart
55

66
use, intrinsic :: iso_fortran_env, only : int64
77
use MOM_array_transform, only : rotate_array, rotate_vector, rotate_array_pair
8-
use MOM_checksums, only : chksum => rotated_field_chksum
8+
use MOM_checksums, only : chksum => field_checksum
99
use MOM_domains, only : PE_here, num_PEs, AGRID, BGRID_NE, CGRID_NE
1010
use MOM_error_handler, only : MOM_error, MOM_mesg, FATAL, WARNING, NOTE, is_root_pe, MOM_get_verbosity
1111
use MOM_file_parser, only : get_param, log_param, log_version, param_file_type
@@ -1738,15 +1738,15 @@ subroutine save_restart(directory, time, G, CS, time_stamped, filename, GV, num_
17381738

17391739
conv = CS%restart_field(m)%conv
17401740
if (associated(CS%var_ptr3d(m)%p)) then
1741-
check_val(m-start_var+1,1) = chksum(conv*CS%var_ptr3d(m)%p(isL:ieL,jsL:jeL,:), turns=-turns)
1741+
check_val(m-start_var+1,1) = chksum(CS%var_ptr3d(m)%p(isL:ieL,jsL:jeL,:), turns=-turns, unscale=conv)
17421742
elseif (associated(CS%var_ptr2d(m)%p)) then
1743-
check_val(m-start_var+1,1) = chksum(conv*CS%var_ptr2d(m)%p(isL:ieL,jsL:jeL), turns=-turns)
1743+
check_val(m-start_var+1,1) = chksum(CS%var_ptr2d(m)%p(isL:ieL,jsL:jeL), turns=-turns, unscale=conv)
17441744
elseif (associated(CS%var_ptr4d(m)%p)) then
1745-
check_val(m-start_var+1,1) = chksum(conv*CS%var_ptr4d(m)%p(isL:ieL,jsL:jeL,:,:), turns=-turns)
1745+
check_val(m-start_var+1,1) = chksum(CS%var_ptr4d(m)%p(isL:ieL,jsL:jeL,:,:), turns=-turns, unscale=conv)
17461746
elseif (associated(CS%var_ptr1d(m)%p)) then
1747-
check_val(m-start_var+1,1) = chksum(conv*CS%var_ptr1d(m)%p(:))
1747+
check_val(m-start_var+1,1) = chksum(CS%var_ptr1d(m)%p(:), unscale=conv)
17481748
elseif (associated(CS%var_ptr0d(m)%p)) then
1749-
check_val(m-start_var+1,1) = chksum(conv*CS%var_ptr0d(m)%p, pelist=(/PE_here()/))
1749+
check_val(m-start_var+1,1) = chksum(CS%var_ptr0d(m)%p, pelist=(/PE_here()/), unscale=conv)
17501750
endif
17511751
enddo
17521752

@@ -1924,11 +1924,11 @@ subroutine restore_state(filename, directory, day, G, CS)
19241924
! Read a 1d array, which should be invariant to domain decomposition.
19251925
call MOM_read_data(unit_path(n), varname, CS%var_ptr1d(m)%p, &
19261926
timelevel=1, scale=scale, MOM_Domain=G%Domain)
1927-
if (is_there_a_checksum) checksum_data = chksum(conv*CS%var_ptr1d(m)%p(:))
1927+
if (is_there_a_checksum) checksum_data = chksum(CS%var_ptr1d(m)%p(:), unscale=conv)
19281928
elseif (associated(CS%var_ptr0d(m)%p)) then ! Read a scalar...
19291929
call MOM_read_data(unit_path(n), varname, CS%var_ptr0d(m)%p, &
19301930
timelevel=1, scale=scale, MOM_Domain=G%Domain)
1931-
if (is_there_a_checksum) checksum_data = chksum(conv*CS%var_ptr0d(m)%p, pelist=(/PE_here()/))
1931+
if (is_there_a_checksum) checksum_data = chksum(CS%var_ptr0d(m)%p, pelist=(/PE_here()/), unscale=conv)
19321932
elseif (associated(CS%var_ptr2d(m)%p)) then ! Read a 2d array.
19331933
if (pos /= 0) then
19341934
call MOM_read_data(unit_path(n), varname, CS%var_ptr2d(m)%p, &
@@ -1938,7 +1938,7 @@ subroutine restore_state(filename, directory, day, G, CS)
19381938
"MOM_restart does not support 2-d arrays without domain decomposition.")
19391939
! call read_data(unit_path(n), varname, CS%var_ptr2d(m)%p,no_domain=.true., timelevel=1)
19401940
endif
1941-
if (is_there_a_checksum) checksum_data = chksum(conv*CS%var_ptr2d(m)%p(isL:ieL,jsL:jeL))
1941+
if (is_there_a_checksum) checksum_data = chksum(CS%var_ptr2d(m)%p(isL:ieL,jsL:jeL), unscale=conv)
19421942
elseif (associated(CS%var_ptr3d(m)%p)) then ! Read a 3d array.
19431943
if (pos /= 0) then
19441944
call MOM_read_data(unit_path(n), varname, CS%var_ptr3d(m)%p, &
@@ -1948,7 +1948,7 @@ subroutine restore_state(filename, directory, day, G, CS)
19481948
"MOM_restart does not support 3-d arrays without domain decomposition.")
19491949
! call read_data(unit_path(n), varname, CS%var_ptr3d(m)%p, no_domain=.true., timelevel=1)
19501950
endif
1951-
if (is_there_a_checksum) checksum_data = chksum(conv*CS%var_ptr3d(m)%p(isL:ieL,jsL:jeL,:))
1951+
if (is_there_a_checksum) checksum_data = chksum(CS%var_ptr3d(m)%p(isL:ieL,jsL:jeL,:), unscale=conv)
19521952
elseif (associated(CS%var_ptr4d(m)%p)) then ! Read a 4d array.
19531953
if (pos /= 0) then
19541954
call MOM_read_data(unit_path(n), varname, CS%var_ptr4d(m)%p, &
@@ -1959,7 +1959,7 @@ subroutine restore_state(filename, directory, day, G, CS)
19591959
"MOM_restart does not support 4-d arrays without domain decomposition.")
19601960
! call read_data(unit_path(n), varname, CS%var_ptr4d(m)%p, no_domain=.true., timelevel=1)
19611961
endif
1962-
if (is_there_a_checksum) checksum_data = chksum(conv*CS%var_ptr4d(m)%p(isL:ieL,jsL:jeL,:,:))
1962+
if (is_there_a_checksum) checksum_data = chksum(CS%var_ptr4d(m)%p(isL:ieL,jsL:jeL,:,:), unscale=conv)
19631963
else
19641964
call MOM_error(FATAL, "MOM_restart restore_state: No pointers set for "//trim(varname))
19651965
endif

0 commit comments

Comments
 (0)