Skip to content

Commit 037cbe9

Browse files
use unity normalization; add error catch if more than one normalization type is specified (#41)
* switch to using unityone normalization in ufs for all fields * add model abort if more than one normalization type is specified for a single n1:n2:maptype
1 parent d5b270c commit 037cbe9

File tree

3 files changed

+34
-15
lines changed

3 files changed

+34
-15
lines changed

mediator/esmFldsExchange_nems_mod.F90

+12-11
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ subroutine esmFldsExchange_nems(gcomp, phase, rc)
8888
do n = 1,size(flds)
8989
fldname = trim(flds(n))
9090
call addfld(fldListFr(compatm)%flds, trim(fldname))
91-
call addmap(fldListFr(compatm)%flds, trim(fldname), compocn, maptype, 'none', 'unset')
91+
call addmap(fldListFr(compatm)%flds, trim(fldname), compocn, maptype, 'one', 'unset')
9292
end do
9393
deallocate(flds)
9494

@@ -155,7 +155,7 @@ subroutine esmFldsExchange_nems(gcomp, phase, rc)
155155
! to ocn: sea level pressure from atm
156156
call addfld(fldListTo(compocn)%flds, 'Sa_pslv')
157157
call addfld(fldListFr(compatm)%flds, 'Sa_pslv')
158-
call addmap(fldListFr(compatm)%flds, 'Sa_pslv', compocn, maptype, 'none', 'unset')
158+
call addmap(fldListFr(compatm)%flds, 'Sa_pslv', compocn, maptype, 'one', 'unset')
159159
call addmrg(fldListTo(compocn)%flds, 'Sa_pslv', mrg_from=compatm, mrg_fld='Sa_pslv', mrg_type='copy')
160160

161161
! to ocn: from atm (custom merge in med_phases_prep_ocn)
@@ -169,7 +169,7 @@ subroutine esmFldsExchange_nems(gcomp, phase, rc)
169169
fldname = trim(flds(n))
170170
call addfld(fldListTo(compocn)%flds, trim(fldname))
171171
call addfld(fldListFr(compatm)%flds, trim(fldname))
172-
call addmap(fldListFr(compatm)%flds, trim(fldname), compocn, maptype, 'none', 'unset')
172+
call addmap(fldListFr(compatm)%flds, trim(fldname), compocn, maptype, 'one', 'unset')
173173
end do
174174
deallocate(flds)
175175

@@ -194,7 +194,7 @@ subroutine esmFldsExchange_nems(gcomp, phase, rc)
194194
fldname = trim(flds(n))
195195
call addfld(fldListTo(compocn)%flds, trim(fldname))
196196
call addfld(fldListFr(compatm)%flds, trim(fldname))
197-
call addmap(fldListFr(compatm)%flds, trim(fldname), compocn, maptype, 'none', 'unset')
197+
call addmap(fldListFr(compatm)%flds, trim(fldname), compocn, maptype, 'one', 'unset')
198198
call addmrg(fldListTo(compocn)%flds, trim(fldname), &
199199
mrg_from=compatm, mrg_fld=trim(fldname), mrg_type='copy_with_weights', mrg_fracname='ofrac')
200200
end do
@@ -208,28 +208,29 @@ subroutine esmFldsExchange_nems(gcomp, phase, rc)
208208
call addfld(fldListTo(compocn)%flds, 'Foxx_'//trim(flds(n)))
209209
call addfld(fldListFr(compice)%flds, 'Fioi_'//trim(flds(n)))
210210
call addfld(fldListFr(compatm)%flds, 'Faxa_'//trim(flds(n)))
211-
call addmap(fldListFr(compatm)%flds, 'Faxa_'//trim(flds(n)), compocn, maptype, 'none', 'unset')
211+
call addmap(fldListFr(compatm)%flds, 'Faxa_'//trim(flds(n)), compocn, maptype, 'one', 'unset')
212212
call addmap(fldListFr(compice)%flds, 'Fioi_'//trim(flds(n)), compocn, mapfcopy, 'unset', 'unset')
213213
end do
214214
deallocate(flds)
215215

216216
! to ocn: net long wave via auto merge
217217
call addfld(fldListTo(compocn)%flds, 'Faxa_lwnet')
218218
call addfld(fldListFr(compatm)%flds, 'Faxa_lwnet')
219-
call addmap(fldListFr(compatm)%flds, 'Faxa_lwnet', compocn, maptype, 'none', 'unset')
219+
call addmap(fldListFr(compatm)%flds, 'Faxa_lwnet', compocn, maptype, 'one', 'unset')
220220
call addmrg(fldListTo(compocn)%flds, 'Faxa_lwnet', &
221221
mrg_from=compatm, mrg_fld='Faxa_lwnet', mrg_type='copy_with_weights', mrg_fracname='ofrac')
222222

223223
! to ocn: merged sensible heat flux (custom merge in med_phases_prep_ocn)
224224
call addfld(fldListTo(compocn)%flds, 'Faxa_sen')
225225
call addfld(fldListFr(compatm)%flds, 'Faxa_sen')
226-
call addmap(fldListFr(compatm)%flds, 'Faxa_sen', compocn, maptype, 'none', 'unset')
226+
call addmap(fldListFr(compatm)%flds, 'Faxa_sen', compocn, maptype, 'one', 'unset')
227227

228228
! to ocn: evaporation water flux (custom merge in med_phases_prep_ocn)
229229
call addfld(fldListTo(compocn)%flds, 'Faxa_evap')
230230
call addfld(fldListFr(compatm)%flds, 'Faxa_lat')
231-
call addmap(fldListFr(compatm)%flds, 'Faxa_lat', compocn, maptype, 'none', 'unset')
231+
call addmap(fldListFr(compatm)%flds, 'Faxa_lat', compocn, maptype, 'one', 'unset')
232232
else
233+
! nems_orig_data
233234
! to ocn: surface stress from mediator and ice stress via auto merge
234235
allocate(flds(2))
235236
flds = (/'taux', 'tauy'/)
@@ -247,7 +248,7 @@ subroutine esmFldsExchange_nems(gcomp, phase, rc)
247248
! to ocn: long wave net via auto merge
248249
call addfld(fldListTo(compocn)%flds, 'Foxx_lwnet')
249250
call addfld(fldListFr(compatm)%flds, 'Faxa_lwdn')
250-
call addmap(fldListFr(compatm)%flds, 'Faxa_lwdn', compocn, maptype, 'none', 'unset')
251+
call addmap(fldListFr(compatm)%flds, 'Faxa_lwdn', compocn, maptype, 'one', 'unset')
251252
call addmrg(fldListTo(compocn)%flds, 'Foxx_lwnet', &
252253
mrg_from=compmed, mrg_fld='Faox_lwup', mrg_type='merge', mrg_fracname='ofrac')
253254
call addmrg(fldListTo(compocn)%flds, 'Foxx_lwnet', &
@@ -299,7 +300,7 @@ subroutine esmFldsExchange_nems(gcomp, phase, rc)
299300
fldname = trim(flds(n))
300301
call addfld(fldListFr(compatm)%flds, trim(fldname))
301302
call addfld(fldListTo(compice)%flds, trim(fldname))
302-
call addmap(fldListFr(compatm)%flds, trim(fldname), compice, maptype, 'none', 'unset')
303+
call addmap(fldListFr(compatm)%flds, trim(fldname), compice, maptype, 'one', 'unset')
303304
call addmrg(fldListTo(compice)%flds, trim(fldname), mrg_from=compatm, mrg_fld=trim(fldname), mrg_type='copy')
304305
end do
305306
deallocate(flds)
@@ -317,7 +318,7 @@ subroutine esmFldsExchange_nems(gcomp, phase, rc)
317318
fldname = trim(flds(n))
318319
call addfld(fldListTo(compice)%flds, trim(fldname))
319320
call addfld(fldListFr(compatm)%flds, trim(fldname))
320-
call addmap(fldListFr(compatm)%flds, trim(fldname), compice, maptype, 'none', 'unset')
321+
call addmap(fldListFr(compatm)%flds, trim(fldname), compice, maptype, 'one', 'unset')
321322
call addmrg(fldListTo(compice)%flds, trim(fldname), mrg_from=compatm, mrg_fld=trim(fldname), mrg_type='copy')
322323
end do
323324
deallocate(flds)

mediator/med_map_mod.F90

+21-3
Original file line numberDiff line numberDiff line change
@@ -221,7 +221,6 @@ subroutine med_map_routehandles_initfrom_field(n1, n2, fldsrc, flddst, mapindex,
221221
use esmFlds , only : mapnstod, mapnstod_consd, mapnstod_consf, mapnstod_consd
222222
use esmFlds , only : mapfillv_bilnr, mapbilnr_nstod
223223
use esmFlds , only : ncomps, compatm, compice, compocn, compname
224-
use esmFlds , only : mapfcopy, mapconsd, mapconsf, mapnstod
225224
use esmFlds , only : coupling_mode, dststatus_print
226225
use esmFlds , only : atm_name
227226
use med_constants_mod , only : ispval_mask => med_constants_ispval_mask
@@ -590,7 +589,6 @@ subroutine med_map_mapnorm_init(gcomp, rc)
590589
! local variables
591590
type(InternalState) :: is_local
592591
integer :: n1, n2, m
593-
character(len=1) :: cn1,cn2,cm
594592
real(R8), pointer :: dataptr(:) => null()
595593
integer :: fieldCount
596594
type(ESMF_Field), pointer :: fieldlist(:) => null()
@@ -661,7 +659,6 @@ subroutine med_map_mapnorm_init(gcomp, rc)
661659
maptype=m, rc=rc)
662660
if (chkerr(rc,__LINE__,u_FILE_u)) return
663661
if (mastertask) then
664-
write(cn1,'(i1)') n1; write(cn2,'(i1)') n2; write(cm ,'(i1)') m
665662
write(logunit,'(a)') trim(subname)//' created field_NormOne for '&
666663
//compname(n1)//'->'//compname(n2)//' with mapping '//mapnames(m)
667664
endif
@@ -719,6 +716,8 @@ subroutine med_map_packed_field_create(destcomp, flds_scalar_name, &
719716
type(ESMF_Field), pointer :: fieldlist_src(:) => null()
720717
type(ESMF_Field), pointer :: fieldlist_dst(:) => null()
721718
character(CL), allocatable :: fieldNameList(:)
719+
character(CS) :: mapnorm_mapindex
720+
character(len=CX) :: tmpstr
722721
character(len=*), parameter :: subname=' (module_MED_map:med_packed_field_create) '
723722
!-----------------------------------------------------------
724723

@@ -765,6 +764,7 @@ subroutine med_map_packed_field_create(destcomp, flds_scalar_name, &
765764
! Determine the normalization type for each packed_data mapping element
766765
! Loop over mapping types
767766
do mapindex = 1,nmappers
767+
mapnorm_mapindex = 'not_set'
768768
! Loop over source field bundle
769769
do nf = 1, fieldCount
770770
! Loop over the fldsSrc types
@@ -776,6 +776,24 @@ subroutine med_map_packed_field_create(destcomp, flds_scalar_name, &
776776
trim(fldsSrc(ns)%shortname) == trim(fieldnamelist(nf))) then
777777
! Set the normalization to the input
778778
packed_data(mapindex)%mapnorm = fldsSrc(ns)%mapnorm(destcomp)
779+
if (mapnorm_mapindex == 'not_set') then
780+
mapnorm_mapindex = packed_data(mapindex)%mapnorm
781+
write(tmpstr,*)'Map type '//trim(mapnames(mapindex)) &
782+
//', destcomp '//trim(compname(destcomp)) &
783+
//', mapnorm '//trim(mapnorm_mapindex) &
784+
//' '//trim(fieldnamelist(nf))
785+
call ESMF_LogWrite(trim(tmpstr), ESMF_LOGMSG_INFO)
786+
else
787+
if (mapnorm_mapindex /= packed_data(mapindex)%mapnorm) then
788+
write(tmpstr,*)'Map type '//trim(mapnames(mapindex)) &
789+
//', destcomp '//trim(compname(destcomp)) &
790+
//', mapnorm '//trim(mapnorm_mapindex) &
791+
//' set; cannot set mapnorm to '//trim(packed_data(mapindex)%mapnorm) &
792+
//' '//trim(fieldnamelist(nf))
793+
call ESMF_LogWrite(trim(tmpstr), ESMF_LOGMSG_INFO)
794+
call ESMF_Finalize(endflag=ESMF_END_ABORT)
795+
end if
796+
end if
779797
end if
780798
end do
781799
end do

mediator/med_phases_ocnalb_mod.F90

+1-1
Original file line numberDiff line numberDiff line change
@@ -573,9 +573,9 @@ subroutine med_phases_ocnalb_orbital_update(clock, logunit, mastertask, eccen,
573573
character(len=*) , parameter :: subname = "(med_phases_ocnalb_orbital_update)"
574574
!-------------------------------------------
575575

576-
#ifdef CESMCOUPLED
577576
rc = ESMF_SUCCESS
578577

578+
#ifdef CESMCOUPLED
579579
if (trim(orb_mode) == trim(orb_variable_year)) then
580580
call ESMF_ClockGet(clock, CurrTime=CurrTime, rc=rc)
581581
if (chkerr(rc,__LINE__,u_FILE_u)) return

0 commit comments

Comments
 (0)