Skip to content

Commit b499f67

Browse files
authored
Merge pull request #863 from GEOS-ESM/develop
Sync develop into main
2 parents 7092187 + a08a760 commit b499f67

File tree

5 files changed

+101
-9
lines changed

5 files changed

+101
-9
lines changed

GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_MoistGridComp.F90

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -211,6 +211,7 @@ subroutine SetServices ( GC, RC )
211211
VLOCATION = MAPL_VLocationEdge, &
212212
AVERAGING_INTERVAL = AVRGNINT, &
213213
REFRESH_INTERVAL = RFRSHINT, &
214+
RESTART = MAPL_RestartSkip, &
214215
RC=STATUS )
215216
VERIFY_(STATUS)
216217

@@ -222,6 +223,7 @@ subroutine SetServices ( GC, RC )
222223
VLOCATION = MAPL_VLocationEdge, &
223224
AVERAGING_INTERVAL = AVRGNINT, &
224225
REFRESH_INTERVAL = RFRSHINT, &
226+
RESTART = MAPL_RestartSkip, &
225227
RC=STATUS )
226228
VERIFY_(STATUS)
227229

@@ -233,6 +235,7 @@ subroutine SetServices ( GC, RC )
233235
VLOCATION = MAPL_VLocationEdge, &
234236
AVERAGING_INTERVAL = AVRGNINT, &
235237
REFRESH_INTERVAL = RFRSHINT, &
238+
RESTART = MAPL_RestartSkip, &
236239
RC=STATUS )
237240
VERIFY_(STATUS)
238241

@@ -376,6 +379,7 @@ subroutine SetServices ( GC, RC )
376379
VLOCATION = MAPL_VLocationCenter, &
377380
AVERAGING_INTERVAL = AVRGNINT, &
378381
REFRESH_INTERVAL = RFRSHINT, &
382+
RESTART = MAPL_RestartSkip, &
379383
RC=STATUS )
380384
VERIFY_(STATUS)
381385

@@ -387,6 +391,7 @@ subroutine SetServices ( GC, RC )
387391
VLOCATION = MAPL_VLocationCenter, &
388392
AVERAGING_INTERVAL = AVRGNINT, &
389393
REFRESH_INTERVAL = RFRSHINT, &
394+
RESTART = MAPL_RestartSkip, &
390395
RC=STATUS )
391396
VERIFY_(STATUS)
392397

@@ -398,6 +403,7 @@ subroutine SetServices ( GC, RC )
398403
VLOCATION = MAPL_VLocationCenter, &
399404
AVERAGING_INTERVAL = AVRGNINT, &
400405
REFRESH_INTERVAL = RFRSHINT, &
406+
RESTART = MAPL_RestartSkip, &
401407
RC=STATUS )
402408
VERIFY_(STATUS)
403409

@@ -409,6 +415,7 @@ subroutine SetServices ( GC, RC )
409415
VLOCATION = MAPL_VLocationCenter, &
410416
AVERAGING_INTERVAL = AVRGNINT, &
411417
REFRESH_INTERVAL = RFRSHINT, &
418+
RESTART = MAPL_RestartSkip, &
412419
RC=STATUS )
413420
VERIFY_(STATUS)
414421

