Skip to content

Commit

Permalink
(*)Call MOM_write_field in write_ocean_geometry_file
Browse files Browse the repository at this point in the history
  Use calls to MOM_write_field in write_ocean_geometry_file, instead of calls
write_field.  Also added missing dimensional rescaling factors to the two area
fields Ah and Aq, which will cause the output fields in the ocean_geometry.nc
files to change, but they are now invariant to the choice of dimensional
rescaling, whereas previously they had not been.  All answers and output are
otherwise bitwise identical, and even ocean_geometry.nc is identical if
L_RESCALE_POWER = 0.
  • Loading branch information
Hallberg-NOAA committed Jan 9, 2021
1 parent 7091a09 commit 502eb30
Showing 1 changed file with 26 additions and 26 deletions.
52 changes: 26 additions & 26 deletions src/initialization/MOM_shared_initialization.F90
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ module MOM_shared_initialization
use MOM_file_parser, only : get_param, log_param, param_file_type, log_version
use MOM_io, only : close_file, create_file, fieldtype, file_exists, stdout
use MOM_io, only : MOM_read_data, MOM_read_vector, SINGLE_FILE, MULTIPLE
use MOM_io, only : slasher, vardesc, write_field, var_desc
use MOM_io, only : slasher, vardesc, MOM_write_field, var_desc
use MOM_string_functions, only : uppercase
use MOM_unit_scaling, only : unit_scale_type

Expand Down Expand Up @@ -1312,60 +1312,60 @@ subroutine write_ocean_geometry_file(G, param_file, directory, geom_file, US)
file_threading, dG=G)

do J=Jsq,Jeq ; do I=Isq,Ieq ; out_q(I,J) = G%geoLatBu(I,J) ; enddo ; enddo
call write_field(unit, fields(1), G%Domain%mpp_domain, out_q)
call MOM_write_field(unit, fields(1), G%Domain, out_q)
do J=Jsq,Jeq ; do I=Isq,Ieq ; out_q(I,J) = G%geoLonBu(I,J) ; enddo ; enddo
call write_field(unit, fields(2), G%Domain%mpp_domain, out_q)
call write_field(unit, fields(3), G%Domain%mpp_domain, G%geoLatT)
call write_field(unit, fields(4), G%Domain%mpp_domain, G%geoLonT)
call MOM_write_field(unit, fields(2), G%Domain, out_q)
call MOM_write_field(unit, fields(3), G%Domain, G%geoLatT)
call MOM_write_field(unit, fields(4), G%Domain, G%geoLonT)

do j=js,je ; do i=is,ie ; out_h(i,j) = Z_to_m_scale*G%bathyT(i,j) ; enddo ; enddo
call write_field(unit, fields(5), G%Domain%mpp_domain, out_h)
call MOM_write_field(unit, fields(5), G%Domain, out_h)
do J=Jsq,Jeq ; do I=Isq,Ieq ; out_q(i,J) = s_to_T_scale*G%CoriolisBu(I,J) ; enddo ; enddo
call write_field(unit, fields(6), G%Domain%mpp_domain, out_q)
call MOM_write_field(unit, fields(6), G%Domain, out_q)

! I think that all of these copies are holdovers from a much earlier
! ancestor code in which many of the metrics were macros that could have
! had reduced dimensions, and that they are no longer needed in MOM6. -RWH
do J=Jsq,Jeq ; do i=is,ie ; out_v(i,J) = L_to_m_scale*G%dxCv(i,J) ; enddo ; enddo
call write_field(unit, fields(7), G%Domain%mpp_domain, out_v)
call MOM_write_field(unit, fields(7), G%Domain, out_v)
do j=js,je ; do I=Isq,Ieq ; out_u(I,j) = L_to_m_scale*G%dyCu(I,j) ; enddo ; enddo
call write_field(unit, fields(8), G%Domain%mpp_domain, out_u)
call MOM_write_field(unit, fields(8), G%Domain, out_u)

do j=js,je ; do I=Isq,Ieq ; out_u(I,j) = L_to_m_scale*G%dxCu(I,j) ; enddo ; enddo
call write_field(unit, fields(9), G%Domain%mpp_domain, out_u)
call MOM_write_field(unit, fields(9), G%Domain, out_u)
do J=Jsq,Jeq ; do i=is,ie ; out_v(i,J) = L_to_m_scale*G%dyCv(i,J) ; enddo ; enddo
call write_field(unit, fields(10), G%Domain%mpp_domain, out_v)
call MOM_write_field(unit, fields(10), G%Domain, out_v)

