Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 72daf7b

Browse files
gustavo-marquesalperaltuntas
authored andcommitted
Add option to receive enthalpy fluxes via coupler
* Remove lrunoff_hflx and frunoff_hflx from the IOB type. These are never used; * mean_runoff_heat_flx and mean_calving_heat_flx are are never advertized, so these have been deleted; * If cesm_coupled=true, six new fields are imported: - heat_content_lprec - heat_content_fprec - heat_content_evap - heat_content_cond - heat_content_rofl - heat_content_rofi * Add a new parameter (ENTHALPY_FROM_COUPLER) to control if the enthalpy associated with mass entering/leaving the ocean is provided via the coupler or calculated in MOM6.
1 parent 6963b22 commit 72daf7b

4 files changed

Lines changed: 174 additions & 45 deletions

File tree

config_src/drivers/nuopc_cap/mom_cap.F90

Lines changed: 69 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -654,8 +654,7 @@ subroutine InitializeAdvertise(gcomp, importState, exportState, clock, rc)
654654
ocean_public%is_ocean_pe = .true.
655655
call ocean_model_init(ocean_public, ocean_state, time0, time_start, input_restart_file=trim(restartfiles))
656656

657-
! GMM, this call is not needed for NCAR. Check with EMC.
658-
! If this can be deleted, perhaps we should also delete ocean_model_flux_init
657+
! GMM, this call is not needed in CESM. Check with EMC if it can be deleted.
659658
call ocean_model_flux_init(ocean_state)
660659

661660
call ocean_model_init_sfc(ocean_state, ocean_public)
@@ -680,9 +679,7 @@ subroutine InitializeAdvertise(gcomp, importState, exportState, clock, rc)
680679
Ice_ocean_boundary% ice_fraction (isc:iec,jsc:jec), &
681680
Ice_ocean_boundary% u10_sqr (isc:iec,jsc:jec), &
682681
Ice_ocean_boundary% p (isc:iec,jsc:jec), &
683-
Ice_ocean_boundary% lrunoff_hflx (isc:iec,jsc:jec), &
684-
Ice_ocean_boundary% frunoff_hflx (isc:iec,jsc:jec), &
685-
Ice_ocean_boundary% lrunoff (isc:iec,jsc:jec), &
682+
Ice_ocean_boundary% lrunoff (isc:iec,jsc:jec), &
686683
Ice_ocean_boundary% frunoff (isc:iec,jsc:jec))
687684

688685
Ice_ocean_boundary%u_flux = 0.0
@@ -703,11 +700,25 @@ subroutine InitializeAdvertise(gcomp, importState, exportState, clock, rc)
703700
Ice_ocean_boundary%ice_fraction = 0.0
704701
Ice_ocean_boundary%u10_sqr = 0.0
705702
Ice_ocean_boundary%p = 0.0
706-
Ice_ocean_boundary%lrunoff_hflx = 0.0
707-
Ice_ocean_boundary%frunoff_hflx = 0.0
708703
Ice_ocean_boundary%lrunoff = 0.0
709704
Ice_ocean_boundary%frunoff = 0.0
710705