@@ -517,6 +524,7 @@ subroutine SetServices ( GC, RC )
517524
SHORT_NAME = 'TAUOROX', &
518525
LONG_NAME = 'surface_eastward_orographic_gravity_wave_stress', &
519526
UNITS = 'N m-2', &
527+
RESTART = MAPL_RestartSkip, &
520528
DIMS = MAPL_DimsHorzOnly, &
521529
VLOCATION = MAPL_VLocationNone, RC=STATUS )
522530
VERIFY_(STATUS)
@@ -525,6 +533,7 @@ subroutine SetServices ( GC, RC )
525533
SHORT_NAME = 'TAUOROY', &
526534
LONG_NAME = 'surface_northward_orographic_gravity_wave_stress', &
527535
UNITS = 'N m-2', &
536+
RESTART = MAPL_RestartSkip, &
528537
DIMS = MAPL_DimsHorzOnly, &
529538
VLOCATION = MAPL_VLocationNone, RC=STATUS )
530539
VERIFY_(STATUS)
@@ -534,6 +543,7 @@ subroutine SetServices ( GC, RC )
534543
SHORT_NAME = 'OMEGA', &
535544
LONG_NAME = 'vertical_pressure_velocity', &
536545
UNITS = 'Pa s-1', &
546+
RESTART = MAPL_RestartSkip, &
537547
DIMS = MAPL_DimsHorzVert, &
538548
VLOCATION = MAPL_VLocationCenter, RC=STATUS )
539549
VERIFY_(STATUS)
@@ -570,6 +580,7 @@ subroutine SetServices ( GC, RC )
570580
SHORT_NAME = 'DTDTDYN', &
571581
LONG_NAME = 'tendency_of_air_temperature_due_to_dynamics', &
572582
UNITS = 'K s-1', &
583+
RESTART = MAPL_RestartSkip, &
573584
DIMS = MAPL_DimsHorzVert, &
574585
VLOCATION = MAPL_VLocationCenter, RC=STATUS )
575586
VERIFY_(STATUS)
@@ -578,6 +589,7 @@ subroutine SetServices ( GC, RC )
578589
SHORT_NAME = 'DQVDTDYN', &
579590
LONG_NAME = 'tendency_of_specific_humidity_due_to_dynamics', &
580591
UNITS = 'kg/kg/s', &
592+
RESTART = MAPL_RestartSkip, &
581593
DIMS = MAPL_DimsHorzVert, &
582594
VLOCATION = MAPL_VLocationCenter, RC=STATUS )
583595
VERIFY_(STATUS)
@@ -586,6 +598,7 @@ subroutine SetServices ( GC, RC )
586598
SHORT_NAME = 'QV_DYN_IN', &
587599
LONG_NAME = 'spec_humidity_at_begin_of_time_step', &
588600
UNITS = 'kg kg-1', &
601+
RESTART = MAPL_RestartSkip, &
589602
DIMS = MAPL_DimsHorzVert, &
590603
VLOCATION = MAPL_VLocationCenter, RC=STATUS )
591604
VERIFY_(STATUS)
@@ -594,6 +607,7 @@ subroutine SetServices ( GC, RC )
594607
SHORT_NAME = 'T_DYN_IN', &
595608
LONG_NAME = 'temperature_at_begin_of_time_step', &
596609
UNITS = 'K', &
610+
RESTART = MAPL_RestartSkip, &
597611
DIMS = MAPL_DimsHorzVert, &
598612
VLOCATION = MAPL_VLocationCenter, RC=STATUS )
599613
VERIFY_(STATUS)
@@ -602,6 +616,7 @@ subroutine SetServices ( GC, RC )
602616
SHORT_NAME = 'U_DYN_IN', &
603617
LONG_NAME = 'u_wind_at_begin_of_time_step', &
604618
UNITS = 'm s-1', &
619+
RESTART = MAPL_RestartSkip, &
605620
DIMS = MAPL_DimsHorzVert, &
606621
VLOCATION = MAPL_VLocationCenter, RC=STATUS )
607622
VERIFY_(STATUS)
@@ -610,6 +625,7 @@ subroutine SetServices ( GC, RC )
610625
SHORT_NAME = 'V_DYN_IN', &
611626
LONG_NAME = 'v_wind_at_begin_of_time_step', &
612627
UNITS = 'm s-1', &
628+
RESTART = MAPL_RestartSkip, &
613629
DIMS = MAPL_DimsHorzVert, &
614630
VLOCATION = MAPL_VLocationCenter, RC=STATUS )
615631
VERIFY_(STATUS)
@@ -618,6 +634,7 @@ subroutine SetServices ( GC, RC )
618634
SHORT_NAME = 'PLE_DYN_IN', &
619635
LONG_NAME = 'edge_pressure_at_begin_of_time_step', &
620636
UNITS = 'Pa', &
637+
RESTART = MAPL_RestartSkip, &
621638
DIMS = MAPL_DimsHorzVert, &
622639
VLOCATION = MAPL_VLocationEdge, RC=STATUS )
623640
VERIFY_(STATUS)
@@ -711,6 +728,7 @@ subroutine SetServices ( GC, RC )
711728
LONG_NAME = 'surface geopotential height', &
712729
UNITS = 'm+2 s-2', &
713730
SHORT_NAME = 'PHIS', &
731+
RESTART = MAPL_RestartSkip, &
714732
DIMS = MAPL_DimsHorzOnly, &
715733
VLOCATION = MAPL_VLocationNone, &
716734
RC=STATUS )
@@ -5830,7 +5848,7 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC )
58305848
if (associated(PTR3D)) PTR3D = QILS+QICN
58315849

58325850
call MAPL_GetPointer(EXPORT, PTR3D, 'QCTOT', RC=STATUS); VERIFY_(STATUS)
5833-
if (associated(PTR3D)) PTR3D = MIN(CLLS+CLCN,1.0)
5851+
if (associated(PTR3D)) PTR3D = QLLS+QLCN+QILS+QICN
58345852

58355853
! Cloud condensate exports
58365854
call MAPL_GetPointer(EXPORT, PTR3D, 'QLLSX1', RC=STATUS); VERIFY_(STATUS)

GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSsurface_GridComp/Utils/Raster/makebcs/make_bcs_questionary.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -312,7 +312,7 @@ def ask_questions(default_grid="Cubed-Sphere"):
312312
"T3 -- Tripolar (MOM5-Tripolar-Ocean: $720x410$ )", \
313313
"T4 -- Tripolar (MOM5-Tripolar-Ocean: $1440x1080$)", \
314314
"T1MOM6 -- Tripolar (MOM6-Tripolar-Ocean: $72x36$ )", \
315-
"T3MOM6 -- Tripolar (MOM6-Tripolar-Ocean: $580x458$ )", \
315+
"T3MOM6 -- Tripolar (MOM6-Tripolar-Ocean: $540x458$ )", \
316316
"T4MOM6 -- Tripolar (MOM6-Tripolar-Ocean: $1440x1080$)", \
317317
"CS -- Cubed-Sphere Ocean (Cubed-Sphere Data-Ocean)"],
318318
"when": lambda x: "Stretched_CS" == x['grid_type'] or "Cubed-Sphere" == x['grid_type'],

GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSsurface_GridComp/Utils/Raster/makebcs/make_bcs_shared.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ def get_change_til_file(grid_type):
5050
if( {TRIPOL_OCEAN} == True ) then
5151
cat > sedfile << EOF
5252
s/CF{NC}x6C/PE{nc}x{nc6}-CF/g
53-
s/{OCEAN_VERSION}{DATENAME}{IMO}x{POLENAME}{JMO}-Pfafstetter/PE{imo}x{jmo}-{DATENAME}/g
53+
s/{OCEAN_VERSION}{DATENAME}{IMO}x{POLENAME}{JMO}-Pfafstetter/PE{imo}x{jmo}-{OCEAN_VERSION}/g
5454
EOF
5555
sed -f sedfile {GRIDNAME}{RS}.til > tile.file
5656
/bin/mv -f tile.file {GRIDNAME}{RS}.til

GEOSogcm_GridComp/GEOSseaice_GridComp/CICE_GEOSPlug/CICE_GEOSPlug.F90

Lines changed: 79 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ module CICE_GEOSPlugMod
2323
use CICE_FinalMod
2424
use CICE_RunMod
2525
use ice_import_export
26+
use ice_record_mod
2627

2728

2829
implicit none
@@ -33,6 +34,7 @@ module CICE_GEOSPlugMod
3334

3435
integer :: NUM_ICE_CATEGORIES
3536
logical, private :: ice_grid_init2
37+
logical, private :: running_regular_replay
3638

3739
contains
3840

@@ -80,6 +82,7 @@ subroutine SetServices ( GC, RC )
8082
Iam = trim(COMP_NAME) // Iam
8183

8284
ice_grid_init2 = .false.
85+
running_regular_replay = .false.
8386

8487
call ESMF_ConfigGetAttribute(CF, NUM_ICE_CATEGORIES, Label="CICE_N_ICE_CATEGORIES:" , RC=STATUS)
8588
VERIFY_(STATUS)
@@ -91,6 +94,7 @@ subroutine SetServices ( GC, RC )
9194
call MAPL_GridCompSetEntryPoint ( GC, ESMF_METHOD_RUN, Run, _RC)
9295
call MAPL_GridCompSetEntryPoint ( GC, ESMF_METHOD_FINALIZE, Finalize, _RC)
9396
call MAPL_GridCompSetEntryPoint ( GC, ESMF_METHOD_WRITERESTART, Record, _RC)
97+
call MAPL_GridCompSetEntryPoint ( GC, ESMF_METHOD_READRESTART, Refresh, _RC)
9498

9599
! Set the state variable specs.
96100
! -----------------------------
@@ -435,6 +439,7 @@ subroutine Initialize ( GC, IMPORT, EXPORT, CLOCK, RC )
435439
integer :: OGCM_NX, OGCM_NY
436440
integer :: BLK_NX, BLK_NY
437441
integer :: counts(7)
442+
character(len=ESMF_MAXSTR) :: ReplayMode
438443

439444
! Locals with ESMF and MAPL types
440445

@@ -499,6 +504,7 @@ subroutine Initialize ( GC, IMPORT, EXPORT, CLOCK, RC )
499504

500505
call MAPL_GetResource(MAPL,DT_SEAICE, Label="RUN_DT:", _RC) ! Get AGCM Heartbeat
501506
call MAPL_GetResource(MAPL,DT_SEAICE, Label="OCEAN_DT:", DEFAULT=DT_SEAICE, _RC) ! set Default OCEAN_DT to AGCM Heartbeat
507+
call MAPL_GetResource(MAPL, ReplayMode, 'REPLAY_MODE:', default="NoReplay", _RC)
502508

503509
! Set the time for CICE
504510
!---------------------
@@ -574,6 +580,10 @@ subroutine Initialize ( GC, IMPORT, EXPORT, CLOCK, RC )
574580
!=====================================================================================
575581