do j=js,je ; do i=is,ie ; out_h(i,j) = L_to_m_scale*G%dxT(i,j); enddo ; enddo
call write_field(unit, fields(11), G%Domain%mpp_domain, out_h)
call MOM_write_field(unit, fields(11), G%Domain, out_h)
do j=js,je ; do i=is,ie ; out_h(i,j) = L_to_m_scale*G%dyT(i,j) ; enddo ; enddo
call write_field(unit, fields(12), G%Domain%mpp_domain, out_h)
call MOM_write_field(unit, fields(12), G%Domain, out_h)

do J=Jsq,Jeq ; do I=Isq,Ieq ; out_q(i,J) = L_to_m_scale*G%dxBu(I,J) ; enddo ; enddo
call write_field(unit, fields(13), G%Domain%mpp_domain, out_q)
call MOM_write_field(unit, fields(13), G%Domain, out_q)
do J=Jsq,Jeq ; do I=Isq,Ieq ; out_q(I,J) = L_to_m_scale*G%dyBu(I,J) ; enddo ; enddo
call write_field(unit, fields(14), G%Domain%mpp_domain, out_q)
call MOM_write_field(unit, fields(14), G%Domain, out_q)

do j=js,je ; do i=is,ie ; out_h(i,j) = G%areaT(i,j) ; enddo ; enddo
call write_field(unit, fields(15), G%Domain%mpp_domain, out_h)
do J=Jsq,Jeq ; do I=Isq,Ieq ; out_q(I,J) = G%areaBu(I,J) ; enddo ; enddo
call write_field(unit, fields(16), G%Domain%mpp_domain, out_q)
do j=js,je ; do i=is,ie ; out_h(i,j) = L_to_m_scale**2*G%areaT(i,j) ; enddo ; enddo
call MOM_write_field(unit, fields(15), G%Domain, out_h)
do J=Jsq,Jeq ; do I=Isq,Ieq ; out_q(I,J) = L_to_m_scale**2*G%areaBu(I,J) ; enddo ; enddo
call MOM_write_field(unit, fields(16), G%Domain, out_q)

do J=Jsq,Jeq ; do i=is,ie ; out_v(i,J) = L_to_m_scale*G%dx_Cv(i,J) ; enddo ; enddo
call write_field(unit, fields(17), G%Domain%mpp_domain, out_v)
call MOM_write_field(unit, fields(17), G%Domain, out_v)
do j=js,je ; do I=Isq,Ieq ; out_u(I,j) = L_to_m_scale*G%dy_Cu(I,j) ; enddo ; enddo
call write_field(unit, fields(18), G%Domain%mpp_domain, out_u)
call write_field(unit, fields(19), G%Domain%mpp_domain, G%mask2dT)
call MOM_write_field(unit, fields(18), G%Domain, out_u)
call MOM_write_field(unit, fields(19), G%Domain, G%mask2dT)

if (G%bathymetry_at_vel) then
do j=js,je ; do I=Isq,Ieq ; out_u(I,j) = Z_to_m_scale*G%Dblock_u(I,j) ; enddo ; enddo
call write_field(unit, fields(20), G%Domain%mpp_domain, out_u)
call MOM_write_field(unit, fields(20), G%Domain, out_u)
do j=js,je ; do I=Isq,Ieq ; out_u(I,j) = Z_to_m_scale*G%Dopen_u(I,j) ; enddo ; enddo
call write_field(unit, fields(21), G%Domain%mpp_domain, out_u)
call MOM_write_field(unit, fields(21), G%Domain, out_u)
do J=Jsq,Jeq ; do i=is,ie ; out_v(i,J) = Z_to_m_scale*G%Dblock_v(i,J) ; enddo ; enddo
call write_field(unit, fields(22), G%Domain%mpp_domain, out_v)
call MOM_write_field(unit, fields(22), G%Domain, out_v)
do J=Jsq,Jeq ; do i=is,ie ; out_v(i,J) = Z_to_m_scale*G%Dopen_v(i,J) ; enddo ; enddo
call write_field(unit, fields(23), G%Domain%mpp_domain, out_v)
call MOM_write_field(unit, fields(23), G%Domain, out_v)
endif

call close_file(unit)
Expand Down

0 comments on commit 502eb30

Please sign in to comment.