706+
if (cesm_coupled) then
707+
allocate (Ice_ocean_boundary% hrain (isc:iec,jsc:jec), &
708+
Ice_ocean_boundary% hsnow (isc:iec,jsc:jec), &
709+
Ice_ocean_boundary% hrofl (isc:iec,jsc:jec), &
710+
Ice_ocean_boundary% hrofi (isc:iec,jsc:jec), &
711+
Ice_ocean_boundary% hevap (isc:iec,jsc:jec), &
712+
Ice_ocean_boundary% hcond (isc:iec,jsc:jec))
713+
714+
Ice_ocean_boundary%hrain = 0.0
715+
Ice_ocean_boundary%hsnow = 0.0
716+
Ice_ocean_boundary%hrofl = 0.0
717+
Ice_ocean_boundary%hrofi = 0.0
718+
Ice_ocean_boundary%hevap = 0.0
719+
Ice_ocean_boundary%hcond = 0.0
720+
endif
721+
711722
call query_ocean_state(ocean_state, use_waves=use_waves, wave_method=wave_method)
712723
if (use_waves) then
713724
if (wave_method == "EFACTOR") then
@@ -756,9 +767,16 @@ subroutine InitializeAdvertise(gcomp, importState, exportState, clock, rc)
756767
call fld_list_add(fldsToOcn_num, fldsToOcn, "So_duu10n" , "will provide") !-> wind^2 at 10m
757768
call fld_list_add(fldsToOcn_num, fldsToOcn, "mean_fresh_water_to_ocean_rate", "will provide")
758769
call fld_list_add(fldsToOcn_num, fldsToOcn, "net_heat_flx_to_ocn" , "will provide")
759-
!These are not currently used and changing requires a nuopc dictionary change
760-
!call fld_list_add(fldsToOcn_num, fldsToOcn, "mean_runoff_heat_flx" , "will provide")
761-
!call fld_list_add(fldsToOcn_num, fldsToOcn, "mean_calving_heat_flx" , "will provide")
770+
771+
if (cesm_coupled) then
772+
call fld_list_add(fldsToOcn_num, fldsToOcn, "heat_content_lprec", "will provide")
773+
call fld_list_add(fldsToOcn_num, fldsToOcn, "heat_content_fprec", "will provide")
774+
call fld_list_add(fldsToOcn_num, fldsToOcn, "heat_content_evap" , "will provide")
775+
call fld_list_add(fldsToOcn_num, fldsToOcn, "heat_content_cond" , "will provide")
776+
call fld_list_add(fldsToOcn_num, fldsToOcn, "heat_content_rofl" , "will provide")
777+
call fld_list_add(fldsToOcn_num, fldsToOcn, "heat_content_rofi" , "will provide")
778+
endif
779+
762780
if (use_waves) then
763781
if (wave_method == "EFACTOR") then
764782
call fld_list_add(fldsToOcn_num, fldsToOcn, "Sw_lamult" , "will provide")
@@ -1663,7 +1681,8 @@ subroutine ModelAdvance(gcomp, rc)
16631681
!---------------
16641682

16651683
if(profile_memory) call ESMF_VMLogMemInfo("Entering MOM update_ocean_model: ")
1666-
call update_ocean_model(Ice_ocean_boundary, ocean_state, ocean_public, Time, Time_step_coupled)
1684+
call update_ocean_model(Ice_ocean_boundary, ocean_state, ocean_public, Time, Time_step_coupled, &
1685+
cesm_coupled)
16671686
if(profile_memory) call ESMF_VMLogMemInfo("Leaving MOM update_ocean_model: ")
16681687

16691688
!---------------
@@ -2388,7 +2407,7 @@ end subroutine shr_file_getLogUnit
23882407
!! infrastructure when it's time for MOM to advance in time. During this subroutine, there is a
23892408
!! call into the MOM update routine:
23902409
!!
2391-
!! call update_ocean_model(Ice_ocean_boundary, Ocean_state, Ocean_public, Time, Time_step_coupled)
2410+
!! call update_ocean_model(Ice_ocean_boundary, Ocean_state, Ocean_public, Time, Time_step_coupled, cesm_coupled)
23922411
!!
23932412
!! Priori to the call to `update_ocean_model()`, the cap performs these steps
23942413
!! - the `Time` and `Time_step_coupled` parameters, based on FMS types, are derived from the incoming ESMF clock
@@ -2499,13 +2518,6 @@ end subroutine shr_file_getLogUnit
24992518
!! <td></td>
25002519
!! </tr>
25012520
!! <tr>
2502-
!! <td>mean_calving_heat_flx</td>
2503-
!! <td>W m-2</td>
2504-
!! <td>calving_hflx</td>
2505-
!! <td>heat flux, relative to 0C, of frozen land water into ocean</td>
2506-
!! <td></td>
2507-
!! </tr>
2508-
!! <tr>
25092521
!! <td>mean_calving_rate</td>
25102522
!! <td>kg m-2 s-1</td>
25112523
!! <td>calving</td>
@@ -2576,10 +2588,45 @@ end subroutine shr_file_getLogUnit
25762588
!! <td></td>
25772589
!! </tr>
25782590
!! <tr>
2579-
!! <td>mean_runoff_heat_flx</td>
2591+
!! <td>heat_content_lprec</td>
2592+
!! <td>W m-2</td>
2593+
!! <td>hrain</td>
2594+
!! <td>heat content (enthalpy) of liquid water entering the ocean</td>
2595+
!! <td></td>
2596+
!! </tr>
2597+
!! <tr>
2598+
!! <td>heat_content_fprec</td>
2599+
!! <td>W m-2</td>
2600+
!! <td>hsnow</td>
2601+
!! <td>heat content (enthalpy) of frozen water entering the ocean</td>
2602+
!! <td></td>
2603+
!! </tr>
2604+
!! <tr>
2605+
!! <td>heat_content_evap</td>
2606+
!! <td>W m-2</td>
2607+
!! <td>hevap</td>
2608+
!! <td>heat content (enthalpy) of water leaving the ocean</td>
2609+
!! <td></td>
2610+
!! </tr>
2611+
!! <tr>
2612+
!! <td>heat_content_cond</td>
2613+
!! <td>W m-2</td>
2614+
!! <td>hcond</td>
2615+
!! <td>heat content (enthalpy) of liquid water entering the ocean due to condensation</td>
2616+
!! <td></td>
2617+
!! </tr>
2618+
!! <tr>
2619+
!! <td>heat_content_rofl</td>
2620+
!! <td>W m-2</td>
2621+
!! <td>hrofl</td>
2622+
!! <td>heat content (enthalpy) of liquid runoff</td>
2623+
!! <td></td>
2624+
!! </tr>
2625+
!! <tr>
2626+
!! <td>heat_content_rofi</td>
25802627
!! <td>W m-2</td>
2581-
!! <td>runoff_hflx</td>
2582-
!! <td>heat flux, relative to 0C, of liquid land water into ocean</td>
2628+
!! <td>hrofi</td>
2629+
!! <td>heat content (enthalpy) of frozen runoff</td>
25832630
!! <td></td>
25842631
!! </tr>
25852632
!! <tr>