576582

583+
if(adjustl(ReplayMode)=="Regular") then
584+
running_regular_replay = .true.
585+
call alloc_record_state
586+
endif
577587

578588
call MAPL_TimerOff(MAPL,"TOTAL" )
579589

@@ -943,18 +953,15 @@ subroutine Record ( GC, IMPORT, EXPORT, CLOCK, RC )
943953

944954
call MAPL_GetObjectFromGC ( GC, MAPL, _RC)
945955

946-
! Profilers
947-
!----------
948-
949956
call MAPL_TimerOn(MAPL,"TOTAL")
950957

958+
call MAPL_GenericRecord (GC, IMPORT, EXPORT, CLOCK, _RC)
959+
960+
951961
doRecord = MAPL_RecordAlarmIsRinging(MAPL, MODE=MAPL_Write2Disk, _RC)
952962

953963
if (doRecord) then
954964

955-
! Get the private internal state
956-
!--------------------------------
957-
958965

959966
call MAPL_DateStampGet(clock, timeStamp, _RC)
960967

@@ -965,11 +972,74 @@ subroutine Record ( GC, IMPORT, EXPORT, CLOCK, RC )
965972

966973
end if
967974

975+
doRecord = MAPL_RecordAlarmIsRinging(MAPL, MODE=MAPL_Write2Ram, _RC)
976+
977+
if (doRecord) then
978+
979+
! Save thermo states for replay corrector
980+
!-----------------
981+
982+
call save_record_state
983+
984+
end if
985+
968986
call MAPL_TimerOff(MAPL,"TOTAL")
969987
RETURN_(ESMF_SUCCESS)
970988

971989
end subroutine Record
972990

991+
! !IROUTINE: Refresh -- Refresh method (regular replay)
992+
993+
! !INTERFACE:
994+
995+
subroutine Refresh ( GC, IMPORT, EXPORT, CLOCK, RC )
996+
997+
! !ARGUMENTS:
998+
999+
type(ESMF_GridComp), intent(INOUT) :: GC ! Gridded component
1000+
type(ESMF_State), intent(INOUT) :: IMPORT ! Import state
1001+
type(ESMF_State), intent(INOUT) :: EXPORT ! Export state
1002+
type(ESMF_Clock), intent(INOUT) :: CLOCK ! The supervisor clock
1003+
integer, optional, intent( OUT) :: RC ! Error code
1004+
1005+
!EOP
1006+
1007+
type(MAPL_MetaComp), pointer :: MAPL
1008+
1009+
! ErrLog Variables
1010+
1011+
character(len=ESMF_MAXSTR) :: COMP_NAME
1012+
1013+
! Locals
1014+
character(len=14) :: timeStamp
1015+
logical :: doRecord
1016+
1017+
__Iam__('Restore')
1018+
1019+
! Get the target components name and set-up traceback handle.
1020+
! -----------------------------------------------------------
1021+
1022+
call ESMF_GridCompGet( GC, NAME=COMP_NAME, _RC)
1023+
Iam = trim(COMP_NAME)//'::'//Iam
1024+
1025+
! Get my internal MAPL_Generic state
1026+
!-----------------------------------
1027+
1028+
call MAPL_GetObjectFromGC ( GC, MAPL, _RC)
1029+
1030+
call MAPL_TimerOn(MAPL,"TOTAL")
1031+
1032+
! Restore thermo states for replay corrector
1033+
!-----------------
1034+
1035+
call restore_record_state
1036+
1037+
1038+
call MAPL_TimerOff(MAPL,"TOTAL")
1039+
RETURN_(ESMF_SUCCESS)
1040+
1041+
end subroutine Refresh
1042+
9731043
!====================================================================
9741044

9751045
! !IROUTINE: Finalize -- Finalize method for CICE wrapper
@@ -1077,6 +1147,9 @@ subroutine thermo_coupling(state, rc)
10771147
call ice_import_grid(FRO, rc=STATUS)
10781148
VERIFY_(STATUS)
10791149
call cice_init2
1150+
if (running_regular_replay) then
1151+
call save_record_state
1152+
endif
10801153
ice_grid_init2 = .TRUE.
10811154
endif
10821155

GEOSogcm_GridComp/GEOSseaice_GridComp/CICE_GEOSPlug/cice6_cmake/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,7 @@ list( APPEND CICE6_SRCS
106106
cicecore/drivers/mapl/geos/ice_import_export.F90
107107
cicecore/drivers/mapl/geos/ice_shr_methods.F90
108108
cicecore/drivers/mapl/geos/ice_prescribed_mod.F90
109+
cicecore/drivers/mapl/geos/ice_record_mod.F90
109110
)
110111

111112

0 commit comments

Comments
 (0)