config_src/drivers/nuopc_cap/mom_cap_methods.F90

Lines changed: 46 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -217,17 +217,53 @@ subroutine mom_import(ocean_public, ocean_grid, importState, ice_ocean_boundary,
217217
isc, iec, jsc, jec, ice_ocean_boundary%frunoff, areacor=med2mod_areacor, rc=rc)
218218
if (ChkErr(rc,__LINE__,u_FILE_u)) return
219219

220-
! heat content of lrunoff
221-
ice_ocean_boundary%lrunoff_hflx(:,:) = 0._ESMF_KIND_R8
222-
call state_getimport(importState, 'mean_runoff_heat_flx', &
223-
isc, iec, jsc, jec, ice_ocean_boundary%lrunoff_hflx, areacor=med2mod_areacor, rc=rc)
224-
if (ChkErr(rc,__LINE__,u_FILE_u)) return
220+
!----
221+
! Enthalpy terms (only in CESM)
222+
!----
223+
if (cesm_coupled) then
224+
!----
225+
! enthalpy from liquid precipitation (hrain)
226+
!----
227+
call state_getimport(importState, 'heat_content_lprec', &
228+
isc, iec, jsc, jec, ice_ocean_boundary%hrain, areacor=med2mod_areacor, rc=rc)
229+
if (ChkErr(rc,__LINE__,u_FILE_u)) return
230+
231+
!----
232+
! enthalpy from frozen precipitation (hsnow)
233+
!----
234+
call state_getimport(importState, 'heat_content_fprec', &
235+
isc, iec, jsc, jec, ice_ocean_boundary%hsnow, areacor=med2mod_areacor, rc=rc)
236+
if (ChkErr(rc,__LINE__,u_FILE_u)) return
237+
238+
!----
239+
! enthalpy from liquid runoff (hrofl)
240+
!----
241+
call state_getimport(importState, 'heat_content_rofl', &
242+
isc, iec, jsc, jec, ice_ocean_boundary%hrofl, areacor=med2mod_areacor, rc=rc)
243+
if (ChkErr(rc,__LINE__,u_FILE_u)) return
244+
245+
!----
246+
! enthalpy from frozen runoff (hrofi)
247+
!----
248+
call state_getimport(importState, 'heat_content_rofi', &
249+
isc, iec, jsc, jec, ice_ocean_boundary%hrofi, areacor=med2mod_areacor, rc=rc)
250+
if (ChkErr(rc,__LINE__,u_FILE_u)) return
251+
252+
!----
253+
! enthalpy from evaporation (hevap)
254+
!----
255+
call state_getimport(importState, 'heat_content_evap', &
256+
isc, iec, jsc, jec, ice_ocean_boundary%hevap, areacor=med2mod_areacor, rc=rc)
257+
if (ChkErr(rc,__LINE__,u_FILE_u)) return
258+
259+
!----
260+
! enthalpy from condensation (hcond)
261+
!----
262+
call state_getimport(importState, 'heat_content_cond', &
263+
isc, iec, jsc, jec, ice_ocean_boundary%hcond, areacor=med2mod_areacor, rc=rc)
264+
if (ChkErr(rc,__LINE__,u_FILE_u)) return
225265

226-
! heat content of frunoff
227-
ice_ocean_boundary%frunoff_hflx(:,:) = 0._ESMF_KIND_R8
228-
call state_getimport(importState, 'mean_calving_heat_flx', &
229-
isc, iec, jsc, jec, ice_ocean_boundary%frunoff_hflx, areacor=med2mod_areacor, rc=rc)
230-
if (ChkErr(rc,__LINE__,u_FILE_u)) return
266+
endif
231267

232268
!----
233269
! salt flux from ice

config_src/drivers/nuopc_cap/mom_ocean_model_nuopc.F90

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -459,7 +459,7 @@ end subroutine ocean_model_init
459459
!! storing the new ocean properties in Ocean_state.
460460
subroutine update_ocean_model(Ice_ocean_boundary, OS, Ocean_sfc, &
461461
time_start_update, Ocean_coupling_time_step, &
462-
update_dyn, update_thermo, Ocn_fluxes_used)
462+
cesm_coupled, update_dyn, update_thermo, Ocn_fluxes_used)
463463
type(ice_ocean_boundary_type), &
464464
intent(in) :: Ice_ocean_boundary !< A structure containing the
465465
!! various forcing fields coming from the ice.
@@ -474,6 +474,7 @@ subroutine update_ocean_model(Ice_ocean_boundary, OS, Ocean_sfc, &
474474
type(time_type), intent(in) :: time_start_update !< The time at the beginning of the update step.
475475
type(time_type), intent(in) :: Ocean_coupling_time_step !< The amount of time over
476476
!! which to advance the ocean.
477+
logical, intent(in) :: cesm_coupled !< Flag to check if coupled with cesm
477478
logical, optional, intent(in) :: update_dyn !< If present and false, do not do updates
478479
!! due to the ocean dynamics.
479480
logical, optional, intent(in) :: update_thermo !< If present and false, do not do updates
@@ -523,7 +524,6 @@ subroutine update_ocean_model(Ice_ocean_boundary, OS, Ocean_sfc, &
523524

524525
do_dyn = .true. ; if (present(update_dyn)) do_dyn = update_dyn
525526
do_thermo = .true. ; if (present(update_thermo)) do_thermo = update_thermo
526-
527527
! This is benign but not necessary if ocean_model_init_sfc was called or if
528528
! OS%sfc_state%tr_fields was spawned in ocean_model_init. Consider removing it.
529529
is = OS%grid%isc ; ie = OS%grid%iec ; js = OS%grid%jsc ; je = OS%grid%jec
@@ -690,7 +690,12 @@ subroutine update_ocean_model(Ice_ocean_boundary, OS, Ocean_sfc, &
690690
call mech_forcing_diags(OS%forces, dt_coupling, OS%grid, OS%Time, OS%diag, OS%forcing_CSp%handles)
691691

692692
if (OS%fluxes%fluxes_used) then
693-
call forcing_diagnostics(OS%fluxes, OS%sfc_state, OS%grid, OS%US, OS%Time, OS%diag, OS%forcing_CSp%handles)
693+
if (cesm_coupled) then
694+
call forcing_diagnostics(OS%fluxes, OS%sfc_state, OS%grid, OS%US, OS%Time, OS%diag, &
695+
OS%forcing_CSp%handles, enthalpy=.true.)
696+
else
697+
call forcing_diagnostics(OS%fluxes, OS%sfc_state, OS%grid, OS%US, OS%Time, OS%diag, OS%forcing_CSp%handles)
698+
endif
694699
endif
695700

696701
! Translate state into Ocean.

config_src/drivers/nuopc_cap/mom_surface_forcing_nuopc.F90

Lines changed: 51 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,8 @@ module MOM_surface_forcing_nuopc
8282
!! pressure limited by max_p_surf instead of the
8383
!! full atmospheric pressure. The default is true.
8484
logical :: use_CFC !< enables the MOM_CFC_cap tracer package.
85+
logical :: enthalpy_cpl !< Controls if enthalpy terms are provided by the coupler or computed
86+
!! internally.
8587
real :: gust_const !< constant unresolved background gustiness for ustar [R L Z T-1 ~> Pa]
8688
logical :: read_gust_2d !< If true, use a 2-dimensional gustiness supplied
8789
!! from an input file.
@@ -181,8 +183,12 @@ module MOM_surface_forcing_nuopc
181183
real, pointer, dimension(:,:) :: ustar_berg =>NULL() !< frictional velocity beneath icebergs [m/s]
182184
real, pointer, dimension(:,:) :: area_berg =>NULL() !< area covered by icebergs[m2/m2]
183185
real, pointer, dimension(:,:) :: mass_berg =>NULL() !< mass of icebergs(kg/m2)
184-
real, pointer, dimension(:,:) :: lrunoff_hflx =>NULL() !< heat content of liquid runoff [W/m2]
185-
real, pointer, dimension(:,:) :: frunoff_hflx =>NULL() !< heat content of frozen runoff [W/m2]
186+
real, pointer, dimension(:,:) :: hrofl =>NULL() !< heat content from liquid runoff [W/m2]
187+
real, pointer, dimension(:,:) :: hrofi =>NULL() !< heat content from frozen runoff [W/m2]
188+
real, pointer, dimension(:,:) :: hrain =>NULL() !< heat content from liquid precipitation [W/m2]
189+
real, pointer, dimension(:,:) :: hsnow =>NULL() !< heat content from frozen precipitation [W/m2]
190+
real, pointer, dimension(:,:) :: hevap =>NULL() !< heat content from evaporation [W/m2]
191+
real, pointer, dimension(:,:) :: hcond =>NULL() !< heat content from condensation [W/m2]
186192
real, pointer, dimension(:,:) :: p =>NULL() !< pressure of overlying ice and atmosphere
187193
!< on ocean surface [Pa]
188194
real, pointer, dimension(:,:) :: ice_fraction =>NULL() !< fractional ice area [nondim]
@@ -304,7 +310,7 @@ subroutine convert_IOB_to_fluxes(IOB, fluxes, index_bounds, Time, valid_time, G,
304310
if (fluxes%dt_buoy_accum < 0) then
305311
call allocate_forcing_type(G, fluxes, water=.true., heat=.true., ustar=.true., &
306312
press=.true., fix_accum_bug=CS%fix_ustar_gustless_bug, &
307-
cfc=CS%use_CFC)
313+
cfc=CS%use_CFC, hevap=CS%enthalpy_cpl)
308314

309315
call safe_alloc_ptr(fluxes%sw_vis_dir,isd,ied,jsd,jed)
310316
call safe_alloc_ptr(fluxes%sw_vis_dif,isd,ied,jsd,jed)
@@ -487,13 +493,6 @@ subroutine convert_IOB_to_fluxes(IOB, fluxes, index_bounds, Time, valid_time, G,
487493
if (associated(IOB%mass_berg)) &
488494
fluxes%mass_berg(i,j) = US%m_to_Z*US%kg_m3_to_R * IOB%mass_berg(i-i0,j-j0) * G%mask2dT(i,j)
489495

490-
if (associated(IOB%lrunoff_hflx)) &
491-
fluxes%heat_content_lrunoff(i,j) = US%W_m2_to_QRZ_T * IOB%lrunoff_hflx(i-i0,j-j0) * G%mask2dT(i,j)
492-
493-
if (associated(IOB%frunoff_hflx)) &
494-
fluxes%heat_content_frunoff(i,j) = US%W_m2_to_QRZ_T * kg_m2_s_conversion * &
495-
IOB%frunoff_hflx(i-i0,j-j0) * G%mask2dT(i,j)
496-
497496
if (associated(IOB%lw_flux)) &
498497
fluxes%lw(i,j) = US%W_m2_to_QRZ_T * IOB%lw_flux(i-i0,j-j0) * G%mask2dT(i,j)
499498

@@ -544,6 +543,25 @@ subroutine convert_IOB_to_fluxes(IOB, fluxes, index_bounds, Time, valid_time, G,
544543
fluxes%sw(i,j) = fluxes%sw_vis_dir(i,j) + fluxes%sw_vis_dif(i,j) + &
545544
fluxes%sw_nir_dir(i,j) + fluxes%sw_nir_dif(i,j)
546545

546+
! enthalpy terms
547+
if (associated(IOB%hrofl)) &
548+
fluxes%heat_content_lrunoff(i,j) = US%W_m2_to_QRZ_T * IOB%hrofl(i-i0,j-j0) * G%mask2dT(i,j)
549+
550+
if (associated(IOB%hrofi)) &
551+
fluxes%heat_content_frunoff(i,j) = US%W_m2_to_QRZ_T * IOB%hrofi(i-i0,j-j0) * G%mask2dT(i,j)
552+
553+
if (associated(IOB%hrain)) &
554+
fluxes%heat_content_lprec(i,j) = US%W_m2_to_QRZ_T * IOB%hrain(i-i0,j-j0) * G%mask2dT(i,j)
555+
556+
if (associated(IOB%hsnow)) &
557+
fluxes%heat_content_fprec(i,j) = US%W_m2_to_QRZ_T * IOB%hsnow(i-i0,j-j0) * G%mask2dT(i,j)
558+
559+
if (associated(IOB%hevap)) &
560+
fluxes%heat_content_evap(i,j) = US%W_m2_to_QRZ_T * IOB%hevap(i-i0,j-j0) * G%mask2dT(i,j)
561+
562+
if (associated(IOB%hcond)) &
563+
fluxes%heat_content_cond(i,j) = US%W_m2_to_QRZ_T * IOB%hcond(i-i0,j-j0) * G%mask2dT(i,j)
564+
547565
! sea ice fraction [nondim]
548566
if (associated(IOB%ice_fraction) .and. associated(fluxes%ice_fraction)) &
549567
fluxes%ice_fraction(i,j) = G%mask2dT(i,j) * IOB%ice_fraction(i-i0,j-j0)
@@ -1201,6 +1219,9 @@ subroutine surface_forcing_init(Time, G, US, param_file, diag, CS, restore_salt,
12011219
call get_param(param_file, mdl, "USE_CFC_CAP", CS%use_CFC, &
12021220
default=.false., do_not_log=.true.)
12031221

1222+
call get_param(param_file, mdl, "ENTHALPY_FROM_COUPLER", CS%enthalpy_cpl, &
1223+
default=.false., do_not_log=.true.)
1224+
12041225
if (restore_salt) then
12051226
call get_param(param_file, mdl, "FLUXCONST", CS%Flux_const, &
12061227
"The constant that relates the restoring surface fluxes to the relative "//&
@@ -1507,6 +1528,26 @@ subroutine ice_ocn_bnd_type_chksum(id, timestep, iobt)
15071528
chks = field_chksum( iobt%mass_berg ) ; if (root) write(outunit,100) 'iobt%mass_berg ', chks
15081529
endif
15091530

1531+
! enthalpy
1532+
if (associated(iobt%hrofl)) then
1533+
chks = field_chksum( iobt%hrofl ) ; if (root) write(outunit,100) 'iobt%hrofl ', chks
1534+
endif
1535+
if (associated(iobt%hrofi)) then
1536+
chks = field_chksum( iobt%hrofi ) ; if (root) write(outunit,100) 'iobt%hrofi ', chks
1537+
endif
1538+
if (associated(iobt%hrain)) then
1539+
chks = field_chksum( iobt%hrain ) ; if (root) write(outunit,100) 'iobt%hrain ', chks
1540+
endif
1541+
if (associated(iobt%hsnow)) then
1542+
chks = field_chksum( iobt%hsnow ) ; if (root) write(outunit,100) 'iobt%hsnow ', chks
1543+
endif
1544+
if (associated(iobt%hevap)) then
1545+
chks = field_chksum( iobt%hevap ) ; if (root) write(outunit,100) 'iobt%hevap ', chks
1546+
endif
1547+
if (associated(iobt%hcond)) then
1548+
chks = field_chksum( iobt%hcond ) ; if (root) write(outunit,100) 'iobt%hcond ', chks
1549+
endif
1550+
15101551
100 FORMAT(" CHECKSUM::",A20," = ",Z20)
15111552

15121553
call coupler_type_write_chksums(iobt%fluxes, outunit, 'iobt%')

0 commit comments

Comments
 (0)