From 601080cd541c22ca0df9829f78749e1f6eb314ec Mon Sep 17 00:00:00 2001 From: Benjamin Auer Date: Wed, 2 Feb 2022 17:04:45 -0500 Subject: [PATCH 01/28] in replay run history --- GEOS_GcmGridComp.F90 | 99 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 97 insertions(+), 2 deletions(-) diff --git a/GEOS_GcmGridComp.F90 b/GEOS_GcmGridComp.F90 index b32d3bb2e..eaf0ff3a3 100644 --- a/GEOS_GcmGridComp.F90 +++ b/GEOS_GcmGridComp.F90 @@ -21,7 +21,9 @@ module GEOS_GcmGridCompMod use GEOS_mkiauGridCompMod, only: AIAU_SetServices => SetServices use DFI_GridCompMod, only: ADFI_SetServices => SetServices use GEOS_OgcmGridCompMod, only: OGCM_SetServices => SetServices - + use MAPL_HistoryGridCompMod, only: Hist_SetServices => SetServices + use MAPL_HistoryGridCompMod, only: HISTORY_ExchangeListWrap + use iso_fortran_env implicit none private @@ -50,6 +52,7 @@ module GEOS_GcmGridCompMod integer :: OGCM integer :: AIAU integer :: ADFI +integer :: hist integer :: bypass_ogcm integer :: k @@ -76,6 +79,7 @@ module GEOS_GcmGridCompMod logical :: checkpointRequested = .false. character(len=ESMF_MAXSTR) :: checkpointFilename = '' character(len=ESMF_MAXSTR) :: checkpointFileType = '' + type(ESMF_GridComp) :: history_parent end type T_GCM_STATE ! Wrapper for extracting internal state @@ -613,7 +617,9 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) ExtDataWrap%ptr => extdata_internal_state call ESMF_UserCompSetInternalState( GC, 'ExtData_state',ExtDataWrap,status) - VERIFY_(STATUS) + VERIFY_(STATUS) + + call history_setservice(_RC) end if @@ -646,6 +652,30 @@ subroutine SetServices ( GC, RC ) contains + subroutine history_setservice(rc) + integer, intent(out), optional :: rc + + integer :: status + type(ESMF_Config) :: hist_cf + type(MAPL_MetaComp), pointer :: history_metaobj + type(StubComponent) :: stub_component + integer :: run_dt + character(len=ESMF_MAXSTR) :: replay_history + + hist_cf = ESMF_ConfigCreate(_RC) + call MAPL_GetResource(MAPL,replay_history,"REPLAY_HISTORY_RC:",_RC) + call ESMF_ConfigLoadFile(hist_cf,trim(replay_history),_RC) + call MAPL_GetResource(MAPL,run_dt,"RUN_DT:",_RC) + call MAPL_ConfigSetAttribute(hist_cf,value=run_dt,label="RUN_DT:",_RC) + gcm_internal_state%history_parent = ESMF_GridCompCreate(name="History_GCM_parent",config=hist_cf,_RC) + history_metaobj => null() + call MAPL_InternalStateCreate(gcm_internal_state%history_parent,history_metaobj,_RC) + call MAPL_Set(history_metaobj,cf=hist_cf,name="History_GCM_parent",component=stub_component,_RC) + hist = MAPL_AddChild(history_metaobj,name="History_GCM",ss=hist_setservices,_RC) + + _RETURN(_SUCCESS) + end subroutine history_setservice + subroutine OBIO_TerminateImports(DO_DATAATM, RC) integer, intent(IN ) :: DO_DATAATM @@ -1297,12 +1327,52 @@ subroutine Initialize ( GC, IMPORT, EXPORT, CLOCK, RC ) if ( MAPL_am_I_root() ) call ESMF_StatePrint ( EXPORT, rc=STATUS ) #endif + if(gcm_internal_state%rplRegular) then + call initialize_history(_RC) + end if + call MAPL_TimerOff(MAPL,"TOTAL") call MAPL_TimerOff(MAPL,"INITIALIZE") RETURN_(ESMF_SUCCESS) contains + + subroutine initialize_history(rc) + integer, optional, intent(Out) :: rc + + integer :: status,user_status + type(ESMF_State), allocatable :: gcm_exports(:),hist_imports(:),hist_exports(:) + type(ESMF_GridComp), allocatable :: hist_gcs(:) + type(ESMF_GridComp), allocatable :: gcm_gcs(:) + type(MAPL_MetaComp), pointer :: history_metaobj + type(HISTORY_ExchangeListWrap) :: lswrap + integer(kind=INT64), pointer :: LSADDR(:) => null() + + call MAPL_GetObjectFromGC ( gcm_internal_state%history_parent, history_metaobj, _RC) + + call MAPL_Get(mapl,childrens_export_states = gcm_exports, childrens_gridcomps = gcm_gcs, _RC) + + call MAPL_Get(history_metaobj, & + childrens_export_states = hist_exports, & + childrens_import_states = hist_imports, & + childrens_gridcomps = hist_gcs, _RC) + + allocate(lswrap%ptr, stat = status) + _VERIFY(STATUS) + call ESMF_UserCompSetInternalState(hist_gcs(hist), 'MAPL_LocStreamList', & + lswrap, _RC) + call MAPL_GetAllExchangeGrids(gcm_gcs(agcm), LSADDR, _RC) + lswrap%ptr%LSADDR_PTR => LSADDR + + call ESMF_StateAdd(hist_imports(hist),[gcm_exports(agcm)],_RC) + call ESMF_GridCompInitialize(hist_gcs(hist),importState=hist_imports(hist),& + exportState=hist_exports(hist),& + clock=clock,userRC=user_status,_RC) + + _RETURN(_SUCCESS) + end subroutine initialize_history + subroutine AllocateExports(STATE, NAMES, RC) type(ESMF_State) , intent(INOUT) :: STATE character(len=*) , intent(IN ) :: NAMES(:) @@ -1701,6 +1771,8 @@ subroutine Run ( GC, IMPORT, EXPORT, CLOCK, RC ) call ESMF_VMBarrier(VM, rc=status) VERIFY_(STATUS) + call run_history(_RC) + DONE = ESMF_AlarmIsRinging(GCM_INTERNAL_STATE%replayStopAlarm, RC=STATUS) VERIFY_(STATUS) if ( DONE ) exit @@ -1826,6 +1898,29 @@ subroutine Run ( GC, IMPORT, EXPORT, CLOCK, RC ) RETURN_(ESMF_SUCCESS) contains + + subroutine run_history(rc) + integer, optional, intent(out) :: rc + + integer :: user_status,status + type(ESMF_State), allocatable :: gcm_exports(:),hist_imports(:),hist_exports(:) + type(ESMF_GridComp), allocatable :: hist_gcs(:) + type(MAPL_MetaComp), pointer :: history_metaobj + + call MAPL_GetObjectFromGC ( gcm_internal_state%history_parent, history_metaobj, _RC) + + call MAPL_Get(history_metaobj, & + childrens_export_states = hist_exports, & + childrens_import_states = hist_imports, & + childrens_gridcomps = hist_gcs, _RC) + + call ESMF_GridCompRun(hist_gcs(hist),importState=hist_imports(hist),& + exportState=hist_exports(hist),& + clock=clock,userRC=user_status,_RC) + _RETURN(_SUCCESS) + + end subroutine run_history + subroutine RUN_OCEAN(phase, rc) integer, optional, intent(IN) :: phase integer, optional, intent(OUT) :: rc From d2035b387cdef8f6a0bd875e2d86fd3b38258c53 Mon Sep 17 00:00:00 2001 From: Benjamin Auer Date: Tue, 8 Feb 2022 16:47:20 -0500 Subject: [PATCH 02/28] add the ability to run history in the predictor phase --- GEOS_GcmGridComp.F90 | 40 +++++++++++++++++++++++++--------------- 1 file changed, 25 insertions(+), 15 deletions(-) diff --git a/GEOS_GcmGridComp.F90 b/GEOS_GcmGridComp.F90 index eaf0ff3a3..3c15cb7b0 100644 --- a/GEOS_GcmGridComp.F90 +++ b/GEOS_GcmGridComp.F90 @@ -80,6 +80,7 @@ module GEOS_GcmGridCompMod character(len=ESMF_MAXSTR) :: checkpointFilename = '' character(len=ESMF_MAXSTR) :: checkpointFileType = '' type(ESMF_GridComp) :: history_parent + logical :: run_history = .false. end type T_GCM_STATE ! Wrapper for extracting internal state @@ -656,23 +657,30 @@ subroutine history_setservice(rc) integer, intent(out), optional :: rc integer :: status - type(ESMF_Config) :: hist_cf + type(ESMF_Config) :: hist_cf, gcm_cf type(MAPL_MetaComp), pointer :: history_metaobj type(StubComponent) :: stub_component integer :: run_dt character(len=ESMF_MAXSTR) :: replay_history - - hist_cf = ESMF_ConfigCreate(_RC) - call MAPL_GetResource(MAPL,replay_history,"REPLAY_HISTORY_RC:",_RC) - call ESMF_ConfigLoadFile(hist_cf,trim(replay_history),_RC) - call MAPL_GetResource(MAPL,run_dt,"RUN_DT:",_RC) - call MAPL_ConfigSetAttribute(hist_cf,value=run_dt,label="RUN_DT:",_RC) - gcm_internal_state%history_parent = ESMF_GridCompCreate(name="History_GCM_parent",config=hist_cf,_RC) - history_metaobj => null() - call MAPL_InternalStateCreate(gcm_internal_state%history_parent,history_metaobj,_RC) - call MAPL_Set(history_metaobj,cf=hist_cf,name="History_GCM_parent",component=stub_component,_RC) - hist = MAPL_AddChild(history_metaobj,name="History_GCM",ss=hist_setservices,_RC) - + logical :: is_present + + call ESMF_GridCompGet(gc,config=gcm_cf,_RC) + call ESMF_ConfigFindLabel(gcm_cf,"REPLAY_HISTORY_RC:",isPresent=is_present,_RC) + + if (is_present) then + gcm_internal_state%run_history = .true. + call MAPL_GetResource(MAPL,replay_history,"REPLAY_HISTORY_RC:",_RC) + hist_cf = ESMF_ConfigCreate(_RC) + call ESMF_ConfigLoadFile(hist_cf,trim(replay_history),_RC) + call MAPL_GetResource(MAPL,run_dt,"RUN_DT:",_RC) + call MAPL_ConfigSetAttribute(hist_cf,value=run_dt,label="RUN_DT:",_RC) + call MAPL_ConfigSetAttribute(hist_cf,value=replay_history,label="HIST_CF:",_RC) + gcm_internal_state%history_parent = ESMF_GridCompCreate(name="History_GCM_parent",config=hist_cf,_RC) + history_metaobj => null() + call MAPL_InternalStateCreate(gcm_internal_state%history_parent,history_metaobj,_RC) + call MAPL_Set(history_metaobj,cf=hist_cf,name="History_GCM_parent",component=stub_component,_RC) + hist = MAPL_AddChild(history_metaobj,name="History_GCM",ss=hist_setservices,_RC) + end if _RETURN(_SUCCESS) end subroutine history_setservice @@ -1327,7 +1335,7 @@ subroutine Initialize ( GC, IMPORT, EXPORT, CLOCK, RC ) if ( MAPL_am_I_root() ) call ESMF_StatePrint ( EXPORT, rc=STATUS ) #endif - if(gcm_internal_state%rplRegular) then + if(gcm_internal_state%rplRegular .and. gcm_internal_state%run_history) then call initialize_history(_RC) end if @@ -1771,7 +1779,9 @@ subroutine Run ( GC, IMPORT, EXPORT, CLOCK, RC ) call ESMF_VMBarrier(VM, rc=status) VERIFY_(STATUS) - call run_history(_RC) + if (gcm_internal_state%run_history) then + call run_history(_RC) + end if DONE = ESMF_AlarmIsRinging(GCM_INTERNAL_STATE%replayStopAlarm, RC=STATUS) VERIFY_(STATUS) From b01eef13a210bd50e62509807ea480a4df5db200 Mon Sep 17 00:00:00 2001 From: Benjamin Auer Date: Wed, 9 Feb 2022 17:13:54 -0500 Subject: [PATCH 03/28] eliminate read forcing for sst's and ice fraction. create imports that can be fill via ExtData --- .../GEOS_DataSeaGridComp.F90 | 18 +++++++------ GEOSogcm_GridComp/GEOS_OgcmGridComp.F90 | 3 ++- .../GEOS_DataSeaIceGridComp.F90 | 26 +++++++++++-------- 3 files changed, 27 insertions(+), 20 deletions(-) diff --git a/GEOSogcm_GridComp/GEOS_OceanGridComp/GEOSdatasea_GridComp/GEOS_DataSeaGridComp.F90 b/GEOSogcm_GridComp/GEOS_OceanGridComp/GEOSdatasea_GridComp/GEOS_DataSeaGridComp.F90 index 10e001058..a1bc008c1 100644 --- a/GEOSogcm_GridComp/GEOS_OceanGridComp/GEOSdatasea_GridComp/GEOS_DataSeaGridComp.F90 +++ b/GEOSogcm_GridComp/GEOS_OceanGridComp/GEOSdatasea_GridComp/GEOS_DataSeaGridComp.F90 @@ -102,6 +102,13 @@ subroutine SetServices ( GC, RC ) ! !Export state: + call MAPL_AddImportSpec(GC, & + SHORT_NAME = 'DATA_SST', & + LONG_NAME = 'sea_surface_temperature', & + UNITS = 'K', & + DIMS = MAPL_DimsHorzOnly, & + VLOCATION = MAPL_VLocationNone, _RC) + call MAPL_AddExportSpec(GC, & SHORT_NAME = 'UW', & LONG_NAME = 'zonal_velocity_of_surface_water', & @@ -202,7 +209,6 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) type (MAPL_MetaComp), pointer :: MAPL type (ESMF_Time) :: CurrentTime - character(len=ESMF_MAXSTR) :: DATASeaFILE ! character(len=ESMF_MAXSTR) :: DATASeaSalFILE integer :: IFCST logical :: FCST @@ -229,6 +235,7 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) real, pointer, dimension(:,:) :: FI + real, pointer, dimension(:,:) :: data_sst ! Begin... !---------- @@ -275,12 +282,6 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) call ESMF_ClockGet(CLOCK, currTime=CurrentTime, RC=STATUS) VERIFY_(STATUS) -! Get the SST bcs file name from the resource file -!------------------------------------------------- - - call MAPL_GetResource(MAPL,DATASeaFILE,LABEL="DATA_SST_FILE:", RC=STATUS) - VERIFY_(STATUS) - ! Get the SSS bcs file name from the resource file !------------------------------------------------- @@ -321,8 +322,9 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) ! Read bulk SST from retrieval !------------------------------ - call MAPL_ReadForcing(MAPL,'SST',DATASeaFILE, CURRENTTIME, SST, INIT_ONLY=FCST, RC=STATUS) + call MAPL_GetPointer(import, data_sst , 'data_SST' , RC=STATUS) VERIFY_(STATUS) + sst = data_sst ! Read bulk SSS from retrieval !------------------------------ diff --git a/GEOSogcm_GridComp/GEOS_OgcmGridComp.F90 b/GEOSogcm_GridComp/GEOS_OgcmGridComp.F90 index 1a8ae5d4a..913b7527e 100644 --- a/GEOSogcm_GridComp/GEOS_OgcmGridComp.F90 +++ b/GEOSogcm_GridComp/GEOS_OgcmGridComp.F90 @@ -771,7 +771,8 @@ subroutine SetServices ( GC, RC ) ! Children's imports are in the ocean grid and are all satisfied ! by OGCM from exchange grid quantities. - call MAPL_TerminateImport ( GC, ALL=.true., RC=STATUS ) + !call MAPL_TerminateImport ( GC, ALL=.true., RC=STATUS ) + call MAPL_TerminateImport ( GC, ["DATA_SST","DATA_ICE"], [ocean,seaice], RC=STATUS ) ! Set the Profiling timers ! ------------------------ diff --git a/GEOSogcm_GridComp/GEOSseaice_GridComp/GEOSdataseaice_GridComp/GEOS_DataSeaIceGridComp.F90 b/GEOSogcm_GridComp/GEOSseaice_GridComp/GEOSdataseaice_GridComp/GEOS_DataSeaIceGridComp.F90 index 369146458..8e2896c57 100644 --- a/GEOSogcm_GridComp/GEOSseaice_GridComp/GEOSdataseaice_GridComp/GEOS_DataSeaIceGridComp.F90 +++ b/GEOSogcm_GridComp/GEOSseaice_GridComp/GEOSdataseaice_GridComp/GEOS_DataSeaIceGridComp.F90 @@ -141,6 +141,15 @@ subroutine SetServices ( GC, RC ) ! !Import state: + call MAPL_AddImportSpec(GC, & + SHORT_NAME = 'DATA_ICE', & + LONG_NAME = 'test import', & + UNITS = 'm', & + DIMS = MAPL_DimsHorzOnly, & + VLOCATION = MAPL_VLocationNone, & + rc=status) + VERIFY_(status) + call MAPL_AddImportSpec(GC, & SHORT_NAME = 'HI', & LONG_NAME = 'seaice_skin_layer_depth', & @@ -370,7 +379,6 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) logical :: FRIENDLY type(ESMF_FIELD) :: FIELD type (ESMF_Time) :: CurrentTime - character(len=ESMF_MAXSTR) :: DATAFRTFILE integer :: IFCST logical :: FCST ! real, pointer, dimension(:,:) :: MELT => null() @@ -432,6 +440,8 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) real, allocatable, dimension(:,:) :: FRT real :: f + real, pointer :: DATA_ice(:,:) + ! above were for CICE Thermo @@ -464,6 +474,8 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) call MAPL_TimerOn(MAPL,"TOTAL") call MAPL_TimerOn(MAPL,"RUN" ) + call MAPL_GetPointer(IMPORT, DATA_ice , 'DATA_ICE', RC=STATUS) + VERIFY_(STATUS) ! Pointers to Imports !-------------------- @@ -509,12 +521,6 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) call ESMF_ClockGet(CLOCK, currTime=CurrentTime, rc=STATUS) VERIFY_(STATUS) -! Get the file name from the resource file -!----------------------------------------- - - call MAPL_GetResource(MAPL,DATAFRTFILE,LABEL="DATA_FRT_FILE:", RC=STATUS) - VERIFY_(STATUS) - ! In atmospheric forecast mode we do not have future Sea Ice Conc !--------------------------------------------------------------- @@ -559,8 +565,7 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) if (DO_CICE_THERMO == 0) then if(associated(FR)) then - call MAPL_ReadForcing(MAPL,'FRT',DATAFRTFILE, CURRENTTIME, FR, INIT_ONLY=FCST, RC=STATUS) - VERIFY_(STATUS) + FR = data_ice if (any(FR < 0.0) .or. any(FR > 1.0)) then if(MAPL_AM_I_ROOT()) print *, 'Error in fraci file. Negative or larger-than-one fraction found' @@ -568,8 +573,7 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) endif end if else - call MAPL_ReadForcing(MAPL,'FRT',DATAFRTFILE, CURRENTTIME, FRT, INIT_ONLY=FCST, RC=STATUS) - VERIFY_(STATUS) + frt = data_ice ! Sanity checks do I=1, size(FRT,1) From 774334667eee6ea3bd5a13be3c03bc662f235ac4 Mon Sep 17 00:00:00 2001 From: Benjamin Auer Date: Wed, 9 Feb 2022 17:29:10 -0500 Subject: [PATCH 04/28] case bug in last commit --- .../GEOSdatasea_GridComp/GEOS_DataSeaGridComp.F90 | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/GEOSogcm_GridComp/GEOS_OceanGridComp/GEOSdatasea_GridComp/GEOS_DataSeaGridComp.F90 b/GEOSogcm_GridComp/GEOS_OceanGridComp/GEOSdatasea_GridComp/GEOS_DataSeaGridComp.F90 index a1bc008c1..0395d560e 100644 --- a/GEOSogcm_GridComp/GEOS_OceanGridComp/GEOSdatasea_GridComp/GEOS_DataSeaGridComp.F90 +++ b/GEOSogcm_GridComp/GEOS_OceanGridComp/GEOSdatasea_GridComp/GEOS_DataSeaGridComp.F90 @@ -322,16 +322,10 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) ! Read bulk SST from retrieval !------------------------------ - call MAPL_GetPointer(import, data_sst , 'data_SST' , RC=STATUS) + call MAPL_GetPointer(import, data_sst , 'SATA_SST' , RC=STATUS) VERIFY_(STATUS) sst = data_sst -! Read bulk SSS from retrieval -!------------------------------ - -! call MAPL_ReadForcing(MAPL,'SSS',DATASeaSalFILE, CURRENTTIME, SSS, INIT_ONLY=FCST, RC=STATUS) -! VERIFY_(STATUS) - call MAPL_TimerOff(MAPL,"-UPDATE" ) ! Update the exports From 5e56b38969173786fbb4aca6c0aa94e5fe205884 Mon Sep 17 00:00:00 2001 From: Benjamin Auer Date: Thu, 10 Feb 2022 11:35:30 -0500 Subject: [PATCH 05/28] fix typo --- .../GEOSdatasea_GridComp/GEOS_DataSeaGridComp.F90 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/GEOSogcm_GridComp/GEOS_OceanGridComp/GEOSdatasea_GridComp/GEOS_DataSeaGridComp.F90 b/GEOSogcm_GridComp/GEOS_OceanGridComp/GEOSdatasea_GridComp/GEOS_DataSeaGridComp.F90 index 0395d560e..782dfa8a2 100644 --- a/GEOSogcm_GridComp/GEOS_OceanGridComp/GEOSdatasea_GridComp/GEOS_DataSeaGridComp.F90 +++ b/GEOSogcm_GridComp/GEOS_OceanGridComp/GEOSdatasea_GridComp/GEOS_DataSeaGridComp.F90 @@ -322,7 +322,7 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) ! Read bulk SST from retrieval !------------------------------ - call MAPL_GetPointer(import, data_sst , 'SATA_SST' , RC=STATUS) + call MAPL_GetPointer(import, data_sst , 'DATA_SST' , RC=STATUS) VERIFY_(STATUS) sst = data_sst From 0ed7dc75207a8ad865e209f70422babbf270618c Mon Sep 17 00:00:00 2001 From: sanAkel Date: Sun, 13 Feb 2022 13:53:08 -0500 Subject: [PATCH 06/28] added import spec for kpar <-- @bmauer, please check! --- GEOSogcm_GridComp/GEOS_OgcmGridComp.F90 | 2 +- .../GEOS_OradBioGridComp.F90 | 20 +++++++++++++---- .../GEOS_OradGridComp/GEOS_OradGridComp.F90 | 22 +++++++++++++++---- 3 files changed, 35 insertions(+), 9 deletions(-) diff --git a/GEOSogcm_GridComp/GEOS_OgcmGridComp.F90 b/GEOSogcm_GridComp/GEOS_OgcmGridComp.F90 index 913b7527e..2426a63b3 100644 --- a/GEOSogcm_GridComp/GEOS_OgcmGridComp.F90 +++ b/GEOSogcm_GridComp/GEOS_OgcmGridComp.F90 @@ -772,7 +772,7 @@ subroutine SetServices ( GC, RC ) ! by OGCM from exchange grid quantities. !call MAPL_TerminateImport ( GC, ALL=.true., RC=STATUS ) - call MAPL_TerminateImport ( GC, ["DATA_SST","DATA_ICE"], [ocean,seaice], RC=STATUS ) + call MAPL_TerminateImport ( GC, ["DATA_SST","DATA_ICE","DATA_KPAR"], [ocean,seaice,orad], RC=STATUS ) ! Set the Profiling timers ! ------------------------ diff --git a/GEOSogcm_GridComp/GEOS_OradBioGridComp/GEOS_OradBioGridComp.F90 b/GEOSogcm_GridComp/GEOS_OradBioGridComp/GEOS_OradBioGridComp.F90 index ad44bbfaf..28e505bac 100644 --- a/GEOSogcm_GridComp/GEOS_OradBioGridComp/GEOS_OradBioGridComp.F90 +++ b/GEOSogcm_GridComp/GEOS_OradBioGridComp/GEOS_OradBioGridComp.F90 @@ -435,6 +435,15 @@ subroutine SetServices ( GC, RC ) RC=STATUS ) VERIFY_(STATUS) + call MAPL_AddImportSpec(GC, & + SHORT_NAME = 'data_kpar', & + LONG_NAME = 'PAR_extinction_coefficient', & + UNITS = 'm-1', & + DIMS = MAPL_DimsHorzOnly, & + VLOCATION = MAPL_VLocationNone, & + RC=STATUS ) + VERIFY_(STATUS) + ! !EXPORT STATE: call MAPL_AddExportSpec(GC, & @@ -704,7 +713,7 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) real, pointer, dimension(:,:) :: CLDTC => null() real, pointer, dimension(:,:) :: RLWP => null() real, pointer, dimension(:,:) :: CDRE => null() - + real, pointer, dimension(:,:) :: data_kpar !============================================================================= @@ -801,10 +810,13 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) ! Get KPAR from data file !------------------------ - call MAPL_GetResource(MAPL,DATAFILE,LABEL="KPAR_FILE:" , RC=STATUS) - VERIFY_(STATUS) - call MAPL_ReadForcing(MAPL,'KPAR',DATAFILE,CURRENTTIME,KPAR, RC=STATUS) +! call MAPL_GetResource(MAPL,DATAFILE,LABEL="KPAR_FILE:" , RC=STATUS) +! VERIFY_(STATUS) +! call MAPL_ReadForcing(MAPL,'KPAR',DATAFILE,CURRENTTIME,KPAR, RC=STATUS) +! VERIFY_(STATUS) + call MAPL_GetPointer(import, data_kpar, 'DATA_KPAR', __RC__) VERIFY_(STATUS) + KPAR = data_kpar ! Use Beer'S Law to compute flux divergence !------------------------------------------ diff --git a/GEOSogcm_GridComp/GEOS_OradGridComp/GEOS_OradGridComp.F90 b/GEOSogcm_GridComp/GEOS_OradGridComp/GEOS_OradGridComp.F90 index 3fd607699..75097c739 100644 --- a/GEOSogcm_GridComp/GEOS_OradGridComp/GEOS_OradGridComp.F90 +++ b/GEOSogcm_GridComp/GEOS_OradGridComp/GEOS_OradGridComp.F90 @@ -113,6 +113,16 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) + call MAPL_AddImportSpec(GC, & + SHORT_NAME = 'data_kpar', & + LONG_NAME = 'PAR_extinction_coefficient', & + UNITS = 'm-1', & + DIMS = MAPL_DimsHorzOnly, & + VLOCATION = MAPL_VLocationNone, & + RC=STATUS ) + VERIFY_(STATUS) + + ! !EXPORT STATE: call MAPL_AddExportSpec(GC, & @@ -377,6 +387,7 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) real, pointer, dimension(:,:) :: DRNIR real, pointer, dimension(:,:) :: DFNIR real, pointer, dimension(:,:,:) :: H + real, pointer, dimension(:,:) :: data_kpar ! ponters to export @@ -482,11 +493,14 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) ! Get KPAR from data file !------------------------ - call MAPL_GetResource(MAPL,DATAFILE,LABEL="KPAR_FILE:" , RC=STATUS) - VERIFY_(STATUS) +! call MAPL_GetResource(MAPL,DATAFILE,LABEL="KPAR_FILE:" , RC=STATUS) +! VERIFY_(STATUS) - call MAPL_ReadForcing(MAPL,'KPAR',DATAFILE,CURRENTTIME,KPAR, RC=STATUS) - VERIFY_(STATUS) +! call MAPL_ReadForcing(MAPL,'KPAR',DATAFILE,CURRENTTIME,KPAR, RC=STATUS) +! VERIFY_(STATUS) + call MAPL_GetPointer(import, data_kpar, 'DATA_KPAR', __RC__) + VERIFY_(STATUS) + KPAR = data_kpar ! Use Beer'S Law to compute flux divergence !------------------------------------------ From 40c24fd09470cd6fac9ab93e3f288306c1a14292 Mon Sep 17 00:00:00 2001 From: sanAkel Date: Mon, 14 Feb 2022 15:21:59 -0500 Subject: [PATCH 07/28] conditionally terminate imports -- note that kpar is being read in by GEOS_OradBioGridComp/GEOS_OradBioGridComp.F90 hence using DO_OBIO and/or DO_ORAD logic is best to be kept out of this. Simply sticking to whether it is coupled to ocean or not; ocean biology is left to be _data_. --- GEOSogcm_GridComp/GEOS_OgcmGridComp.F90 | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/GEOSogcm_GridComp/GEOS_OgcmGridComp.F90 b/GEOSogcm_GridComp/GEOS_OgcmGridComp.F90 index 2426a63b3..eb180b3f7 100644 --- a/GEOSogcm_GridComp/GEOS_OgcmGridComp.F90 +++ b/GEOSogcm_GridComp/GEOS_OgcmGridComp.F90 @@ -772,7 +772,11 @@ subroutine SetServices ( GC, RC ) ! by OGCM from exchange grid quantities. !call MAPL_TerminateImport ( GC, ALL=.true., RC=STATUS ) - call MAPL_TerminateImport ( GC, ["DATA_SST","DATA_ICE","DATA_KPAR"], [ocean,seaice,orad], RC=STATUS ) + if (DO_DATASEAONLY==1) then ! fake-ocean (i.e., data ocean) + call MAPL_TerminateImport ( GC, ["DATA_SST","DATA_ICE","DATA_KPAR"], [ocean,seaice,orad], RC=STATUS ) + else ! real ocean and sea ice + call MAPL_TerminateImport ( GC, ["DATA_KPAR"], [orad], RC=STATUS ) + endif ! Set the Profiling timers ! ------------------------ From 7282091c1321e0d246bdfb0c50f3efb771ba5681 Mon Sep 17 00:00:00 2001 From: sanAkel Date: Mon, 14 Feb 2022 15:23:23 -0500 Subject: [PATCH 08/28] get rid of commented line --- GEOSogcm_GridComp/GEOS_OgcmGridComp.F90 | 1 - 1 file changed, 1 deletion(-) diff --git a/GEOSogcm_GridComp/GEOS_OgcmGridComp.F90 b/GEOSogcm_GridComp/GEOS_OgcmGridComp.F90 index eb180b3f7..a2ba0d808 100644 --- a/GEOSogcm_GridComp/GEOS_OgcmGridComp.F90 +++ b/GEOSogcm_GridComp/GEOS_OgcmGridComp.F90 @@ -771,7 +771,6 @@ subroutine SetServices ( GC, RC ) ! Children's imports are in the ocean grid and are all satisfied ! by OGCM from exchange grid quantities. - !call MAPL_TerminateImport ( GC, ALL=.true., RC=STATUS ) if (DO_DATASEAONLY==1) then ! fake-ocean (i.e., data ocean) call MAPL_TerminateImport ( GC, ["DATA_SST","DATA_ICE","DATA_KPAR"], [ocean,seaice,orad], RC=STATUS ) else ! real ocean and sea ice From 3678c8aada08b6adbb7fa7fef572cfc93efb0c3f Mon Sep 17 00:00:00 2001 From: Ricardo Todling Date: Wed, 16 Feb 2022 20:47:05 -0500 Subject: [PATCH 09/28] fix for TKSINI export from Surface --- .../GEOSsurface_GridComp/GEOS_SurfaceGridComp.F90 | 4 ++-- .../GEOSsaltwater_GridComp/GEOS_SaltWaterGridComp.F90 | 5 +++++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSsurface_GridComp/GEOS_SurfaceGridComp.F90 b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSsurface_GridComp/GEOS_SurfaceGridComp.F90 index 781fa273f..24a993dd7 100644 --- a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSsurface_GridComp/GEOS_SurfaceGridComp.F90 +++ b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSsurface_GridComp/GEOS_SurfaceGridComp.F90 @@ -8454,7 +8454,7 @@ subroutine DOTYPE(type,RC) VERIFY_(STATUS) call MAPL_GetPointer(GEX(type), dum, 'TSKINW', ALLOC=associated(TSKINWTILE ), notFoundOK=.true., RC=STATUS) VERIFY_(STATUS) - call MAPL_GetPointer(GEX(type), dum, 'TSKINICE', ALLOC=associated(TSKINITILE ), notFoundOK=.true., RC=STATUS) + call MAPL_GetPointer(GEX(type), dum, 'TSKINI', ALLOC=associated(TSKINITILE ), notFoundOK=.true., RC=STATUS) VERIFY_(STATUS) call MAPL_GetPointer(GEX(type), dum, 'DCOOL' , ALLOC=associated(DCOOL_TILE ), notFoundOK=.true., RC=STATUS) @@ -9122,7 +9122,7 @@ subroutine DOTYPE(type,RC) VERIFY_(STATUS) end if if(associated(TSKINITILE)) then - call FILLOUT_TILE(GEX(type), 'TSKINICE',TSKINITILE, XFORM, RC=STATUS) + call FILLOUT_TILE(GEX(type), 'TSKINI',TSKINITILE, XFORM, RC=STATUS) VERIFY_(STATUS) end if diff --git a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSsurface_GridComp/GEOSsaltwater_GridComp/GEOS_SaltWaterGridComp.F90 b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSsurface_GridComp/GEOSsaltwater_GridComp/GEOS_SaltWaterGridComp.F90 index 06cac4808..253cd4ea7 100644 --- a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSsurface_GridComp/GEOSsaltwater_GridComp/GEOS_SaltWaterGridComp.F90 +++ b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSsurface_GridComp/GEOSsaltwater_GridComp/GEOS_SaltWaterGridComp.F90 @@ -1844,6 +1844,11 @@ subroutine SALTWATERCORE(NT,RC) call MAPL_GetPointer(GEX(ICE), dummy, 'ISTSFC' , alloc=.true., RC=STATUS) VERIFY_(STATUS) endif + else + if(associated(TSKINI)) then + call MAPL_GetPointer(GEX(ICE), dummy, 'TSKINI' , alloc=.true., RC=STATUS) + VERIFY_(STATUS) + endif endif ! Call the childrens' RUN2 From 71684e91322eb2c281105fd8c205655475ba88a2 Mon Sep 17 00:00:00 2001 From: Ricardo Todling Date: Fri, 18 Feb 2022 09:28:26 -0500 Subject: [PATCH 10/28] this should be the real fix for tskinice --- .../GEOS_SurfaceGridComp.F90 | 24 ++++++------- .../GEOS_CICE4ColumnPhysGridComp.F90 | 16 ++++----- .../GEOS_SaltWaterGridComp.F90 | 34 ++----------------- .../GEOS_SimpleSeaiceGridComp.F90 | 11 ++++++ 4 files changed, 33 insertions(+), 52 deletions(-) diff --git a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSsurface_GridComp/GEOS_SurfaceGridComp.F90 b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSsurface_GridComp/GEOS_SurfaceGridComp.F90 index 24a993dd7..314ae1161 100644 --- a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSsurface_GridComp/GEOS_SurfaceGridComp.F90 +++ b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSsurface_GridComp/GEOS_SurfaceGridComp.F90 @@ -2042,7 +2042,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'TSKINI', & + SHORT_NAME = 'TSKINICE', & LONG_NAME = 'sea_ice_skin_temperature',& UNITS = 'K' ,& DIMS = MAPL_DimsHorzOnly, & @@ -4927,7 +4927,7 @@ subroutine RUN2 ( GC, IMPORT, EXPORT, CLOCK, RC ) real, pointer, dimension(:,:) :: SNOWOCN => NULL() real, pointer, dimension(:,:) :: RAINOCN => NULL() real, pointer, dimension(:,:) :: TSKINW => NULL() - real, pointer, dimension(:,:) :: TSKINI => NULL() + real, pointer, dimension(:,:) :: TSKINICE => NULL() real, pointer, dimension(:,:) :: DCOOL => NULL() real, pointer, dimension(:,:) :: DWARM => NULL() @@ -5195,7 +5195,7 @@ subroutine RUN2 ( GC, IMPORT, EXPORT, CLOCK, RC ) real, pointer, dimension(:) :: SNOWOCNTILE => NULL() real, pointer, dimension(:) :: RAINOCNTILE => NULL() real, pointer, dimension(:) :: TSKINWTILE => NULL() - real, pointer, dimension(:) :: TSKINITILE => NULL() + real, pointer, dimension(:) :: TSKINICETILE => NULL() real, pointer, dimension(:) :: DCOOL_TILE => NULL() real, pointer, dimension(:) :: DWARM_TILE => NULL() @@ -6025,8 +6025,8 @@ subroutine RUN2 ( GC, IMPORT, EXPORT, CLOCK, RC ) call MAPL_GetPointer(EXPORT , SWNDICE , 'SWNDICE' , RC=STATUS); VERIFY_(STATUS) call MAPL_GetPointer(EXPORT , SNOWOCN , 'SNOWOCN' , RC=STATUS); VERIFY_(STATUS) call MAPL_GetPointer(EXPORT , RAINOCN , 'RAINOCN' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(EXPORT , TSKINW, 'TSKINW', RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(EXPORT , TSKINI, 'TSKINI', RC=STATUS); VERIFY_(STATUS) + call MAPL_GetPointer(EXPORT , TSKINW , 'TSKINW' , RC=STATUS); VERIFY_(STATUS) + call MAPL_GetPointer(EXPORT , TSKINICE , 'TSKINICE' , RC=STATUS); VERIFY_(STATUS) call MAPL_GetPointer(EXPORT , HICE , 'HICE' , RC=STATUS); VERIFY_(STATUS) call MAPL_GetPointer(EXPORT , HSNO , 'HSNO' , RC=STATUS); VERIFY_(STATUS) @@ -6569,7 +6569,7 @@ subroutine RUN2 ( GC, IMPORT, EXPORT, CLOCK, RC ) call MKTILE(SNOWOCN ,SNOWOCNTILE ,NT,RC=STATUS); VERIFY_(STATUS) call MKTILE(RAINOCN ,RAINOCNTILE ,NT,RC=STATUS); VERIFY_(STATUS) call MKTILE(TSKINW, TSKINWTILE ,NT,RC=STATUS); VERIFY_(STATUS) - call MKTILE(TSKINI, TSKINITILE ,NT,RC=STATUS); VERIFY_(STATUS) + call MKTILE(TSKINICE, TSKINICETILE ,NT,RC=STATUS); VERIFY_(STATUS) call MKTILE(DCOOL, DCOOL_TILE , NT, RC=STATUS); VERIFY_(STATUS) call MKTILE(DWARM, DWARM_TILE , NT, RC=STATUS); VERIFY_(STATUS) @@ -7067,8 +7067,8 @@ subroutine RUN2 ( GC, IMPORT, EXPORT, CLOCK, RC ) VERIFY_(STATUS) endif - if(associated(TSKINI)) then - call MAPL_LocStreamTransform( LOCSTREAM,TSKINI,TSKINITILE, RC=STATUS) + if(associated(TSKINICE)) then + call MAPL_LocStreamTransform( LOCSTREAM,TSKINICE,TSKINICETILE, RC=STATUS) VERIFY_(STATUS) endif @@ -7928,7 +7928,7 @@ subroutine RUN2 ( GC, IMPORT, EXPORT, CLOCK, RC ) if(associated(SNOWOCNTILE )) deallocate(SNOWOCNTILE ) if(associated(RAINOCNTILE )) deallocate(RAINOCNTILE ) if(associated(TSKINWTILE )) deallocate(TSKINWTILE ) - if(associated(TSKINITILE )) deallocate(TSKINITILE ) + if(associated(TSKINICETILE )) deallocate(TSKINICETILE ) if(associated(DCOOL_TILE )) deallocate(DCOOL_TILE ) if(associated(DWARM_TILE )) deallocate(DWARM_TILE ) @@ -8454,7 +8454,7 @@ subroutine DOTYPE(type,RC) VERIFY_(STATUS) call MAPL_GetPointer(GEX(type), dum, 'TSKINW', ALLOC=associated(TSKINWTILE ), notFoundOK=.true., RC=STATUS) VERIFY_(STATUS) - call MAPL_GetPointer(GEX(type), dum, 'TSKINI', ALLOC=associated(TSKINITILE ), notFoundOK=.true., RC=STATUS) + call MAPL_GetPointer(GEX(type), dum, 'TSKINICE', ALLOC=associated(TSKINICETILE ), notFoundOK=.true., RC=STATUS) VERIFY_(STATUS) call MAPL_GetPointer(GEX(type), dum, 'DCOOL' , ALLOC=associated(DCOOL_TILE ), notFoundOK=.true., RC=STATUS) @@ -9121,8 +9121,8 @@ subroutine DOTYPE(type,RC) call FILLOUT_TILE(GEX(type), 'TSKINW',TSKINWTILE, XFORM, RC=STATUS) VERIFY_(STATUS) end if - if(associated(TSKINITILE)) then - call FILLOUT_TILE(GEX(type), 'TSKINI',TSKINITILE, XFORM, RC=STATUS) + if(associated(TSKINICETILE)) then + call FILLOUT_TILE(GEX(type), 'TSKINICE',TSKINICETILE, XFORM, RC=STATUS) VERIFY_(STATUS) end if diff --git a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSsurface_GridComp/GEOSsaltwater_GridComp/GEOS_CICE4ColumnPhysGridComp.F90 b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSsurface_GridComp/GEOSsaltwater_GridComp/GEOS_CICE4ColumnPhysGridComp.F90 index 69d4ac498..baf3b96e1 100644 --- a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSsurface_GridComp/GEOSsaltwater_GridComp/GEOS_CICE4ColumnPhysGridComp.F90 +++ b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSsurface_GridComp/GEOSsaltwater_GridComp/GEOS_CICE4ColumnPhysGridComp.F90 @@ -1329,9 +1329,9 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC ,& - SHORT_NAME = 'ISTSFC', & + SHORT_NAME = 'TSKINICE', & LONG_NAME = 'snow_or_ice_surface_temperature',& - UNITS = 'C' ,& + UNITS = 'K' ,& DIMS = MAPL_DimsTileOnly ,& VLOCATION = MAPL_VLocationNone ,& RC=STATUS ) @@ -3150,7 +3150,7 @@ subroutine CICECORE(NT,RC) real, pointer, dimension(: ) :: HSNO => null() real, pointer, dimension(: ) :: HICEUNT => null() real, pointer, dimension(: ) :: SNOONICE => null() - real, pointer, dimension(: ) :: ISTSFC => null() + real, pointer, dimension(: ) :: TSKINICE => null() real, pointer, dimension(: ) :: IAGE => null() real, pointer, dimension(: ) :: DAIDTT => null() real, pointer, dimension(: ) :: DVIDTT => null() @@ -3535,7 +3535,7 @@ subroutine CICECORE(NT,RC) call MAPL_GetPointer(EXPORT,HSNO , 'HSNO' , RC=STATUS); VERIFY_(STATUS) call MAPL_GetPointer(EXPORT,HICEUNT, 'HICEUNT' , RC=STATUS); VERIFY_(STATUS) call MAPL_GetPointer(EXPORT,SNOONICE,'SNOONICE', RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(EXPORT,ISTSFC , 'ISTSFC' , RC=STATUS); VERIFY_(STATUS) + call MAPL_GetPointer(EXPORT,TSKINICE, 'TSKINICE' , RC=STATUS); VERIFY_(STATUS) call MAPL_GetPointer(EXPORT,IAGE , 'IAGE' , RC=STATUS); VERIFY_(STATUS) call MAPL_GetPointer(EXPORT,DAIDTT , 'DAIDTT' , RC=STATUS); VERIFY_(STATUS) call MAPL_GetPointer(EXPORT,DVIDTT , 'DVIDTT' , RC=STATUS); VERIFY_(STATUS) @@ -4428,13 +4428,13 @@ subroutine CICECORE(NT,RC) !fully coupled ice-ocean dynamics not ready yet!! if(associated(PICE )) PICE = 0.0 - if(associated(ISTSFC)) then + if(associated(TSKINICE)) then ! to be consisten with CICE (unit in degC) - ISTSFC = sum((TS(:,ICE:)-TFfresh)*FR8(:,ICE:),dim=2) + TSKINICE = sum((TS(:,ICE:)-TFfresh)*FR8(:,ICE:),dim=2) where(FRCICE > puny) - ISTSFC = ISTSFC / FRCICE + TSKINICE = TSKINICE / FRCICE + MAPL_TICE elsewhere - ISTSFC = MAPL_UNDEF + TSKINICE = MAPL_UNDEF end where endif diff --git a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSsurface_GridComp/GEOSsaltwater_GridComp/GEOS_SaltWaterGridComp.F90 b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSsurface_GridComp/GEOSsaltwater_GridComp/GEOS_SaltWaterGridComp.F90 index 253cd4ea7..bc82c1fa3 100644 --- a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSsurface_GridComp/GEOSsaltwater_GridComp/GEOS_SaltWaterGridComp.F90 +++ b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSsurface_GridComp/GEOSsaltwater_GridComp/GEOS_SaltWaterGridComp.F90 @@ -391,15 +391,6 @@ subroutine SetServices ( GC, RC ) RC=STATUS ) VERIFY_(STATUS) - call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'TSKINICE', & - LONG_NAME = 'snow_or_ice_surface_temperature',& - UNITS = 'K' ,& - DIMS = MAPL_DimsTileOnly ,& - VLOCATION = MAPL_VLocationNone ,& - RC=STATUS ) - VERIFY_(STATUS) - call MAPL_AddExportSpec(GC, & SHORT_NAME = 'FRACI', & LONG_NAME = 'ice_covered_fraction_of_tile', & @@ -824,6 +815,8 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, SHORT_NAME = 'FHOCN' , CHILD_ID = ICE, RC=STATUS) VERIFY_(STATUS) + call MAPL_AddExportSpec(GC, SHORT_NAME = 'TSKINICE' , CHILD_ID = ICE, RC=STATUS) + VERIFY_(STATUS) ! Atmosphere-Ocean Fluxes call MAPL_AddExportSpec(GC, SHORT_NAME = 'AO_SHFLX' , CHILD_ID = WATER, RC=STATUS); VERIFY_(STATUS) @@ -1758,7 +1751,6 @@ subroutine SALTWATERCORE(NT,RC) call MAPL_GetPointer(EXPORT,HLWUP , 'HLWUP' , RC=STATUS); VERIFY_(STATUS) call MAPL_GetPointer(EXPORT,LWNDSRF, 'LWNDSRF' , RC=STATUS); VERIFY_(STATUS) call MAPL_GetPointer(EXPORT,SWNDSRF, 'SWNDSRF' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(EXPORT,TSKINI , 'TSKINICE', RC=STATUS); VERIFY_(STATUS) call MAPL_GetPointer(EXPORT,FRI , 'FRACI' , RC=STATUS); VERIFY_(STATUS) call MAPL_GetPointer(EXPORT,FRW , 'FRACW' , RC=STATUS); VERIFY_(STATUS) call MAPL_GetPointer(EXPORT,PENUVR , 'PENUVR' , RC=STATUS); VERIFY_(STATUS) @@ -1839,18 +1831,6 @@ subroutine SALTWATERCORE(NT,RC) endif enddo - if(DO_CICE_THERMO /= 0) then - if(associated(TSKINI)) then - call MAPL_GetPointer(GEX(ICE), dummy, 'ISTSFC' , alloc=.true., RC=STATUS) - VERIFY_(STATUS) - endif - else - if(associated(TSKINI)) then - call MAPL_GetPointer(GEX(ICE), dummy, 'TSKINI' , alloc=.true., RC=STATUS) - VERIFY_(STATUS) - endif - endif - ! Call the childrens' RUN2 !------------------------- @@ -1879,16 +1859,6 @@ subroutine SALTWATERCORE(NT,RC) if(associated(FRI)) FRI = FRNEW(:, ICE) if(associated(FRW)) FRW = FRNEW(:,WATER) - if(associated(TSKINI)) then - if(DO_CICE_THERMO /= 0) then - call MAPL_GetPointer(GEX(ICE), TSKINI, 'ISTSFC' , RC=STATUS) - VERIFY_(STATUS) - TSKINI = TSKINI + MAPL_TICE ! convert to K - else - call MAPL_GetPointer(GEX(ICE), TSKINI, 'TSKINI' , RC=STATUS) - VERIFY_(STATUS) - endif - endif EMISS = 0.0 ALBVR = 0.0 diff --git a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSsurface_GridComp/GEOSsaltwater_GridComp/GEOS_SimpleSeaiceGridComp.F90 b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSsurface_GridComp/GEOSsaltwater_GridComp/GEOS_SimpleSeaiceGridComp.F90 index 68eb76e4c..9930c51f4 100644 --- a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSsurface_GridComp/GEOSsaltwater_GridComp/GEOS_SimpleSeaiceGridComp.F90 +++ b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSsurface_GridComp/GEOSsaltwater_GridComp/GEOS_SimpleSeaiceGridComp.F90 @@ -627,6 +627,14 @@ subroutine SetServices ( GC, RC ) RC=STATUS ) VERIFY_(STATUS) + call MAPL_AddExportSpec(GC, & + SHORT_NAME = 'TSKINICE', & + LONG_NAME = 'snow_or_ice_surface_temperature',& + UNITS = 'K' ,& + DIMS = MAPL_DimsTileOnly ,& + VLOCATION = MAPL_VLocationNone ,& + RC=STATUS ) + ! !INTERNAL STATE: call MAPL_AddInternalSpec(GC, & @@ -1905,6 +1913,7 @@ subroutine SEAICECORE(NT,RC) real, pointer, dimension(: ) :: SWNDICE => null() real, pointer, dimension(: ) :: LWNDICE => null() real, pointer, dimension(: ) :: FSURF => null() + real, pointer, dimension(: ) :: TSKINICE=> null() real, pointer, dimension(: ) :: DELTS => null() real, pointer, dimension(: ) :: DELQS => null() @@ -2116,6 +2125,7 @@ subroutine SEAICECORE(NT,RC) call MAPL_GetPointer(EXPORT,SWNDICE, 'SWNDICE' , RC=STATUS); VERIFY_(STATUS) call MAPL_GetPointer(EXPORT,FRI , 'FRACI' , RC=STATUS); VERIFY_(STATUS) call MAPL_GetPointer(EXPORT,FSURF , 'FSURF' , RC=STATUS); VERIFY_(STATUS) + call MAPL_GetPointer(EXPORT,TSKINICE, 'TSKINICE', RC=STATUS); VERIFY_(STATUS) call MAPL_GetPointer(EXPORT,DRUVRTHRU , 'PENUVR' , RC=STATUS); VERIFY_(STATUS) call MAPL_GetPointer(EXPORT,DFUVRTHRU , 'PENUVF' , RC=STATUS); VERIFY_(STATUS) @@ -2366,6 +2376,7 @@ subroutine SEAICECORE(NT,RC) if(associated(HLWUP )) HLWUP = ALW if(associated(LWNDSRF)) LWNDSRF = LWDNSRF - ALW + if(associated(TSKINICE)) TSKINICE = TI if(associated(LWNDICE)) then where( FI>0.0 ) From b008278d6a270290adfbd57905b40698bb98897d Mon Sep 17 00:00:00 2001 From: sanAkel Date: Sat, 19 Feb 2022 16:21:50 -0500 Subject: [PATCH 11/28] get rid of commented lines --- .../GEOS_DataSeaIceGridComp.F90 | 63 +------------------ 1 file changed, 1 insertion(+), 62 deletions(-) diff --git a/GEOSogcm_GridComp/GEOSseaice_GridComp/GEOSdataseaice_GridComp/GEOS_DataSeaIceGridComp.F90 b/GEOSogcm_GridComp/GEOSseaice_GridComp/GEOSdataseaice_GridComp/GEOS_DataSeaIceGridComp.F90 index 8e2896c57..d8271c088 100644 --- a/GEOSogcm_GridComp/GEOSseaice_GridComp/GEOSdataseaice_GridComp/GEOS_DataSeaIceGridComp.F90 +++ b/GEOSogcm_GridComp/GEOSseaice_GridComp/GEOSdataseaice_GridComp/GEOS_DataSeaIceGridComp.F90 @@ -34,7 +34,6 @@ module GEOS_DataSeaIceGridCompMod integer :: NUM_ICE_LAYERS_ALL integer :: NUM_SNOW_LAYERS_ALL integer :: DO_CICE_THERMO -! integer :: DO_SKIN_LAYER ! !DESCRIPTION: ! @@ -110,9 +109,6 @@ subroutine SetServices ( GC, RC ) call MAPL_GetResource ( MAPL, DO_CICE_THERMO, Label="USE_CICE_Thermo:" , DEFAULT=0, RC=STATUS) VERIFY_(STATUS) -! call MAPL_GetResource ( MAPL, DO_SKIN_LAYER, Label="USE_SKIN_LAYER:" , DEFAULT=0, RC=STATUS) -! VERIFY_(STATUS) - cice_init_: if (DO_CICE_THERMO /= 0) then if(MAPL_AM_I_ROOT()) print *, 'Using Data Sea Ice GC to do CICE Thermo in AMIP mode' call ESMF_ConfigGetAttribute(CF, NUM_ICE_CATEGORIES, Label="CICE_N_ICE_CATEGORIES:" , RC=STATUS) @@ -381,9 +377,7 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) type (ESMF_Time) :: CurrentTime integer :: IFCST logical :: FCST -! real, pointer, dimension(:,:) :: MELT => null() -! real, pointer, dimension(:,:) :: F1 => null() -! real, pointer, dimension(:,:) :: TNEW => null() + real :: TAU_SIT real :: DT real :: RUN_DT @@ -414,7 +408,6 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) real, pointer, dimension(:,:) :: UI => null() real, pointer, dimension(:,:) :: VI => null() real, pointer, dimension(:,:) :: FR => null() -! real, pointer, dimension(:,:) :: MQ => null() ! pointers to import @@ -441,7 +434,6 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) real :: f real, pointer :: DATA_ice(:,:) - ! above were for CICE Thermo @@ -601,58 +593,6 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) SI = 30.0 -! if (DO_SKIN_LAYER < 2) then -! allocate(MELT(size(TW,1),size(TW,2)), stat=STATUS) -! VERIFY_(STATUS) -! allocate(F1(size(TW,1),size(TW,2)), stat=STATUS) -! VERIFY_(STATUS) -! allocate(TNEW(size(TW,1),size(TW,2)), stat=STATUS) -! VERIFY_(STATUS) -! -! TICE=MAPL_TICE-1.8 -! TNEW=0.0 -! F1=0.0 -! -! ! TW below freezing point is set to freezing temperature -! TNEW = max(TW,TICE) -! -! if (DO_CICE_THERMO == 0) then -! where(FR == 1.0) -! ! if fraction of ice is 1, set TW to freezing temperature -! TNEW = TICE -! elsewhere -! F1=FR*CTB*MAPL_RHOWTR/(HW*(1-FR)) -! TNEW=(TNEW+TICE*F1*DT)/(1+F1*DT) -! end where -! else -! where(FRT == 1.0) -! ! if fraction of ice is 1, set TW to freezing temperature -! TNEW = TICE -! elsewhere -! F1=FRT*CTB*MAPL_RHOWTR/(HW*(1-FRT)) -! TNEW=(TNEW+TICE*F1*DT)/(1+F1*DT) -! end where -! end if -! -! MELT=(TW-TNEW)*HW*CW/DT -! -! where(TW == MAPL_UNDEF) -! MELT=MAPL_UNDEF -! TNEW=MAPL_UNDEF -! end where -! -! ! Updated Sea-Ice Melting (non-zero diff to Fortuna-2_5_p6) -! ! --------------------------------------------------------- -! TW=TNEW -! -! if(associated(MQ)) MQ = MELT -! -! if (DO_CICE_THERMO /= 0) then -! TW = max(TW,MAPL_TICE) -! where(FR>0.0) TW = MAPL_TICE -! end if -! end if ! (DO_SKIN_LAYER < 2) - call MAPL_TimerOff(MAPL,"-UPDATE" ) ! Update the exports @@ -664,7 +604,6 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) ! Clean-up !--------- -! if (DO_SKIN_LAYER < 2) deallocate(MELT,F1,TNEW) if (DO_CICE_THERMO /= 0) then deallocate(FRT) deallocate(FRCICE) From dd1ad7d86f0ffae59f60538e19f73e86d10a3be6 Mon Sep 17 00:00:00 2001 From: sanAkel Date: Sat, 19 Feb 2022 17:06:59 -0500 Subject: [PATCH 12/28] 1.Add back MAPL_ReadForcing calls to read binary formatted files, 2.Introduce logic to switch between binary and ExtData (netcdf) format- defaulting to binary, so as to get SAME answers; for now, 3. fix indentation --- .../GEOS_DataSeaIceGridComp.F90 | 75 ++++++++++++------- 1 file changed, 49 insertions(+), 26 deletions(-) diff --git a/GEOSogcm_GridComp/GEOSseaice_GridComp/GEOSdataseaice_GridComp/GEOS_DataSeaIceGridComp.F90 b/GEOSogcm_GridComp/GEOSseaice_GridComp/GEOSdataseaice_GridComp/GEOS_DataSeaIceGridComp.F90 index d8271c088..e4c7e2af2 100644 --- a/GEOSogcm_GridComp/GEOSseaice_GridComp/GEOSdataseaice_GridComp/GEOS_DataSeaIceGridComp.F90 +++ b/GEOSogcm_GridComp/GEOSseaice_GridComp/GEOSdataseaice_GridComp/GEOS_DataSeaIceGridComp.F90 @@ -35,6 +35,8 @@ module GEOS_DataSeaIceGridCompMod integer :: NUM_SNOW_LAYERS_ALL integer :: DO_CICE_THERMO + character(len=ESMF_MAXSTR) :: ocean_data_type + ! !DESCRIPTION: ! ! {\tt GEOS\_DataSeaIce} is a gridded component that reads the @@ -109,6 +111,8 @@ subroutine SetServices ( GC, RC ) call MAPL_GetResource ( MAPL, DO_CICE_THERMO, Label="USE_CICE_Thermo:" , DEFAULT=0, RC=STATUS) VERIFY_(STATUS) + call MAPL_GetResource ( MAPL, ocean_data_type, Label="OCEAN_DATA_TYPE:", DEFAULT="Binary", __RC__ ) ! Binary or ExtData + cice_init_: if (DO_CICE_THERMO /= 0) then if(MAPL_AM_I_ROOT()) print *, 'Using Data Sea Ice GC to do CICE Thermo in AMIP mode' call ESMF_ConfigGetAttribute(CF, NUM_ICE_CATEGORIES, Label="CICE_N_ICE_CATEGORIES:" , RC=STATUS) @@ -137,14 +141,16 @@ subroutine SetServices ( GC, RC ) ! !Import state: - call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'DATA_ICE', & - LONG_NAME = 'test import', & - UNITS = 'm', & - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & - rc=status) - VERIFY_(status) + if (ocean_data_type == 'ExtData') then + call MAPL_AddImportSpec(GC, & + SHORT_NAME = 'DATA_ICE', & + LONG_NAME = 'sea_ice_concentration', & + UNITS = '1', & + DIMS = MAPL_DimsHorzOnly, & + VLOCATION = MAPL_VLocationNone, & + RC=STATUS) + VERIFY_(status) + endif call MAPL_AddImportSpec(GC, & SHORT_NAME = 'HI', & @@ -375,9 +381,9 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) logical :: FRIENDLY type(ESMF_FIELD) :: FIELD type (ESMF_Time) :: CurrentTime + character(len=ESMF_MAXSTR) :: DATAFRTFILE integer :: IFCST logical :: FCST - real :: TAU_SIT real :: DT real :: RUN_DT @@ -433,7 +439,7 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) real, allocatable, dimension(:,:) :: FRT real :: f - real, pointer :: DATA_ice(:,:) + real, pointer :: DATA_ice(:,:) => null() ! above were for CICE Thermo @@ -466,12 +472,14 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) call MAPL_TimerOn(MAPL,"TOTAL") call MAPL_TimerOn(MAPL,"RUN" ) - call MAPL_GetPointer(IMPORT, DATA_ice , 'DATA_ICE', RC=STATUS) - VERIFY_(STATUS) ! Pointers to Imports !-------------------- + if (ocean_data_type == 'ExtData') then + call MAPL_GetPointer(IMPORT, DATA_ice , 'DATA_ICE', __RC__) + endif + if (DO_CICE_THERMO == 0) then call MAPL_GetPointer(IMPORT, TI , 'TI' , RC=STATUS) VERIFY_(STATUS) @@ -513,6 +521,13 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) call ESMF_ClockGet(CLOCK, currTime=CurrentTime, rc=STATUS) VERIFY_(STATUS) + if (ocean_data_type == 'Binary') then + ! Get the file name from the resource file + !----------------------------------------- + call MAPL_GetResource(MAPL,DATAFRTFILE,LABEL="DATA_FRT_FILE:", RC=STATUS) + VERIFY_(STATUS) + endif + ! In atmospheric forecast mode we do not have future Sea Ice Conc !--------------------------------------------------------------- @@ -557,7 +572,11 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) if (DO_CICE_THERMO == 0) then if(associated(FR)) then - FR = data_ice + if (ocean_data_type == 'ExtData') then + FR = data_ice ! netcdf variable + else ! binary + call MAPL_ReadForcing(MAPL,'FRT',DATAFRTFILE, CURRENTTIME, FR, INIT_ONLY=FCST, __RC__) + end if if (any(FR < 0.0) .or. any(FR > 1.0)) then if(MAPL_AM_I_ROOT()) print *, 'Error in fraci file. Negative or larger-than-one fraction found' @@ -565,21 +584,25 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) endif end if else - frt = data_ice + if (ocean_data_type == 'ExtData') then + frt = data_ice ! netcdf variable + else ! binary + call MAPL_ReadForcing(MAPL,'FRT',DATAFRTFILE, CURRENTTIME, FRT, INIT_ONLY=FCST, __RC__) + end if ! Sanity checks - do I=1, size(FRT,1) - do J=1, size(FRT,2) - f=FRT(I,J) - if (f==MAPL_UNDEF) cycle - if ((f < 0.0) .or. (f > 1.0)) then - print *, 'Error in fraci file. Negative or larger-than-one fraction found' - _ASSERT(.FALSE.,'needs informative message') - end if - end do - end do - - if(associated(FR)) FR = FRT + do I=1, size(FRT,1) + do J=1, size(FRT,2) + f=FRT(I,J) + if (f==MAPL_UNDEF) cycle + if ((f < 0.0) .or. (f > 1.0)) then + print *, 'Error in fraci file. Negative or larger-than-one fraction found' + _ASSERT(.FALSE.,'needs informative message') + end if + end do + end do + + if(associated(FR)) FR = FRT end if ! (DO_CICE_THERMO == 0) if (DO_CICE_THERMO == 0) then From 7445e13f2898bea147155e58cf3cbe04de2c8a29 Mon Sep 17 00:00:00 2001 From: sanAkel Date: Sat, 19 Feb 2022 22:47:43 -0500 Subject: [PATCH 13/28] 1. improve readability, 2. add back binary file reader (via MALP_ReadForcing) as default - for now. --- .../GEOS_DataSeaGridComp.F90 | 42 +++++++++++++------ .../GEOS_DataSeaIceGridComp.F90 | 8 ++-- 2 files changed, 33 insertions(+), 17 deletions(-) diff --git a/GEOSogcm_GridComp/GEOS_OceanGridComp/GEOSdatasea_GridComp/GEOS_DataSeaGridComp.F90 b/GEOSogcm_GridComp/GEOS_OceanGridComp/GEOSdatasea_GridComp/GEOS_DataSeaGridComp.F90 index 782dfa8a2..beda978f6 100644 --- a/GEOSogcm_GridComp/GEOS_OceanGridComp/GEOSdatasea_GridComp/GEOS_DataSeaGridComp.F90 +++ b/GEOSogcm_GridComp/GEOS_OceanGridComp/GEOSdatasea_GridComp/GEOS_DataSeaGridComp.F90 @@ -23,6 +23,8 @@ module GEOS_DataSeaGridCompMod public SetServices + character(len=ESMF_MAXSTR) :: ocean_data_type + ! !DESCRIPTION: ! ! {\tt GEOS\_DataSea} is a gridded component that reads the @@ -72,6 +74,8 @@ subroutine SetServices ( GC, RC ) ! Local derived type aliases + type (MAPL_MetaComp ), pointer :: MAPL => null() + !============================================================================= ! Begin... @@ -91,6 +95,7 @@ subroutine SetServices ( GC, RC ) call MAPL_GridCompSetEntryPoint ( GC, ESMF_METHOD_RUN, Run, RC=STATUS) VERIFY_(STATUS) + call MAPL_GetResource (MAPL, ocean_data_type, Label="OCEAN_DATA_TYPE:", DEFAULT="Binary", __RC__ ) ! Binary or ExtData ! Set the state variable specs. ! ----------------------------- @@ -102,12 +107,14 @@ subroutine SetServices ( GC, RC ) ! !Export state: - call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'DATA_SST', & - LONG_NAME = 'sea_surface_temperature', & - UNITS = 'K', & - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, _RC) + if (ocean_data_type == 'ExtData') then + call MAPL_AddImportSpec(GC, & + SHORT_NAME = 'DATA_SST', & + LONG_NAME = 'sea_surface_temperature', & + UNITS = 'K', & + DIMS = MAPL_DimsHorzOnly, & + VLOCATION = MAPL_VLocationNone, _RC) + endif call MAPL_AddExportSpec(GC, & SHORT_NAME = 'UW', & @@ -173,8 +180,6 @@ subroutine SetServices ( GC, RC ) end subroutine SetServices - - !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !BOP @@ -209,7 +214,7 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) type (MAPL_MetaComp), pointer :: MAPL type (ESMF_Time) :: CurrentTime -! character(len=ESMF_MAXSTR) :: DATASeaSalFILE + character(len=ESMF_MAXSTR) :: DATASeaFILE integer :: IFCST logical :: FCST integer :: adjSST @@ -235,7 +240,7 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) real, pointer, dimension(:,:) :: FI - real, pointer, dimension(:,:) :: data_sst + real, pointer, dimension(:,:) :: data_sst => null() ! Begin... !---------- @@ -282,6 +287,13 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) call ESMF_ClockGet(CLOCK, currTime=CurrentTime, RC=STATUS) VERIFY_(STATUS) + if (ocean_data_type == 'Binary') then + ! Get the SST bcs file name from the resource file + ! ------------------------------------------------- + call MAPL_GetResource(MAPL,DATASeaFILE,LABEL="DATA_SST_FILE:", RC=STATUS) + VERIFY_(STATUS) + endif + ! Get the SSS bcs file name from the resource file !------------------------------------------------- @@ -322,9 +334,12 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) ! Read bulk SST from retrieval !------------------------------ - call MAPL_GetPointer(import, data_sst , 'DATA_SST' , RC=STATUS) - VERIFY_(STATUS) - sst = data_sst + if (ocean_data_type == 'ExtData') then + call MAPL_GetPointer(import, data_sst, 'DATA_SST', __RC__) + sst = data_sst ! netcdf variable + else ! binary + call MAPL_ReadForcing(MAPL,'SST',DATASeaFILE, CURRENTTIME, sst, INIT_ONLY=FCST, __RC__) + endif call MAPL_TimerOff(MAPL,"-UPDATE" ) @@ -335,6 +350,7 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) if(associated(VW)) VW = 0.0 TICE = MAPL_TICE-1.8 + if (adjSST == 1) then SST = max(SST, TICE) SST = (1.-FI)*SST+FI*TICE diff --git a/GEOSogcm_GridComp/GEOSseaice_GridComp/GEOSdataseaice_GridComp/GEOS_DataSeaIceGridComp.F90 b/GEOSogcm_GridComp/GEOSseaice_GridComp/GEOSdataseaice_GridComp/GEOS_DataSeaIceGridComp.F90 index e4c7e2af2..7f518c301 100644 --- a/GEOSogcm_GridComp/GEOSseaice_GridComp/GEOSdataseaice_GridComp/GEOS_DataSeaIceGridComp.F90 +++ b/GEOSogcm_GridComp/GEOSseaice_GridComp/GEOSdataseaice_GridComp/GEOS_DataSeaIceGridComp.F90 @@ -381,7 +381,7 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) logical :: FRIENDLY type(ESMF_FIELD) :: FIELD type (ESMF_Time) :: CurrentTime - character(len=ESMF_MAXSTR) :: DATAFRTFILE + character(len=ESMF_MAXSTR) :: DataFrtFile integer :: IFCST logical :: FCST real :: TAU_SIT @@ -524,7 +524,7 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) if (ocean_data_type == 'Binary') then ! Get the file name from the resource file !----------------------------------------- - call MAPL_GetResource(MAPL,DATAFRTFILE,LABEL="DATA_FRT_FILE:", RC=STATUS) + call MAPL_GetResource(MAPL,DataFrtFile,LABEL="DATA_FRT_FILE:", RC=STATUS) VERIFY_(STATUS) endif @@ -575,7 +575,7 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) if (ocean_data_type == 'ExtData') then FR = data_ice ! netcdf variable else ! binary - call MAPL_ReadForcing(MAPL,'FRT',DATAFRTFILE, CURRENTTIME, FR, INIT_ONLY=FCST, __RC__) + call MAPL_ReadForcing(MAPL,'FRT',DataFrtFile, CURRENTTIME, FR, INIT_ONLY=FCST, __RC__) end if if (any(FR < 0.0) .or. any(FR > 1.0)) then @@ -587,7 +587,7 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) if (ocean_data_type == 'ExtData') then frt = data_ice ! netcdf variable else ! binary - call MAPL_ReadForcing(MAPL,'FRT',DATAFRTFILE, CURRENTTIME, FRT, INIT_ONLY=FCST, __RC__) + call MAPL_ReadForcing(MAPL,'FRT',DataFrtFile, CURRENTTIME, FRT, INIT_ONLY=FCST, __RC__) end if ! Sanity checks From b5250f2376c44178f279ad8d93dfd750af6ca781 Mon Sep 17 00:00:00 2001 From: sanAkel Date: Sat, 19 Feb 2022 23:21:20 -0500 Subject: [PATCH 14/28] add support for SSS data. It was commented out earlier. So this _new_ data SSS feature will be via ExtData-ONLY. Default case sets SSS=30 as before to obtain SAME answers. --- .../GEOS_DataSeaGridComp.F90 | 121 +++++++++++------- 1 file changed, 73 insertions(+), 48 deletions(-) diff --git a/GEOSogcm_GridComp/GEOS_OceanGridComp/GEOSdatasea_GridComp/GEOS_DataSeaGridComp.F90 b/GEOSogcm_GridComp/GEOS_OceanGridComp/GEOSdatasea_GridComp/GEOS_DataSeaGridComp.F90 index beda978f6..027319b5f 100644 --- a/GEOSogcm_GridComp/GEOS_OceanGridComp/GEOSdatasea_GridComp/GEOS_DataSeaGridComp.F90 +++ b/GEOSogcm_GridComp/GEOS_OceanGridComp/GEOSdatasea_GridComp/GEOS_DataSeaGridComp.F90 @@ -24,6 +24,7 @@ module GEOS_DataSeaGridCompMod public SetServices character(len=ESMF_MAXSTR) :: ocean_data_type + character(len=ESMF_MAXSTR) :: ocean_sss_data ! !DESCRIPTION: ! @@ -95,7 +96,13 @@ subroutine SetServices ( GC, RC ) call MAPL_GridCompSetEntryPoint ( GC, ESMF_METHOD_RUN, Run, RC=STATUS) VERIFY_(STATUS) - call MAPL_GetResource (MAPL, ocean_data_type, Label="OCEAN_DATA_TYPE:", DEFAULT="Binary", __RC__ ) ! Binary or ExtData + call MAPL_GetResource (MAPL, ocean_data_type, Label="OCEAN_DATA_TYPE:", DEFAULT="Binary", __RC__ ) ! Binary or ExtData + + ! There will be no support for binary SSS data. + ! There wasn't one - ever. This new SSS data feature will be ExtData based ONLY; 'None' would set sss=30. as it was done with binary SST data + if (ocean_data_type == 'ExtData') then + call MAPL_GetResource (MAPL, ocean_sss_data, Label="OCEAN_SSS_DATA:", DEFAULT="None", __RC__ ) ! None or ExtData + endif ! Set the state variable specs. ! ----------------------------- @@ -108,12 +115,21 @@ subroutine SetServices ( GC, RC ) ! !Export state: if (ocean_data_type == 'ExtData') then - call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'DATA_SST', & + call MAPL_AddImportSpec(GC, & + SHORT_NAME = 'DATA_SST', & LONG_NAME = 'sea_surface_temperature', & - UNITS = 'K', & - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, _RC) + UNITS = 'K', & + DIMS = MAPL_DimsHorzOnly, & + VLOCATION = MAPL_VLocationNone, RC=STATUS) + endif + + if (ocean_sss_data == 'ExtData') then + call MAPL_AddImportSpec(GC, & + SHORT_NAME = 'DATA_SSS', & + LONG_NAME = 'sea_surface_salinity', & + UNITS = 'PSU', & + DIMS = MAPL_DimsHorzOnly, & + VLOCATION = MAPL_VLocationNone, RC=STATUS) endif call MAPL_AddExportSpec(GC, & @@ -199,7 +215,7 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) type(ESMF_Clock), intent(inout) :: CLOCK ! The clock integer, optional, intent( out) :: RC ! Error code: -! !DESCRIPTION: Periodically refreshes the SST and Ice information. +! !DESCRIPTION: Periodically refreshes the SST, sea ice and optionally SSS from dataset(s). !EOP @@ -218,7 +234,8 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) integer :: IFCST logical :: FCST integer :: adjSST - real, pointer, dimension(:,:) :: SST + real, pointer, dimension(:,:) :: SST => null() + real, pointer, dimension(:,:) :: SSS => null() integer :: IM integer :: JM real :: TICE @@ -241,6 +258,8 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) real, pointer, dimension(:,:) :: FI real, pointer, dimension(:,:) :: data_sst => null() + real, pointer, dimension(:,:) :: data_sss => null() + ! Begin... !---------- @@ -266,68 +285,63 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) ! Pointers to Imports !-------------------- - call MAPL_GetPointer(IMPORT, FI , 'FRACICE' , RC=STATUS) - VERIFY_(STATUS) + call MAPL_GetPointer(IMPORT, FI , 'FRACICE' , RC=STATUS) + VERIFY_(STATUS) ! Pointers to Exports !--------------------- - call MAPL_GetPointer(EXPORT, UW , 'UW' , RC=STATUS) - VERIFY_(STATUS) - call MAPL_GetPointer(EXPORT, VW , 'VW' , RC=STATUS) - VERIFY_(STATUS) - call MAPL_GetPointer(EXPORT, TW , 'TW' , RC=STATUS) - VERIFY_(STATUS) - call MAPL_GetPointer(EXPORT, SW , 'SW' , RC=STATUS) - VERIFY_(STATUS) + call MAPL_GetPointer(EXPORT, UW , 'UW' , RC=STATUS) + VERIFY_(STATUS) + call MAPL_GetPointer(EXPORT, VW , 'VW' , RC=STATUS) + VERIFY_(STATUS) + call MAPL_GetPointer(EXPORT, TW , 'TW' , RC=STATUS) + VERIFY_(STATUS) + call MAPL_GetPointer(EXPORT, SW , 'SW' , RC=STATUS) + VERIFY_(STATUS) ! Set current time and calendar !------------------------------ - call ESMF_ClockGet(CLOCK, currTime=CurrentTime, RC=STATUS) - VERIFY_(STATUS) - - if (ocean_data_type == 'Binary') then - ! Get the SST bcs file name from the resource file - ! ------------------------------------------------- - call MAPL_GetResource(MAPL,DATASeaFILE,LABEL="DATA_SST_FILE:", RC=STATUS) - VERIFY_(STATUS) - endif - -! Get the SSS bcs file name from the resource file -!------------------------------------------------- + call ESMF_ClockGet(CLOCK, currTime=CurrentTime, RC=STATUS) + VERIFY_(STATUS) -! call MAPL_GetResource(MAPL,DATASeaSalFILE,LABEL="DATA_SSS_FILE:", RC=STATUS) -! VERIFY_(STATUS) + if (ocean_data_type == 'Binary') then + ! Get the SST bcs file name from the resource file + ! ------------------------------------------------- + call MAPL_GetResource(MAPL,DATASeaFILE,LABEL="DATA_SST_FILE:", RC=STATUS) + VERIFY_(STATUS) + endif ! In atmospheric forecast mode we do not have future SST and SSS !-------------------------------------------------------------- - call MAPL_GetResource(MAPL,IFCST,LABEL="IS_FCST:",default=0, RC=STATUS) - VERIFY_(STATUS) - - call MAPL_GetResource(MAPL,adjSST,LABEL="SST_ADJ_UND_ICE:",default=0, RC=STATUS) - VERIFY_(STATUS) + call MAPL_GetResource(MAPL,IFCST,LABEL="IS_FCST:",default=0, RC=STATUS) + VERIFY_(STATUS) - FCST = IFCST==1 + call MAPL_GetResource(MAPL,adjSST,LABEL="SST_ADJ_UND_ICE:",default=0, RC=STATUS) + VERIFY_(STATUS) -! SST is usually Reynolds/OSTIA SST or bulk SST -!------------------------------------------------ + FCST = IFCST==1 call MAPL_Get(MAPL, IM=IM, JM=JM, RC=STATUS) VERIFY_(STATUS) +! SST is usually Reynolds/OSTIA SST or bulk SST +!------------------------------------------------ + allocate(SST(IM,JM), stat=STATUS) VERIFY_(STATUS) ! SSS is usually bulk SSS -!-------------------------- +!------------------------- -! allocate(SSS(IM, JM), stat=STATUS) -! VERIFY_(STATUS) + if (ocean_sss_data == 'ExtData') then + allocate(SSS(IM, JM), stat=STATUS); VERIFY_(STATUS) + endif -! Update the friendly skin values -!--------------------------------- +! Update data +!------------- call MAPL_TimerOn(MAPL,"-UPDATE" ) @@ -337,6 +351,12 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) if (ocean_data_type == 'ExtData') then call MAPL_GetPointer(import, data_sst, 'DATA_SST', __RC__) sst = data_sst ! netcdf variable + + if (ocean_sss_data == 'ExtData') then ! and bulk SSS (from retrieval) + call MAPL_GetPointer(import, data_sss, 'DATA_SSS', __RC__) + sss = data_sss ! netcdf variable + endif + else ! binary call MAPL_ReadForcing(MAPL,'SST',DATASeaFILE, CURRENTTIME, sst, INIT_ONLY=FCST, __RC__) endif @@ -396,15 +416,20 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) end if if(associated(SW)) then - SW = 30.0 ! SA: for now -! SW = SSS ! SA: every SST data point must have SSS (in PSU) as well + if (ocean_sss_data == 'ExtData') then + SW = SSS ! SA: every SST data point must have SSS (in PSU) as well + else + SW = 30.0 ! SA: for now + end if end if ! Clean-up !--------- deallocate(SST, STAT=STATUS); VERIFY_(STATUS) -! deallocate(SSS, STAT=STATUS); VERIFY_(STATUS) + if (ocean_sss_data == 'ExtData') then + deallocate(SSS, STAT=STATUS); VERIFY_(STATUS) + endif ! All done !----------- From b965b0ad87cf71d8d57f323de7aa3cc4d7800b61 Mon Sep 17 00:00:00 2001 From: sanAkel Date: Sat, 19 Feb 2022 23:29:36 -0500 Subject: [PATCH 15/28] fix logic for setting --- .../GEOSdatasea_GridComp/GEOS_DataSeaGridComp.F90 | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/GEOSogcm_GridComp/GEOS_OceanGridComp/GEOSdatasea_GridComp/GEOS_DataSeaGridComp.F90 b/GEOSogcm_GridComp/GEOS_OceanGridComp/GEOSdatasea_GridComp/GEOS_DataSeaGridComp.F90 index 027319b5f..1b3a514fa 100644 --- a/GEOSogcm_GridComp/GEOS_OceanGridComp/GEOSdatasea_GridComp/GEOS_DataSeaGridComp.F90 +++ b/GEOSogcm_GridComp/GEOS_OceanGridComp/GEOSdatasea_GridComp/GEOS_DataSeaGridComp.F90 @@ -98,11 +98,8 @@ subroutine SetServices ( GC, RC ) call MAPL_GetResource (MAPL, ocean_data_type, Label="OCEAN_DATA_TYPE:", DEFAULT="Binary", __RC__ ) ! Binary or ExtData - ! There will be no support for binary SSS data. - ! There wasn't one - ever. This new SSS data feature will be ExtData based ONLY; 'None' would set sss=30. as it was done with binary SST data - if (ocean_data_type == 'ExtData') then - call MAPL_GetResource (MAPL, ocean_sss_data, Label="OCEAN_SSS_DATA:", DEFAULT="None", __RC__ ) ! None or ExtData - endif + ! This new SSS data feature will be ExtData based ONLY; 'None' would set sss=30, as it was done with binary SST data + call MAPL_GetResource (MAPL, ocean_sss_data, Label="OCEAN_SSS_DATA:", DEFAULT="None", __RC__ ) ! None or ExtData ! Set the state variable specs. ! ----------------------------- @@ -354,7 +351,7 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) if (ocean_sss_data == 'ExtData') then ! and bulk SSS (from retrieval) call MAPL_GetPointer(import, data_sss, 'DATA_SSS', __RC__) - sss = data_sss ! netcdf variable + SSS = data_sss ! netcdf variable endif else ! binary @@ -428,7 +425,7 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) deallocate(SST, STAT=STATUS); VERIFY_(STATUS) if (ocean_sss_data == 'ExtData') then - deallocate(SSS, STAT=STATUS); VERIFY_(STATUS) + deallocate(SSS, STAT=STATUS); VERIFY_(STATUS) endif ! All done From bc5bb8f0c27f73c9fd56bdbeb8fd48aef6f591b2 Mon Sep 17 00:00:00 2001 From: sanAkel Date: Sun, 20 Feb 2022 00:07:10 -0500 Subject: [PATCH 16/28] Protect terminate imports: do only if (new feature) ExtData is being used. @bena-nasa please check syntax for: MAPL_TerminateImport on line 786. Thank you! --- GEOSogcm_GridComp/GEOS_OgcmGridComp.F90 | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/GEOSogcm_GridComp/GEOS_OgcmGridComp.F90 b/GEOSogcm_GridComp/GEOS_OgcmGridComp.F90 index a2ba0d808..1cfc907ff 100644 --- a/GEOSogcm_GridComp/GEOS_OgcmGridComp.F90 +++ b/GEOSogcm_GridComp/GEOS_OgcmGridComp.F90 @@ -61,6 +61,9 @@ module GEOS_OgcmGridCompMod integer :: DO_OBIO integer :: DO_DATAATM + character(len=ESMF_MAXSTR) :: ocean_data_type + character(len=ESMF_MAXSTR) :: ocean_sss_data + !if DO_OBIO =/ 0 integer, parameter :: NUM_DUDP = 5 integer, parameter :: NUM_DUWT = 5 @@ -202,6 +205,12 @@ subroutine SetServices ( GC, RC ) _ASSERT(DO_OBIO ==0,'needs informative message') end if + call MAPL_GetResource (MAPL, ocean_data_type, Label="OCEAN_DATA_TYPE:", DEFAULT="Binary", __RC__ ) ! Binary or ExtData + if (DO_DATASEAONLY==1) then ! Fake-ocean (i.e., data ocean). + ! This check is strictly for sss only because of data kpar that is used when DO_DATASEAONLY == 0. + call MAPL_GetResource (MAPL, ocean_sss_data, Label="OCEAN_SSS_DATA:", DEFAULT="None", __RC__ ) ! None or ExtData + endif + ! Set the Run and initialize entry points !---------------------------------------- @@ -771,10 +780,16 @@ subroutine SetServices ( GC, RC ) ! Children's imports are in the ocean grid and are all satisfied ! by OGCM from exchange grid quantities. - if (DO_DATASEAONLY==1) then ! fake-ocean (i.e., data ocean) - call MAPL_TerminateImport ( GC, ["DATA_SST","DATA_ICE","DATA_KPAR"], [ocean,seaice,orad], RC=STATUS ) - else ! real ocean and sea ice - call MAPL_TerminateImport ( GC, ["DATA_KPAR"], [orad], RC=STATUS ) + if (ocean_data_type == 'ExtData') then + if (DO_DATASEAONLY==1) then ! fake-ocean (i.e., data ocean) + if (ocean_sss_data == 'ExtData') then + call MAPL_TerminateImport ( GC, ["DATA_SST","DATA_SSS", "DATA_ICE","DATA_KPAR"], [ocean,ocean,seaice,orad], RC=STATUS ) + else ! no (None) data_sss + call MAPL_TerminateImport ( GC, ["DATA_SST", "DATA_ICE","DATA_KPAR"], [ocean, seaice,orad], RC=STATUS ) + endif + else ! we get real ocean and sea ice in case of coupled model, and only data KPAR is used. + call MAPL_TerminateImport ( GC, ["DATA_KPAR"], [orad], RC=STATUS ) + endif endif ! Set the Profiling timers From 65b07701c8b5db96735019bdfa5e5d54124f16fd Mon Sep 17 00:00:00 2001 From: sanAkel Date: Sun, 20 Feb 2022 00:09:21 -0500 Subject: [PATCH 17/28] @bena-nasa please check syntax for: MAPL_TerminateImport on line 786. Thank you --- GEOSogcm_GridComp/GEOS_OgcmGridComp.F90 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/GEOSogcm_GridComp/GEOS_OgcmGridComp.F90 b/GEOSogcm_GridComp/GEOS_OgcmGridComp.F90 index 1cfc907ff..7e50a8a14 100644 --- a/GEOSogcm_GridComp/GEOS_OgcmGridComp.F90 +++ b/GEOSogcm_GridComp/GEOS_OgcmGridComp.F90 @@ -778,7 +778,7 @@ subroutine SetServices ( GC, RC ) end if ! Children's imports are in the ocean grid and are all satisfied -! by OGCM from exchange grid quantities. +! by OGCM from exchange grid quantities. if (ocean_data_type == 'ExtData') then if (DO_DATASEAONLY==1) then ! fake-ocean (i.e., data ocean) From 7ed73c1f9bfae898ce45633e33fd7a31f21bcdda Mon Sep 17 00:00:00 2001 From: sanAkel Date: Sun, 20 Feb 2022 00:55:32 -0500 Subject: [PATCH 18/28] add ExtData as an optional way to gather kpar data; default is via binary file, that is read by MAPL_ReadForcing --- .../GEOS_OradBioGridComp.F90 | 43 ++++++++++++------- 1 file changed, 27 insertions(+), 16 deletions(-) diff --git a/GEOSogcm_GridComp/GEOS_OradBioGridComp/GEOS_OradBioGridComp.F90 b/GEOSogcm_GridComp/GEOS_OradBioGridComp/GEOS_OradBioGridComp.F90 index 28e505bac..d59480300 100644 --- a/GEOSogcm_GridComp/GEOS_OradBioGridComp/GEOS_OradBioGridComp.F90 +++ b/GEOSogcm_GridComp/GEOS_OradBioGridComp/GEOS_OradBioGridComp.F90 @@ -24,6 +24,8 @@ module GEOS_OradBioGridCompMod integer, parameter :: NB_CHOU_UV = 5 ! Number of UV bands integer, parameter :: NB_CHOU_NIR = 3 ! Number of near-IR bands integer, parameter :: NB_CHOU = NB_CHOU_UV + NB_CHOU_NIR ! Total number of bands + + character(len=ESMF_MAXSTR) :: ocean_data_type #include "definebio.h" #include "comlte.h" @@ -105,6 +107,9 @@ subroutine SetServices ( GC, RC ) integer :: STATUS character(len=ESMF_MAXSTR) :: COMP_NAME +! Local derived type aliases + + type (MAPL_MetaComp ), pointer :: MAPL => null() !============================================================================= ! Begin... @@ -127,6 +132,8 @@ subroutine SetServices ( GC, RC ) ! Set the state variable specs. ! ----------------------------- + call MAPL_GetResource (MAPL, ocean_data_type, Label="OCEAN_DATA_TYPE:", DEFAULT="Binary", __RC__ ) ! Binary or ExtData + !BOC ! !IMPORT STATE: @@ -435,14 +442,16 @@ subroutine SetServices ( GC, RC ) RC=STATUS ) VERIFY_(STATUS) - call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'data_kpar', & - LONG_NAME = 'PAR_extinction_coefficient', & - UNITS = 'm-1', & - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & - RC=STATUS ) - VERIFY_(STATUS) + if (ocean_data_type == 'ExtData') then + call MAPL_AddImportSpec(GC, & + SHORT_NAME = 'data_kpar', & + LONG_NAME = 'PAR_extinction_coefficient', & + UNITS = 'm-1', & + DIMS = MAPL_DimsHorzOnly, & + VLOCATION = MAPL_VLocationNone, & + RC=STATUS ) + VERIFY_(STATUS) + endif ! !EXPORT STATE: @@ -713,7 +722,7 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) real, pointer, dimension(:,:) :: CLDTC => null() real, pointer, dimension(:,:) :: RLWP => null() real, pointer, dimension(:,:) :: CDRE => null() - real, pointer, dimension(:,:) :: data_kpar + real, pointer, dimension(:,:) :: data_kpar => null() !============================================================================= @@ -810,13 +819,15 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) ! Get KPAR from data file !------------------------ -! call MAPL_GetResource(MAPL,DATAFILE,LABEL="KPAR_FILE:" , RC=STATUS) -! VERIFY_(STATUS) -! call MAPL_ReadForcing(MAPL,'KPAR',DATAFILE,CURRENTTIME,KPAR, RC=STATUS) -! VERIFY_(STATUS) - call MAPL_GetPointer(import, data_kpar, 'DATA_KPAR', __RC__) - VERIFY_(STATUS) - KPAR = data_kpar + if (ocean_data_type == 'Binary') then + call MAPL_GetResource(MAPL,DATAFILE,LABEL="KPAR_FILE:" , RC=STATUS) + VERIFY_(STATUS) + call MAPL_ReadForcing(MAPL,'KPAR',DATAFILE,CURRENTTIME,KPAR, RC=STATUS) + VERIFY_(STATUS) + else + call MAPL_GetPointer(import, data_kpar, 'DATA_KPAR', __RC__) + KPAR = data_kpar + end if ! Use Beer'S Law to compute flux divergence !------------------------------------------ From c8a55856cc8f81f6e004bd733ec8b6e2c923322b Mon Sep 17 00:00:00 2001 From: sanAkel Date: Sun, 20 Feb 2022 01:09:02 -0500 Subject: [PATCH 19/28] add ExtData as an optional way to gather kpar data; default is via binary file, that is read by MAPL_ReadForcing. Nullify pointers at declaration. --- .../GEOS_OradGridComp/GEOS_OradGridComp.F90 | 93 +++++++++++-------- 1 file changed, 53 insertions(+), 40 deletions(-) diff --git a/GEOSogcm_GridComp/GEOS_OradGridComp/GEOS_OradGridComp.F90 b/GEOSogcm_GridComp/GEOS_OradGridComp/GEOS_OradGridComp.F90 index 75097c739..4046bf835 100644 --- a/GEOSogcm_GridComp/GEOS_OradGridComp/GEOS_OradGridComp.F90 +++ b/GEOSogcm_GridComp/GEOS_OradGridComp/GEOS_OradGridComp.F90 @@ -23,6 +23,8 @@ module GEOS_OradGridCompMod public SetServices + character(len=ESMF_MAXSTR) :: ocean_data_type + ! !DESCRIPTION: ! ! {\tt GEOS\_Orad} is a light-weight gridded component that updates @@ -66,6 +68,10 @@ subroutine SetServices ( GC, RC ) integer :: STATUS character(len=ESMF_MAXSTR) :: COMP_NAME +! Local derived type aliases + + type (MAPL_MetaComp ), pointer :: MAPL => null() + !============================================================================= ! Begin... @@ -86,6 +92,9 @@ subroutine SetServices ( GC, RC ) ! Set the state variable specs. ! ----------------------------- + + call MAPL_GetResource (MAPL,ocean_data_type, Label="OCEAN_DATA_TYPE:", DEFAULT="Binary", __RC__ ) ! Binary or ExtData + !BOS ! !INTERNAL STATE: @@ -113,14 +122,16 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) - call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'data_kpar', & - LONG_NAME = 'PAR_extinction_coefficient', & - UNITS = 'm-1', & - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & - RC=STATUS ) + if (ocean_data_type == 'ExtData') then + call MAPL_AddImportSpec(GC, & + SHORT_NAME = 'data_kpar', & + LONG_NAME = 'PAR_extinction_coefficient', & + UNITS = 'm-1', & + DIMS = MAPL_DimsHorzOnly, & + VLOCATION = MAPL_VLocationNone, & + RC=STATUS ) VERIFY_(STATUS) + end if ! !EXPORT STATE: @@ -363,43 +374,43 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) type (MAPL_MetaComp), pointer :: MAPL type (ESMF_Time) :: CurrentTime character(len=ESMF_MAXSTR) :: DATAFILE - real, pointer, dimension(:,:) :: KPAR - real, pointer, dimension(:,:) :: Z - real, pointer, dimension(:,:) :: UVR - real, pointer, dimension(:,:) :: PAR - real, pointer, dimension(:,:) :: NIR + real, pointer, dimension(:,:) :: KPAR => null() + real, pointer, dimension(:,:) :: Z => null() + real, pointer, dimension(:,:) :: UVR => null() + real, pointer, dimension(:,:) :: PAR => null() + real, pointer, dimension(:,:) :: NIR => null() integer :: L integer :: IM,JM,LM ! pointers to export - real, pointer, dimension(:,:,:) :: QSW - real, pointer, dimension(:,: ) :: KPARX + real, pointer, dimension(:,:,:) :: QSW => null() + real, pointer, dimension(:,: ) :: KPARX => null() ! pointers to import - real, pointer, dimension(:,:) :: COSZ - real, pointer, dimension(:,:) :: FR - real, pointer, dimension(:,:) :: PRUVR - real, pointer, dimension(:,:) :: PRPAR - real, pointer, dimension(:,:) :: PRUVF - real, pointer, dimension(:,:) :: PRPAF - real, pointer, dimension(:,:) :: DRNIR - real, pointer, dimension(:,:) :: DFNIR - real, pointer, dimension(:,:,:) :: H - real, pointer, dimension(:,:) :: data_kpar + real, pointer, dimension(:,:) :: COSZ => null() + real, pointer, dimension(:,:) :: FR => null() + real, pointer, dimension(:,:) :: PRUVR => null() + real, pointer, dimension(:,:) :: PRPAR => null() + real, pointer, dimension(:,:) :: PRUVF => null() + real, pointer, dimension(:,:) :: PRPAF => null() + real, pointer, dimension(:,:) :: DRNIR => null() + real, pointer, dimension(:,:) :: DFNIR => null() + real, pointer, dimension(:,:,:) :: H => null() + real, pointer, dimension(:,:) :: data_kpar => null() ! ponters to export - real, pointer, dimension(:,:) :: FRx - real, pointer, dimension(:,:) :: PRUVRx - real, pointer, dimension(:,:) :: PRPARx - real, pointer, dimension(:,:) :: PRUVFx - real, pointer, dimension(:,:) :: PRPAFx - real, pointer, dimension(:,:) :: DRNIRx - real, pointer, dimension(:,:) :: DFNIRx - real, pointer, dimension(:,:) :: SWFLX - real, pointer, dimension(:,:,:) :: Hx + real, pointer, dimension(:,:) :: FRx => null() + real, pointer, dimension(:,:) :: PRUVRx => null() + real, pointer, dimension(:,:) :: PRPARx => null() + real, pointer, dimension(:,:) :: PRUVFx => null() + real, pointer, dimension(:,:) :: PRPAFx => null() + real, pointer, dimension(:,:) :: DRNIRx => null() + real, pointer, dimension(:,:) :: DFNIRx => null() + real, pointer, dimension(:,:) :: SWFLX => null() + real, pointer, dimension(:,:,:) :: Hx => null() real, parameter :: KUVR = 0.09 @@ -493,14 +504,16 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) ! Get KPAR from data file !------------------------ -! call MAPL_GetResource(MAPL,DATAFILE,LABEL="KPAR_FILE:" , RC=STATUS) -! VERIFY_(STATUS) + if (ocean_data_type == 'Binary') then + call MAPL_GetResource(MAPL,DATAFILE,LABEL="KPAR_FILE:" , RC=STATUS) + VERIFY_(STATUS) -! call MAPL_ReadForcing(MAPL,'KPAR',DATAFILE,CURRENTTIME,KPAR, RC=STATUS) -! VERIFY_(STATUS) - call MAPL_GetPointer(import, data_kpar, 'DATA_KPAR', __RC__) - VERIFY_(STATUS) - KPAR = data_kpar + call MAPL_ReadForcing(MAPL,'KPAR',DATAFILE,CURRENTTIME,KPAR, RC=STATUS) + VERIFY_(STATUS) + else + call MAPL_GetPointer(import, data_kpar, 'DATA_KPAR', __RC__) + KPAR = data_kpar + end if ! Use Beer'S Law to compute flux divergence !------------------------------------------ From 7fcefae51a9464f44a8ae9d9acbb73f92482fa29 Mon Sep 17 00:00:00 2001 From: Matthew Thompson Date: Tue, 22 Feb 2022 15:50:46 -0500 Subject: [PATCH 20/28] Remove Ocean Grid Comp --- GEOSogcm_GridComp/.gitignore | 3 + .../GEOS_OceanGridComp/CMakeLists.txt | 7 - .../GEOS_OceanGridComp/GEOS_OceanGridComp.F90 | 1377 ----------- .../GEOSdatasea_GridComp/CMakeLists.txt | 6 - .../GEOS_DataSeaGridComp.F90 | 406 ---- .../MOM6_GEOSPlug/.gitignore | 3 - .../MOM6_GEOSPlug/CMakeLists.txt | 27 - .../MOM6_GEOSPlug/MOM6_GEOSPlug.F90 | 1587 ------------ .../mom6_app/1440x1080/MOM_input | 805 ------ .../mom6_app/1440x1080/MOM_override | 20 - .../mom6_app/1440x1080/README.md | 1 - .../mom6_app/1440x1080/data_table | 0 .../mom6_app/1440x1080/diag_table | 494 ---- .../mom6_app/1440x1080/g5aodas_diag_table | 494 ---- .../mom6_app/1440x1080/g5aodas_input.nml | 11 - .../mom6_app/1440x1080/input.nml | 11 - .../MOM6_GEOSPlug/mom6_app/360x210/MOM_input | 660 ----- .../mom6_app/360x210/MOM_override | 26 - .../mom6_app/360x210/MOM_parameter_doc.all | 1986 --------------- .../MOM6_GEOSPlug/mom6_app/360x210/README.md | 1 - .../MOM6_GEOSPlug/mom6_app/360x210/data_table | 0 .../MOM6_GEOSPlug/mom6_app/360x210/diag_table | 494 ---- .../MOM6_GEOSPlug/mom6_app/360x210/input.nml | 11 - .../MOM6_GEOSPlug/mom6_app/360x320/MOM_input | 1 - .../mom6_app/360x320/MOM_override | 1 - .../MOM6_GEOSPlug/mom6_app/360x320/data_table | 0 .../MOM6_GEOSPlug/mom6_app/360x320/diag_table | 494 ---- .../mom6_app/360x320/geos/MOM_input | 652 ----- .../mom6_app/360x320/geos/MOM_override | 26 - .../mom6_app/360x320/geos/README.md | 1 - .../MOM6_GEOSPlug/mom6_app/360x320/input.nml | 11 - .../mom6_app/360x320/soca/MOM_input | 785 ------ .../mom6_app/360x320/soca/MOM_override | 70 - .../mom6_app/360x320/soca/README.md | 1 - .../MOM6_GEOSPlug/mom6_app/72x36/MOM_input | 460 ---- .../MOM6_GEOSPlug/mom6_app/72x36/MOM_override | 33 - .../mom6_app/72x36/MOM_parameter_doc.all | 1978 --------------- .../MOM6_GEOSPlug/mom6_app/72x36/README.md | 1 - .../MOM6_GEOSPlug/mom6_app/72x36/data_table | 0 .../MOM6_GEOSPlug/mom6_app/72x36/diag_table | 494 ---- .../mom6_app/72x36/g5aodas_diag_table | 494 ---- .../mom6_app/72x36/g5aodas_input.nml | 11 - .../MOM6_GEOSPlug/mom6_app/72x36/input.nml | 11 - .../MOM6_GEOSPlug/mom6_app/README.md | 3 - .../MOM6_GEOSPlug/mom6_cmake/CMakeLists.txt | 520 ---- .../MOM_GEOS5PlugMod/.gitignore | 3 - .../MOM_GEOS5PlugMod/CMakeLists.txt | 22 - .../MOM_GEOS5PlugMod/MOM_GEOS5PlugMod.F90 | 2156 ----------------- 48 files changed, 3 insertions(+), 16655 deletions(-) create mode 100644 GEOSogcm_GridComp/.gitignore delete mode 100644 GEOSogcm_GridComp/GEOS_OceanGridComp/CMakeLists.txt delete mode 100644 GEOSogcm_GridComp/GEOS_OceanGridComp/GEOS_OceanGridComp.F90 delete mode 100644 GEOSogcm_GridComp/GEOS_OceanGridComp/GEOSdatasea_GridComp/CMakeLists.txt delete mode 100644 GEOSogcm_GridComp/GEOS_OceanGridComp/GEOSdatasea_GridComp/GEOS_DataSeaGridComp.F90 delete mode 100644 GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/.gitignore delete mode 100644 GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/CMakeLists.txt delete mode 100644 GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/MOM6_GEOSPlug.F90 delete mode 100644 GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/1440x1080/MOM_input delete mode 100644 GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/1440x1080/MOM_override delete mode 100644 GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/1440x1080/README.md delete mode 100644 GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/1440x1080/data_table delete mode 100644 GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/1440x1080/diag_table delete mode 100644 GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/1440x1080/g5aodas_diag_table delete mode 100644 GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/1440x1080/g5aodas_input.nml delete mode 100644 GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/1440x1080/input.nml delete mode 100644 GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/360x210/MOM_input delete mode 100644 GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/360x210/MOM_override delete mode 100644 GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/360x210/MOM_parameter_doc.all delete mode 100644 GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/360x210/README.md delete mode 100644 GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/360x210/data_table delete mode 100644 GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/360x210/diag_table delete mode 100644 GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/360x210/input.nml delete mode 120000 GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/360x320/MOM_input delete mode 120000 GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/360x320/MOM_override delete mode 100644 GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/360x320/data_table delete mode 100644 GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/360x320/diag_table delete mode 100644 GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/360x320/geos/MOM_input delete mode 100644 GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/360x320/geos/MOM_override delete mode 100644 GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/360x320/geos/README.md delete mode 100644 GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/360x320/input.nml delete mode 100755 GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/360x320/soca/MOM_input delete mode 100755 GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/360x320/soca/MOM_override delete mode 100644 GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/360x320/soca/README.md delete mode 100755 GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/72x36/MOM_input delete mode 100755 GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/72x36/MOM_override delete mode 100644 GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/72x36/MOM_parameter_doc.all delete mode 100644 GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/72x36/README.md delete mode 100755 GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/72x36/data_table delete mode 100755 GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/72x36/diag_table delete mode 100755 GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/72x36/g5aodas_diag_table delete mode 100755 GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/72x36/g5aodas_input.nml delete mode 100755 GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/72x36/input.nml delete mode 100644 GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/README.md delete mode 100644 GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_cmake/CMakeLists.txt delete mode 100644 GEOSogcm_GridComp/GEOS_OceanGridComp/MOM_GEOS5PlugMod/.gitignore delete mode 100644 GEOSogcm_GridComp/GEOS_OceanGridComp/MOM_GEOS5PlugMod/CMakeLists.txt delete mode 100644 GEOSogcm_GridComp/GEOS_OceanGridComp/MOM_GEOS5PlugMod/MOM_GEOS5PlugMod.F90 diff --git a/GEOSogcm_GridComp/.gitignore b/GEOSogcm_GridComp/.gitignore new file mode 100644 index 000000000..c2735a314 --- /dev/null +++ b/GEOSogcm_GridComp/.gitignore @@ -0,0 +1,3 @@ +/@GEOS_OceanGridComp +/GEOS_OceanGridComp +/GEOS_OceanGridComp@ diff --git a/GEOSogcm_GridComp/GEOS_OceanGridComp/CMakeLists.txt b/GEOSogcm_GridComp/GEOS_OceanGridComp/CMakeLists.txt deleted file mode 100644 index de66e2520..000000000 --- a/GEOSogcm_GridComp/GEOS_OceanGridComp/CMakeLists.txt +++ /dev/null @@ -1,7 +0,0 @@ -esma_set_this () - -esma_add_library (${this} - SRCS GEOS_OceanGridComp.F90 - SUBCOMPONENTS MOM6_GEOSPlug MOM_GEOS5PlugMod GEOSdatasea_GridComp - DEPENDENCIES GEOSdatasea_GridComp MAPL - INCLUDES ${INC_ESMF}) diff --git a/GEOSogcm_GridComp/GEOS_OceanGridComp/GEOS_OceanGridComp.F90 b/GEOSogcm_GridComp/GEOS_OceanGridComp/GEOS_OceanGridComp.F90 deleted file mode 100644 index 0a4bdf48e..000000000 --- a/GEOSogcm_GridComp/GEOS_OceanGridComp/GEOS_OceanGridComp.F90 +++ /dev/null @@ -1,1377 +0,0 @@ -!$Id$ - -#include "MAPL_Generic.h" - -module GEOS_OceanGridCompMod - -!BOP -! !MODULE: GEOS_OceanGridCompMod -- Implements ESMF wrapper to invoke the DATASEA/MIT/MOM ocean models. - -! !USES: - - use ESMF - use MAPL - use GEOS_DataSeaGridCompMod, only: DataSeaSetServices => SetServices - - implicit none - private - -! !PUBLIC ROUTINES: - - public SetServices - - character(len=ESMF_MAXSTR) :: OCEAN_NAME - integer :: DO_DATASEA - real :: OrphanDepth - -! !DESCRIPTION: -! -! {\tt GuestOcean\_GridComp} is a light-weight gridded component that serves an -! interface to ocean/data\_ocean components. -! -!EOP - - type :: T_PrivateState - type(ESMF_Clock) :: CLOCK - end type T_PrivateState - - type :: T_PrivateState_Wrap - type(T_PrivateState), pointer :: ptr - end type T_PrivateState_Wrap - - integer :: OCN - integer :: OCNd - logical :: DUAL_OCEAN - - -contains - -!BOP - -! !IROUTINE: SetServices -- Sets ESMF services for GuestOcean - -! !INTERFACE: - - subroutine SetServices ( GC, RC ) - -! !ARGUMENTS: - - type(ESMF_GridComp), intent(INOUT) :: GC ! gridded component - integer, optional :: RC ! return code - -! !DESCRIPTION: This version uses the MAPL\_GenericSetServices, -! which sets the Run, Initialize, and Finalize services, -! as well as allocating our instance of a generic state and putting it in the -! gridded component (GC). Here we override all three methods and declare -! the specs for the Imports and Export States (no MAPL controlled Internal State). -! GuestOcean state variables (the bulletin board and the time) are kept -! in the GuestOcean's Private Internal state. -! -!EOP - -!============================================================================= -! -! ErrLog Variables - - character(len=ESMF_MAXSTR) :: IAm - integer :: STATUS - character(len=ESMF_MAXSTR) :: COMP_NAME - -! Local vars - type (MAPL_MetaComp), pointer :: MAPL - type (ESMF_Config) :: CF - integer :: iDUAL_OCEAN - character(len=ESMF_MAXSTR) :: charbuf_ - character(len=ESMF_MAXSTR) :: sharedObj - -! Begin... - -! Get my name and set-up traceback handle -! --------------------------------------- - - Iam = 'SetServices' - call ESMF_GridCompGet( GC, NAME=COMP_NAME, CONFIG=CF, RC=STATUS ) - VERIFY_(STATUS) - Iam = trim(COMP_NAME) // Iam - - -! Set the state variable specs. -! ----------------------------- - - call MAPL_GetObjectFromGC ( GC, MAPL, RC=STATUS) - VERIFY_(STATUS) - -! Get constants from CF -! --------------------- - - call MAPL_GetResource ( MAPL, DO_DATASEA, Label="USE_DATASEA:" , DEFAULT=1, RC=STATUS) - VERIFY_(STATUS) - call MAPL_GetResource ( MAPL, OrphanDepth, Label="OGCM_TOP_LAYER:" , DEFAULT=10.0, RC=STATUS) - VERIFY_(STATUS) - - if(DO_DATASEA/=0) then - OCEAN_NAME="DATASEA" - OCN = MAPL_AddChild(GC, NAME=OCEAN_NAME, SS=DataSeaSetServices, RC=STATUS) - VERIFY_(STATUS) - else - call MAPL_GetResource ( MAPL, OCEAN_NAME, Label="OCEAN_NAME:", DEFAULT="MOM", __RC__ ) - select case (trim(OCEAN_NAME)) - case ("MOM") - call MAPL_GetResource ( MAPL, sharedObj, Label="MOM_GEOS5PLUGMOD:", DEFAULT="libMOM_GEOS5PlugMod.so", __RC__ ) - OCN = MAPL_AddChild(OCEAN_NAME,'setservices_', parentGC=GC, sharedObj=sharedObj, __RC__) - case ("MOM6") - call MAPL_GetResource ( MAPL, sharedObj, Label="MOM6_GEOSPLUG:", DEFAULT="libMOM6_GEOSPlug.so", __RC__ ) - OCN = MAPL_AddChild(OCEAN_NAME,'setservices_', parentGC=GC, sharedObj=sharedObj, __RC__) - case default - charbuf_ = "OCEAN_NAME: " // trim(OCEAN_NAME) // " is not implemented, ABORT!" - call WRITE_PARALLEL(charbuf_) - VERIFY_(999) - end select - endif - - call MAPL_GetResource(MAPL, iDUAL_OCEAN, 'DUAL_OCEAN:', default=0, __RC__ ) - DUAL_OCEAN = iDUAL_OCEAN /= 0 - - OCNd = 0 - if (dual_ocean) then - OCNd = MAPL_AddChild(GC, NAME="DATASEA", SS=DataSeaSetServices, RC=STATUS) - VERIFY_(STATUS) - endif - -! Set the state variable specs. -! ----------------------------- - -!BOS - -! !IMPORT STATE: - - call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'FROCEAN', & - LONG_NAME = 'fraction_of_gridbox_covered_by_ocean',& - UNITS = '1', & - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'TAUX', & - LONG_NAME = 'Agrid_eastward_stress_on_ocean', & - UNITS = 'N m-2', & - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'TAUY', & - LONG_NAME = 'Agrid_northward_stress_on_ocean', & - UNITS = 'N m-2', & - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'PENUVR', & - LONG_NAME = 'net_downward_penetrating_direct_UV_flux', & - UNITS = 'W m-2', & - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'PENPAR', & - LONG_NAME = 'net_downward_penetrating_direct_PAR_flux', & - UNITS = 'W m-2', & - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'PENUVF', & - LONG_NAME = 'net_downward_penetrating_diffuse_UV_flux', & - UNITS = 'W m-2', & - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'PENPAF', & - LONG_NAME = 'net_downward_penetrating_diffuse_PAR_flux', & - UNITS = 'W m-2', & - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddImportSpec(GC, & - LONG_NAME = 'net_surface_downwelling_nir_beam_flux',& - UNITS = 'W m-2' ,& - SHORT_NAME = 'DRNIR' ,& - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddImportSpec(GC, & - LONG_NAME = 'net_surface_downwelling_nir_diffuse_flux',& - UNITS = 'W m-2' ,& - SHORT_NAME = 'DFNIR' ,& - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'SWHEAT', & - LONG_NAME = 'solar_heating_rate', & - UNITS = 'W m-2', & - DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, & - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddImportSpec(GC, & - LONG_NAME = 'river_discharge_at_ocean_points',& - UNITS = 'kg m-2 s-1' ,& - SHORT_NAME = 'DISCHARGE' ,& - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & - RC=STATUS ) - VERIFY_(STATUS) - - if (trim(OCEAN_NAME) == "MOM") then - call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'TR', & - LONG_NAME = 'tracer_mixing_ratios', & - UNITS = '1', & - DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, & - DATATYPE = MAPL_BundleItem, & - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'TRFLUX', & - LONG_NAME = 'surface_fluxes_of_tracers', & - UNITS = 'X', & - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & - DATATYPE = MAPL_BundleItem, & - RC=STATUS ) - VERIFY_(STATUS) - endif - - call MAPL_AddImportSpec(GC, & - LONG_NAME = 'surface_net_downward_longwave_flux',& - UNITS = 'W m-2', & - SHORT_NAME = 'LWFLX' ,& - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddImportSpec(GC, & - LONG_NAME = 'upward_sensible_heat_flux' ,& - UNITS = 'W m-2', & - SHORT_NAME = 'SHFLX' ,& - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddImportSpec(GC, & - LONG_NAME = 'evaporation' ,& - UNITS = 'kg m-2 s-1' ,& - SHORT_NAME = 'QFLUX' ,& - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddImportSpec(GC, & - LONG_NAME = 'ocean_snowfall' ,& - UNITS = 'kg m-2 s-1' ,& - SHORT_NAME = 'SNOW' ,& - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddImportSpec(GC, & - LONG_NAME = 'ocean_rainfall' ,& - UNITS = 'kg m-2 s-1' ,& - SHORT_NAME = 'RAIN' ,& - DIMS = MAPL_DimsHorzOnly ,& - VLOCATION = MAPL_VLocationNone ,& - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'FRESH', & - LONG_NAME = 'fresh_water_flux_due_to_ice_dynamics', & - UNITS = 'kg m-2 s-1' ,& - DIMS = MAPL_DimsHorzOnly ,& - VLOCATION = MAPL_VLocationNone ,& - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'FSALT', & - LONG_NAME = 'salt_flux_due_to_ice_dynamics', & - UNITS = 'kg m-2 s-1', & - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'FHOCN', & - LONG_NAME = 'heat_flux_due_to_ice_dynamics', & - UNITS = 'W m-2', & - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'PEN_OCN', & - LONG_NAME = 'penetrated_shortwave_flux_at_the_bottom_of_first_ocean_model_layer', & - UNITS = 'W m-2', & - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & - RC=STATUS ) - VERIFY_(STATUS) - - if (dual_ocean) then - call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'FRACICEd', & - LONG_NAME = 'fractional_cover_of_seaice', & - UNITS = '1', & - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & - RC=STATUS ) - VERIFY_(STATUS) - endif - -! ! Need to have this internal state to fill in orphan points: - - call MAPL_AddInternalSpec(GC, & - SHORT_NAME = 'TS_FOUND', & - LONG_NAME = 'foundation_temperature_for_interface_layer',& - UNITS = 'K', & - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & - FRIENDLYTO = trim(COMP_NAME), & - DEFAULT = 280.0, & - RC=STATUS ) - VERIFY_(STATUS) - -!ALT Note the FRACICE from datasea is inhereted (in AMIP or dual_ocean) - -! !EXPORT STATE: - - call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'MASKO', & - LONG_NAME = 'ocean_mask', & - UNITS = '1', & - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & - RC=STATUS ) - VERIFY_(STATUS) - - - call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'SS_FOUND', & - LONG_NAME = 'foundation_salinity_for_interface_layer',& - UNITS = 'PSU', & - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'FRZMLT', & - LONG_NAME = 'freeze_melt_potential', & - UNITS = 'W m-2', & - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & - RC=STATUS ) - VERIFY_(STATUS) - -! Diagnostics exports - - call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'TAUX', & - LONG_NAME = 'Agrid_eastward_stress_on_ocean', & - UNITS = 'N m-2', & - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'TAUY', & - LONG_NAME = 'Agrid_northward_stress_on_ocean', & - UNITS = 'N m-2', & - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'SWHEAT', & - LONG_NAME = 'solar_heating_rate', & - UNITS = 'W m-2', & - DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, & - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'RFLUX', & - LONG_NAME = 'downward_radiative_heat_flux_at_ocean_bottom',& - UNITS = 'W m-2', & - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddExportSpec(GC, & - LONG_NAME = 'river_discharge_at_ocean_points',& - UNITS = 'kg m-2 s-1' ,& - SHORT_NAME = 'DISCHARGE' ,& - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'FROCEAN', & - LONG_NAME = 'fraction_of_gridbox_covered_by_ocean',& - UNITS = '1', & - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddExportSpec(GC, & - LONG_NAME = 'surface_net_downward_longwave_flux',& - UNITS = 'W m-2' ,& - SHORT_NAME = 'LWFLX' ,& - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddExportSpec(GC, & - LONG_NAME = 'surface_net_downward_shortwave_flux',& - UNITS = 'W m-2' ,& - SHORT_NAME = 'SWFLX' ,& - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddExportSpec(GC, & - LONG_NAME = 'upward_sensible_heat_flux' ,& - UNITS = 'W m-2', & - SHORT_NAME = 'SHFLX' ,& - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddExportSpec(GC, & - LONG_NAME = 'evaporation' ,& - UNITS = 'kg m-2 s-1' ,& - SHORT_NAME = 'QFLUX' ,& - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'SFLX', & - LONG_NAME = 'salt_flux_due_to_ice_dynamics', & - UNITS = 'kg m-2 s-1', & - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'RAIN', & - LONG_NAME = 'ocean_rainfall',& - UNITS = 'kg m-2 s-1', & - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'SNOW', & - LONG_NAME = 'ocean_snowfall',& - UNITS = 'kg m-2 s-1', & - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'PEN_OCN', & - LONG_NAME = 'penetrated_shortwave_flux_at_the_bottom_of_first_ocean_model_layer',& - UNITS = 'W m-2', & - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & - RC=STATUS ) - VERIFY_(STATUS) - -! Exports of child - - call MAPL_AddExportSpec ( GC , & - SHORT_NAME = 'TW', & - CHILD_ID = OCN, & - RC=STATUS ) - VERIFY_(STATUS) - call MAPL_AddExportSpec ( GC , & - SHORT_NAME = 'SW', & - CHILD_ID = OCN, & - RC=STATUS ) - VERIFY_(STATUS) - call MAPL_AddExportSpec ( GC , & - SHORT_NAME = 'UW', & - CHILD_ID = OCN, & - RC=STATUS ) - VERIFY_(STATUS) - call MAPL_AddExportSpec ( GC , & - SHORT_NAME = 'VW', & - CHILD_ID = OCN, & - RC=STATUS ) - VERIFY_(STATUS) - - if(DO_DATASEA==0) then - call MAPL_AddExportSpec ( GC , & - SHORT_NAME = 'DH', & - CHILD_ID = OCN, & - RC=STATUS ) - VERIFY_(STATUS) - call MAPL_AddExportSpec ( GC , & - SHORT_NAME = 'UWB', & - CHILD_ID = OCN, & - RC=STATUS ) - VERIFY_(STATUS) - call MAPL_AddExportSpec ( GC , & - SHORT_NAME = 'VWB', & - CHILD_ID = OCN, & - RC=STATUS ) - VERIFY_(STATUS) - if (trim(OCEAN_NAME) == "MOM") then - call MAPL_AddExportSpec ( GC , & - SHORT_NAME = 'SSH', & - CHILD_ID = OCN, & - RC=STATUS ) - VERIFY_(STATUS) - endif - call MAPL_AddExportSpec ( GC , & - SHORT_NAME = 'SLV', & - CHILD_ID = OCN, & - RC=STATUS ) - VERIFY_(STATUS) - if (trim(OCEAN_NAME) == "MOM") then - call MAPL_AddExportSpec ( GC , & - SHORT_NAME = 'PBO', & - CHILD_ID = OCN, & - RC=STATUS ) - VERIFY_(STATUS) - endif - - call MAPL_AddExportSpec ( GC , & - SHORT_NAME = 'T', & - CHILD_ID = OCN, & - RC=STATUS ) - VERIFY_(STATUS) - call MAPL_AddExportSpec ( GC , & - SHORT_NAME = 'S', & - CHILD_ID = OCN, & - RC=STATUS ) - VERIFY_(STATUS) - end if - -!EOS - - if(DO_DATASEA==0) then - call MAPL_TerminateImport ( GC, SHORT_NAME= & - [character(len=9) :: 'TAUX ','TAUY ', & - 'PENUVR','PENPAR','PENUVF','PENPAF', 'DRNIR', 'DFNIR', & - 'DISCHARGE', 'LWFLX', 'SHFLX', 'QFLUX', 'RAIN', 'SNOW', & - 'SFLX','SWHEAT'], & ! do not terminate import of PEN_OCN since it is not used in the `plug' - CHILD=OCN, RC=STATUS ) - VERIFY_(STATUS) - end if - -! Set the Initialize, Run, Finalize entry points -! ---------------------------------------------- - - call MAPL_GridCompSetEntryPoint ( GC, ESMF_METHOD_INITIALIZE, Initialize, RC=status) - VERIFY_(STATUS) -! phase 1 - call MAPL_GridCompSetEntryPoint ( GC, ESMF_METHOD_RUN, Run, RC=status) - VERIFY_(STATUS) -! phase 2 - this is only used in the predictor part of the replay for dual ocean - if (DUAL_OCEAN) then - call MAPL_GridCompSetEntryPoint ( GC, ESMF_METHOD_RUN, Run, RC=status) - VERIFY_(STATUS) - end if - -! terminate child's import for a temperature correction - we will fill it here, if we run in dual_ocean mode, otherwise nobody needs this variable - if(DUAL_OCEAN) then - call MAPL_TerminateImport ( GC, & - SHORT_NAME = (/'DEL_TEMP'/), & - CHILD = OCN, & - RC=STATUS ) - VERIFY_(STATUS) - endif - - -!============================================================================= -! Generic SetServices--This creates the generic state and calls SetServices for children -!--------------------------------------------------------------------------------------- - - call MAPL_GenericSetServices ( GC, RC=STATUS ) - VERIFY_(STATUS) - -! Set the Profiling timers -! ------------------------ - - call MAPL_TimerAdd(GC, name="INITIALIZE" ,RC=STATUS) - VERIFY_(STATUS) - call MAPL_TimerAdd(GC, name="RUN" ,RC=STATUS) - VERIFY_(STATUS) - call MAPL_TimerAdd(GC, name="--ModRun" ,RC=STATUS) - VERIFY_(STATUS) - -! All Done -!--------- - - RETURN_(ESMF_SUCCESS) - end subroutine SetServices - -! ----------------------------------------------------------------- - -!BOP - -! !IROUTINE: INITIALIZE -- Initialize method for ExternalOcean wrapper - -! !INTERFACE: - - subroutine Initialize ( GC, IMPORT, EXPORT, CLOCK, RC ) - -! !ARGUMENTS: - - type(ESMF_GridComp), intent(INOUT) :: GC ! Gridded component - type(ESMF_State), intent(INOUT) :: IMPORT ! Import state - type(ESMF_State), intent(INOUT) :: EXPORT ! Export state - type(ESMF_Clock), intent(INOUT) :: CLOCK ! The clock - integer, optional, intent( OUT) :: RC ! Error code: - -!EOP - -! ErrLog Variables - - character(len=ESMF_MAXSTR) :: IAm - integer :: STATUS - character(len=ESMF_MAXSTR) :: COMP_NAME - -! Local derived type aliases - - type (MAPL_MetaComp), pointer :: State - type (ESMF_Grid) :: Grid - type (T_PrivateState), pointer :: PrivateSTATE - type (T_PrivateState_Wrap) :: WRAP - integer :: IM, JM, LM - real :: DT - - type (ESMF_State ), pointer :: GIM(:) - type (ESMF_State ), pointer :: GEX(:) - type (ESMF_TimeInterval) :: timeStep - type (ESMF_Time) :: currTime - - real, pointer :: MASK(:,:) - real, pointer :: MASKO(:,:) - real, pointer :: MASK3D(:,:,:) - real, pointer :: DH(:,:,:) - -!============================================================================= - -! Begin... - -! Get the target components name and set-up traceback handle. -! ----------------------------------------------------------- - - Iam = "Initialize" - call ESMF_GridCompGet( GC, NAME=COMP_NAME, grid=GRID, RC=status ) - VERIFY_(STATUS) - Iam = trim(comp_name) // trim(Iam) - -! Get my internal MAPL_Generic state -!----------------------------------- - - call MAPL_GetObjectFromGC ( GC, State, RC=STATUS) - VERIFY_(STATUS) - -! Profilers -!---------- - - call MAPL_TimerOn(STATE,"INITIALIZE") - call MAPL_TimerOn(STATE,"TOTAL" ) - -! Get info from the Generic state -!-------------------------------- - - call MAPL_Get(STATE, & - GIM = GIM, & - GEX = GEX, & - RC=STATUS ) - VERIFY_(STATUS) - - -! Allocate the private state... -!------------------------------ - - allocate( PrivateSTATE , stat=STATUS ) - VERIFY_(STATUS) - - wrap%ptr => PrivateState - -! And put it in the GC -!--------------------- - - CALL ESMF_UserCompSetInternalState( GC, TRIM(OCEAN_NAME)//'_internal_state', WRAP, STATUS ) - VERIFY_(status) - -! Initialize the PrivateState. First the time... -!----------------------------------------------- - call MAPL_GetResource(STATE,DT, Label="RUN_DT:", RC=STATUS) ! Get AGCM Heartbeat - VERIFY_(status) - call MAPL_GetResource(STATE,DT, Label="OCEAN_DT:", DEFAULT=DT, RC=STATUS) ! set Default OCEAN_DT to AGCM Heartbeat - VERIFY_(status) - - CALL ESMF_TimeIntervalSet(timeStep, S=NINT(DT), RC=status) - VERIFY_(status) - - call ESMF_ClockGet(CLOCK, currTIME=currTime, RC=STATUS) - VERIFY_(STATUS) - -!ALT: check with Max about moving the clock 1 step forward - PrivateState%clock = ESMF_ClockCreate(NAME = TRIM(OCEAN_NAME)//"Clock", & - timeStep=timeStep, startTime=currTime, rc=status) - VERIFY_(status) - - -! Initialize the Ocean Model. -! -! This verifies the Grid and the Time against the private restarts. -! -! Verifying that the GuestOcean grid and decomposition match those -! inherited by the component. This is simply asserting that the -! local im, jm, and lm are the same and making sure its internal -! communication is consistent with the VM in the host's grid, probably -! by initializing the guests's internal communication with the -! communicator that comes from the VM in the Grid's Layout. -! -! Note thet tha bulletin board states , GIM(:) and GEX(:), have been created and -! populated with nodata fields. The ESMF arrays will be filled later. - -!----------------------------------------------------------------------- - -! Get sizes from my internal state -!--------------------------------- - call MAPL_Get(STATE, & - IM=IM, & - JM=JM, & - LM=LM, & - RC=STATUS) - VERIFY_(STATUS) - -! Once we know we have a valid ESMF grid, we can call MAPL_GenericInitialize. -! This will allow us to use the built-in checkpoint/restart for our states. -!---------------------------------------------------------------------------- - - - call MAPL_TimerOff(STATE,"TOTAL" ) - call MAPL_GenericInitialize( GC, IMPORT, EXPORT, CLOCK, RC=status ) - VERIFY_(STATUS) - call MAPL_TimerOn (STATE,"TOTAL" ) - - if(DO_DATASEA==0) then - call MAPL_GetPointer(EXPORT, MASKO, 'MASKO' , alloc=.true.,__RC__) - - select case (trim(OCEAN_NAME)) - case ("MOM") - call MAPL_GetPointer(GEX(OCN), MASK3D, 'MOM_3D_MASK', __RC__) - MASK => MASK3D(:,:,1) - case ("MOM6") - call MAPL_GetPointer(GEX(OCN), MASK, 'MOM_2D_MASK', __RC__) - end select - if(associated(MASKO)) MASKO = MASK - end if - - call MAPL_TimerOff(STATE,"TOTAL" ) - call MAPL_TimerOff(STATE,"INITIALIZE") - -! All Done -!--------- - RETURN_(ESMF_SUCCESS) - - end subroutine Initialize - -! ======================================================== - -!BOP - -! !IROUTINE: Run -- Run method for ExternalModel wrapper - -! !INTERFACE: - - subroutine Run ( gc, import, export, clock, rc ) - -! !ARGUMENTS: - - type(ESMF_GridComp), intent(INOUT) :: gc ! Gridded component - type(ESMF_State), intent(INOUT) :: import ! Import state - type(ESMF_State), intent(INOUT) :: export ! Export state - type(ESMF_Clock), intent(INOUT) :: clock ! The supervisor clock - integer, optional, intent( OUT) :: rc ! Error code: - -!EOP - -! ErrLog Variables - - character(len=ESMF_MAXSTR) :: IAm - integer :: STATUS - character(len=ESMF_MAXSTR) :: COMP_NAME - -! Local derived type aliases - - type (MAPL_MetaComp), pointer :: STATE - type (ESMF_Time) :: EndTime - type (ESMF_Time) :: MyTime,ct - type (T_PrivateState), pointer :: PrivateSTATE - type (T_PrivateState_Wrap) :: WRAP - type (ESMF_GridComp ), pointer :: GCS(:) - type (ESMF_State ), pointer :: GIM(:) - type (ESMF_State ), pointer :: GEX(:) - -! Pointers to Imports - - real, pointer :: FROCEAN(:,:) - real, pointer :: TAUXi(:,:) - real, pointer :: TAUYi(:,:) - real, pointer :: PENUVRi(:,:) - real, pointer :: PENPARi(:,:) - real, pointer :: PENUVFi(:,:) - real, pointer :: PENPAFi(:,:) - real, pointer :: DRNIRi(:,:) - real, pointer :: DFNIRi(:,:) - real, pointer :: HEATi(:,:,:) - real, pointer :: DISCHARGEi(:,:) - real, pointer :: LWFLXi(:,:) - real, pointer :: SHFLXi(:,:) - real, pointer :: QFLUXi(:,:) - real, pointer :: SNOWi(:,:) - real, pointer :: RAINi(:,:) - real, pointer :: FHOCN(:,:) - real, pointer :: FRESH(:,:) - real, pointer :: FSALT(:,:) - real, pointer :: PEN_OCN(:,:) - -! Pointers to Exports - - real, pointer :: TS_FOUND (:,:) - real, pointer :: SS_FOUND (:,:) - real, pointer :: FRZMLTe(:,:) - -! Diagnostics exports - - real, pointer :: RFLUX (:,:) - real, pointer :: TAUXe (:,:) - real, pointer :: TAUYe (:,:) - real, pointer :: HEATe (:,:,:) - real, pointer :: FROCEANe (:,:) - real, pointer :: DISCHARGEe(:,:) - real, pointer :: LWFLXe(:,:) - real, pointer :: SWFLXe(:,:) - real, pointer :: SHFLXe(:,:) - real, pointer :: QFLUXe(:,:) - real, pointer :: RAINe(:,:) - real, pointer :: SNOWe(:,:) - real, pointer :: SFLXe(:,:) - real, pointer :: PEN_OCNe(:,:) - - -! Pointers to imports of child - - real, pointer :: TAUX(:,:) - real, pointer :: TAUY(:,:) - real, pointer :: PENUVR(:,:) - real, pointer :: PENPAR(:,:) - real, pointer :: PENUVF(:,:) - real, pointer :: PENPAF(:,:) - real, pointer :: DRNIR(:,:) - real, pointer :: DFNIR(:,:) - real, pointer :: HEAT(:,:,:) - real, pointer :: DISCHARGE(:,:) - real, pointer :: LWFLX(:,:) - real, pointer :: SHFLX(:,:) - real, pointer :: QFLUX(:,:) - real, pointer :: RAIN(:,:) - real, pointer :: SNOW(:,:) - real, pointer :: SFLX(:,:) - real, pointer :: FI(:,:) - real, pointer :: FId(:,:) - -! Pointers to exports of child - - real, pointer :: TW (:,:) - real, pointer :: SW (:,:) - real, pointer :: MASK(:,:) - real, pointer :: MASK3D(:,:,:) - real, pointer :: FRZMLT(:,:) - - real, pointer :: TWd (:,:) - real, pointer :: DEL_TEMP (:,:) - -! Locals - - integer :: I,J,L - integer :: IM - integer :: JM - integer :: LM - integer :: NUM - real, allocatable :: WGHT(:,:) - real :: DT, TAU_SST - real :: TAU_SST_UNDER_ICE - real, pointer :: LONS (:,:) - real, pointer :: LATS (:,:) - real, parameter :: OrphanSalinity=34.0 ! SA: ought to revisit this in context of OGCM rewrite. In reality one should update S as well. - real :: Tfreeze - - integer :: ID - integer :: PHASE - integer, allocatable :: PREDICTOR_CHLD(:) - real, pointer :: FR(:,:) => null() - real, pointer :: FRI(:,:,:) => null() - character(len=ESMF_MAXSTR) :: replayMode - -! Get the component's name and set-up traceback handle. -! ----------------------------------------------------- - - Iam = "Run" - call ESMF_GridCompGet( gc, NAME=comp_name, currentPhase=PHASE, RC=status ) - VERIFY_(status) - if (PHASE >= 10) PHASE = PHASE - 10 ! to be replaced by MAPL get_phase - Iam = trim(comp_name) // Iam - -! Get my internal MAPL_Generic state -!----------------------------------- - - call MAPL_GetObjectFromGC ( GC, STATE, RC=status) - VERIFY_(status) - -! Profilers -!---------- - - call MAPL_TimerOn (STATE,"RUN" ) - call MAPL_TimerOn (STATE,"TOTAL") - -! Get child's import ad export to use as a bulletin board -!-------------------------------------------------------- - call MAPL_Get(STATE, & - GCS = GCS, & - GIM = GIM, & - GEX = GEX, & - LONS = LONS, & - LATS = LATS, & - IM = IM, & - JM = JM, & - LM = LM, & - RC=STATUS ) - VERIFY_(STATUS) - - -! Check the clocks to set set-up the "run-to" time -!------------------------------------------------- - - call ESMF_ClockGet( CLOCK, currTime=endTime, RC=STATUS) - VERIFY_(status) - -! Get GuestModel's private internal state -!--------------------------------- - - CALL ESMF_UserCompGetInternalState( GC, TRIM(OCEAN_NAME)//'_internal_state', WRAP, STATUS ) - VERIFY_(STATUS) - - PrivateSTATE => WRAP%PTR - - call ESMF_ClockGet( PrivateState%CLOCK, currTime=myTime, RC=STATUS) - VERIFY_(status) - - if (myTime > EndTime) then - call ESMF_ClockSet(PrivateState%Clock,direction=ESMF_DIRECTION_REVERSE,rc=status) - VERIFY_(status) - do - call ESMF_ClockAdvance(PrivateState%Clock,rc=status) - VERIFY_(status) - call ESMF_ClockGet(PrivateState%Clock,currTime=ct,rc=status) - VERIFY_(status) - if (ct==endTime) exit - enddo - call ESMF_ClockSet(PrivateState%Clock,direction=ESMF_DIRECTION_FORWARD,rc=status) - VERIFY_(status) - call ESMF_ClockGet( PrivateState%CLOCK, currTime=myTime, RC=STATUS) - VERIFY_(status) - end if - - if( MyTime <= EndTime ) then ! Time to run - -! We get the ocean-land mask (now computed in Initialize of Plug) -! --------------------------------------------------------------- - if(DO_DATASEA==0) then - select case(trim(OCEAN_NAME)) - case ("MOM") - call MAPL_GetPointer(GEX(OCN), MASK3D, 'MOM_3D_MASK', __RC__) - MASK => MASK3D(:,:,1) - case ("MOM6") - call MAPL_GetPointer(GEX(OCN), MASK, 'MOM_2D_MASK', __RC__) - end select - else - allocate(MASK3D(IM,JM,LM), STAT=STATUS); VERIFY_(STATUS) - MASK3D=1.0 - allocate(MASK(IM,JM), STAT=STATUS); VERIFY_(STATUS) - MASK=1.0 - end if - -! Get ocean time step and misc. parameters -!----------------------------------------- - - call MAPL_GetResource(STATE,DT, Label="RUN_DT:", RC=STATUS) ! Get AGCM Heartbeat - VERIFY_(status) - call MAPL_GetResource(STATE,DT, Label="OCEAN_DT:", DEFAULT=DT, RC=STATUS) ! set Default OCEAN_DT to AGCM Heartbeat - VERIFY_(status) - -! Get pointers to imports -!-------------------------------------------------------------------------------- - call MAPL_GetPointer(IMPORT, FROCEAN, 'FROCEAN', RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(IMPORT, TAUXi, 'TAUX' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(IMPORT, TAUYi, 'TAUY' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(IMPORT, PENUVRi, 'PENUVR' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(IMPORT, PENPARi, 'PENPAR' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(IMPORT, PENUVFi, 'PENUVF' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(IMPORT, PENPAFi, 'PENPAF' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(IMPORT, DRNIRi, 'DRNIR' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(IMPORT, DFNIRi, 'DFNIR' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(IMPORT, HEATi, 'SWHEAT' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(IMPORT, DISCHARGEi, 'DISCHARGE' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(IMPORT, LWFLXi, 'LWFLX' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(IMPORT, SHFLXi, 'SHFLX' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(IMPORT, QFLUXi, 'QFLUX' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(IMPORT, SNOWi, 'SNOW' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(IMPORT, RAINi, 'RAIN' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(IMPORT, FHOCN, 'FHOCN' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(IMPORT, FRESH, 'FRESH' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(IMPORT, FSALT, 'FSALT' , RC=STATUS); VERIFY_(STATUS) - -! Get pointers from ImExState -!---------------------------- - if(DO_DATASEA==0) then - call MAPL_GetPointer(GIM(OCN), TAUX, 'TAUX' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(GIM(OCN), TAUY, 'TAUY' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(GIM(OCN), PENUVR, 'PENUVR' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(GIM(OCN), PENPAR, 'PENPAR' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(GIM(OCN), PENUVF, 'PENUVF' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(GIM(OCN), PENPAF, 'PENPAF' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(GIM(OCN), DRNIR, 'DRNIR' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(GIM(OCN), DFNIR, 'DFNIR' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(GIM(OCN), HEAT, 'SWHEAT', RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(GIM(OCN), DISCHARGE, 'DISCHARGE' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(GIM(OCN), LWFLX, 'LWFLX' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(GIM(OCN), SHFLX, 'SHFLX' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(GIM(OCN), QFLUX, 'QFLUX' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(GIM(OCN), RAIN, 'RAIN' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(GIM(OCN), SNOW, 'SNOW' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(GIM(OCN), SFLX, 'SFLX' , RC=STATUS); VERIFY_(STATUS) ! and do not add import of PEN_OCN here since it is not used in the `plug' - end if - - call MAPL_GetPointer(IMPORT, PEN_OCN, 'PEN_OCN',RC=STATUS); VERIFY_(STATUS) - - call MAPL_GetPointer(GEX(OCN), TW, 'TW' , alloc=.true., RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(GEX(OCN), SW, 'SW' , alloc=.true., RC=STATUS); VERIFY_(STATUS) - - if (dual_ocean) then - call MAPL_GetPointer(GEX(OCNd), TWd, 'TW' , alloc=.true., RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(IMPORT, FId, 'FRACICEd' , RC=STATUS); VERIFY_(STATUS) - end if - - if(DO_DATASEA==0) then - call MAPL_GetPointer(GEX(OCN), FRZMLT, 'FRZMLT' , alloc=.true., RC=STATUS); VERIFY_(STATUS) - end if - -! Get pointers to exports -!-------------------------------------------------------- - - call MAPL_GetPointer(EXPORT, TS_FOUND,'TS_FOUND', RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(EXPORT, SS_FOUND,'SS_FOUND', RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(EXPORT, FRZMLTe,'FRZMLT', RC=STATUS); VERIFY_(STATUS) - -! Diagnostics exports -!--------------------------------------------------------- - call MAPL_GetPointer(EXPORT, RFLUX, 'RFLUX' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(EXPORT, FROCEANe,'FROCEAN', RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(EXPORT, TAUXe, 'TAUX' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(EXPORT, TAUYe, 'TAUY' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(EXPORT, HEATe, 'SWHEAT' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(EXPORT, DISCHARGEe, 'DISCHARGE' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(EXPORT, LWFLXe, 'LWFLX' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(EXPORT, SWFLXe, 'SWFLX' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(EXPORT, SHFLXe, 'SHFLX' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(EXPORT, QFLUXe, 'QFLUX' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(EXPORT, RAINe, 'RAIN' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(EXPORT, SNOWe, 'SNOW' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(EXPORT, SFLXe, 'SFLX' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(EXPORT, PEN_OCNe,'PEN_OCN', RC=STATUS); VERIFY_(STATUS) - - if(associated(FROCEANe)) FROCEANe = FROCEAN - -! Allocate space for temporary arrays -!------------------------------------ - - allocate(WGHT(IM,JM), STAT=STATUS); VERIFY_(STATUS) - -! Weight for ocean grid -!---------------------- - wght=0.0 - where(MASK>0) - WGHT = FROCEAN/MASK - elsewhere - WGHT = 0.0 - end where - - if(DO_DATASEA==0) then -! Copy imports into ImEx variables -!--------------------------------- - PENUVR = PENUVRi * WGHT - PENPAR = PENPARi * WGHT - PENUVF = PENUVFi * WGHT - PENPAF = PENPAFi * WGHT - DRNIR = DRNIRi * WGHT - DFNIR = DFNIRi * WGHT - DISCHARGE = DISCHARGEi * WGHT - LWFLX = LWFLXi * WGHT - QFLUX = QFLUXi * WGHT - SHFLX = (SHFLXi- FHOCN) * WGHT - RAIN = (RAINi+FRESH) * WGHT - SNOW = SNOWi * WGHT - SFLX = FSALT * WGHT - -! This stress forces the ocean, combined with sea ice bottom stress later -!------------------------------------------------------------------------ - TAUX = TAUXi * WGHT - TAUY = TAUYi * WGHT - - -! Prepare radiative heating for ocean -!------------------------------------ - - if(associated(RFLUX )) RFLUX = 0.0 - select case (trim(OCEAN_NAME)) - case ("MOM", "DATASEA") - do L=1,LM - HEAT(:,:,L) = HEATi(:,:,L)*WGHT - if(associated(RFLUX)) then - RFLUX = RFLUX + (1.0-MASK3D(:,:,L))*HEAT(:,:,L) - end if - end do - case ("MOM6") - ! No 3D Mask from MOM6. Do nothing for now! - end select - - if (associated(HEATe)) HEATe = HEAT - if (associated(TAUXe)) TAUXe = TAUX - if (associated(TAUYe)) TAUYe = TAUY - if (associated(DISCHARGEe)) DISCHARGEe = DISCHARGE - if (associated(LWFLXe)) LWFLXe = LWFLX - if (associated(SWFLXe)) SWFLXe = PENUVR+PENPAR+PENUVF+PENPAF+DRNIR+DFNIR - if (associated(SHFLXe)) SHFLXe = SHFLX - if (associated(QFLUXe)) QFLUXe = QFLUX - if (associated(RAINe)) RAINe = RAIN - if (associated(SNOWe)) SNOWe = SNOW - if (associated(SFLXe)) SFLXe = SFLX - if (associated(PEN_OCNe)) PEN_OCNe = PEN_OCN - end if !DO_DATASEA - -! Loop the ocean model -!--------------------- - - NUM = 0 - do while ( MyTime <= endTime ) - -! Run ocean for one time step (DT) -!--------------------------------- - - call MAPL_TimerOff(STATE,"TOTAL") - call MAPL_TimerOn (STATE,"--ModRun") - - if (.not. DUAL_OCEAN) then - call MAPL_GenericRunChildren(GC, IMPORT, EXPORT, PrivateState%CLOCK, RC=STATUS) - VERIFY_(STATUS) - else - if (PHASE == 1) then - ! corrector - call ESMF_GridCompRun( GCS(OCNd), importState=GIM(OCNd), & - exportState=GEX(OCNd), clock=CLOCK, phase=1, userRC=STATUS) - VERIFY_(STATUS) - call MAPL_GenericRunCouplers( STATE, CHILD=OCNd, CLOCK=CLOCK, RC=STATUS ) - VERIFY_(STATUS) - call ESMF_GridCompRun( GCS(OCN), importState=GIM(OCN), & - exportState=GEX(OCN), clock=CLOCK, phase=1, userRC=STATUS) - VERIFY_(STATUS) - call MAPL_GenericRunCouplers( STATE, CHILD=OCN, CLOCK=CLOCK, RC=STATUS ) - VERIFY_(STATUS) - else - ! predictor - call ESMF_GridCompRun( GCS(OCNd), importState=GIM(OCNd), & - exportState=GEX(OCNd), clock=CLOCK, phase=1, userRC=STATUS) - VERIFY_(STATUS) - call MAPL_GenericRunCouplers( STATE, CHILD=OCNd, CLOCK=CLOCK, RC=STATUS ) - VERIFY_(STATUS) - end if - end if - - if (DUAL_OCEAN .and. PHASE == 1) then - ! calculate temperature correction to send back to MOM - call MAPL_GetPointer(GIM(OCN), DEL_TEMP, 'DEL_TEMP', RC=STATUS) - VERIFY_(STATUS) - call MAPL_GetPointer(GIM(OCNd), FI , 'FRACICE' , RC=STATUS) - VERIFY_(STATUS) - - call MAPL_GetResource(STATE,TAU_SST, Label="TAU_SST:", default=432000.0 ,RC=STATUS) - VERIFY_(status) - - call MAPL_GetResource(STATE,TAU_SST_UNDER_ICE, Label="TAU_SST_UNDER_ICE:", default=86400.0 ,RC=STATUS) - VERIFY_(status) - - ! we should have valid pointers to TW and TWd by now - - DEL_TEMP = 0.0 ! we do not want uninitiazed variables - where(MASK > 0.0 .and. FI < 0.05) - - ! what about relaxation - DEL_TEMP = (TWd - TW)*DT/(DT+TAU_SST) - - end where - - where(MASK > 0.0 .and. FI >= 0.05 .and. FId > FI) - ! 0.054 (C/psu) is the ratio between the freezing temperature and salinity of brine. - ! -0.054*SW gives salinity dependent freezing temperature - ! ideally this const should be from the ocean model, but doing so is difficult here - DEL_TEMP = ((-0.054*SW+MAPL_TICE) - TW)*DT/(DT+TAU_SST_UNDER_ICE) - - end where - - ! put it back to MOM - call ESMF_GridCompRun( GCS(OCN), importState=GIM(OCN), & - exportState=GEX(OCN), clock=CLOCK, phase=2, userRC=STATUS ) - VERIFY_(STATUS) - end if - - call MAPL_TimerOff(STATE,"--ModRun") - call MAPL_TimerOn (STATE,"TOTAL") - -! Bump the time in the internal state -!------------------------------------ - - call ESMF_ClockAdvance( PrivateState%clock, rc=status) - VERIFY_(status) - call ESMF_ClockGet ( PrivateState%clock, currTime= myTime , rc=status) - VERIFY_(status) - - NUM = NUM + 1 - - end do - - if(associated(SS_FOUND)) then - SS_FOUND = OrphanSalinity - where(WGHT > 0.0) - SS_FOUND = SW - end where - end if - - if(associated(FRZMLTe)) then - if(DO_DATASEA == 0) then - where(WGHT > 0.0 ) - FRZMLTe = FRZMLT - end where - else - FRZMLTe = 0.0 - end if - end if - - if (DUAL_OCEAN) then - !ALT we might not have FI yet, so let get it again - call MAPL_GetPointer(GIM(OCNd), FI , 'FRACICE' , RC=STATUS) - VERIFY_(STATUS) - where(WGHT > 0.0) - where(FI < 0.05) - TS_FOUND = TWd - elsewhere - TS_FOUND = TW - end where - end where - else - where(WGHT > 0.0) - TS_FOUND = TW - end where - end if - -! Update orphan points - if(DO_DATASEA == 0) then - WGHT=FROCEAN*(1-MASK) - Tfreeze=MAPL_TICE-0.054*OrphanSalinity - - where(wght>0.0) - TS_FOUND=TS_FOUND+ & - DT*(LWFLXi+(PENUVR+PENPAR+PENUVF+PENPAF+DRNIR+DFNIR - PEN_OCN)-SHFLXi-QFLUXi*MAPL_ALHL-MAPL_ALHF*SNOWi+FHOCN)/(OrphanDepth*MAPL_RHO_SEAWATER*MAPL_CAPWTR) ! explicit update in time - FRZMLTe = (Tfreeze - TS_FOUND) * (MAPL_RHO_SEAWATER*MAPL_CAPWTR*OrphanDepth)/DT - TS_FOUND=max(TS_FOUND, Tfreeze) - end where - - end if - - deallocate(WGHT, STAT=STATUS); VERIFY_(STATUS) - - if(DO_DATASEA/=0) then - deallocate(MASK3D, STAT=STATUS); VERIFY_(STATUS) - deallocate(MASK, STAT=STATUS); VERIFY_(STATUS) - end if - - end if ! Time to run - -! Profilers -!---------- - - call MAPL_TimerOff(STATE,"TOTAL") - call MAPL_TimerOff(STATE,"RUN" ) - -! All Done -!--------- - - RETURN_(ESMF_SUCCESS) - - end subroutine Run - -end module GEOS_OceanGridCompMod diff --git a/GEOSogcm_GridComp/GEOS_OceanGridComp/GEOSdatasea_GridComp/CMakeLists.txt b/GEOSogcm_GridComp/GEOS_OceanGridComp/GEOSdatasea_GridComp/CMakeLists.txt deleted file mode 100644 index 3bb403a0b..000000000 --- a/GEOSogcm_GridComp/GEOS_OceanGridComp/GEOSdatasea_GridComp/CMakeLists.txt +++ /dev/null @@ -1,6 +0,0 @@ -esma_set_this () - -esma_add_library (${this} SRCS GEOS_DataSeaGridComp.F90 DEPENDENCIES MAPL) -target_include_directories (${this} PUBLIC ${INC_ESMF} ${INC_NETCDF}) - - diff --git a/GEOSogcm_GridComp/GEOS_OceanGridComp/GEOSdatasea_GridComp/GEOS_DataSeaGridComp.F90 b/GEOSogcm_GridComp/GEOS_OceanGridComp/GEOSdatasea_GridComp/GEOS_DataSeaGridComp.F90 deleted file mode 100644 index 10e001058..000000000 --- a/GEOSogcm_GridComp/GEOS_OceanGridComp/GEOSdatasea_GridComp/GEOS_DataSeaGridComp.F90 +++ /dev/null @@ -1,406 +0,0 @@ -! $Id$ - -#include "MAPL_Generic.h" - -!============================================================================= -!BOP - -! !MODULE: GEOS_DataSea -- A fake ocean surface - -! !INTERFACE: - -module GEOS_DataSeaGridCompMod - -! !USES: - - use ESMF - use MAPL - - implicit none - private - -! !PUBLIC MEMBER FUNCTIONS: - - public SetServices - -! !DESCRIPTION: -! -! {\tt GEOS\_DataSea} is a gridded component that reads the -! ocean\_bcs file -! This module interpolates the SST and SSS data from -! either daily or monthly values to the correct time of the simulation. -! Data are read only if the simulation time is not in the save interval. -! It also sets surface currents US and VS to constant value (=0.) in -! Data Mode. -! - -!EOP - - contains - -!BOP - -! !IROUTINE: SetServices -- Sets ESMF services for this component - -! !INTERFACE: - - subroutine SetServices ( GC, RC ) - -! !ARGUMENTS: - - type(ESMF_GridComp), intent(INOUT) :: GC ! gridded component - integer, optional :: RC ! return code - -! !DESCRIPTION: This version uses the MAPL\_GenericSetServices. This function sets -! the Initialize and Finalize services, as well as allocating -! our instance of a generic state and putting it in the -! gridded component (GC). Here we only need to set the run method and -! add the state variable specifications (also generic) to our instance -! of the generic state. This is the way our true state variables get into -! the ESMF\_State INTERNAL, which is in the MAPL\_MetaComp. -! -!EOP - -!============================================================================= -! -! ErrLog Variables - - - character(len=ESMF_MAXSTR) :: IAm - integer :: STATUS - character(len=ESMF_MAXSTR) :: COMP_NAME - -! Local derived type aliases - -!============================================================================= - -! Begin... - -! Get my name and set-up traceback handle -! --------------------------------------- - - Iam = "SetServices" - call ESMF_GridCompGet( GC, NAME=COMP_NAME, RC=STATUS ) - VERIFY_(STATUS) - Iam = trim(COMP_NAME) // Iam - - -! Set the Run entry point -! ----------------------- - - call MAPL_GridCompSetEntryPoint ( GC, ESMF_METHOD_RUN, Run, RC=STATUS) - VERIFY_(STATUS) - - -! Set the state variable specs. -! ----------------------------- - -!BOS - -! !Import state: -! None. Its only job is to simply export: SST, SSS, US, VS - -! !Export state: - - call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'UW', & - LONG_NAME = 'zonal_velocity_of_surface_water', & - UNITS = 'm s-1 ', & - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'VW', & - LONG_NAME = 'meridional_velocity_of_surface_water',& - UNITS = 'm s-1 ', & - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'TW', & - LONG_NAME = 'foundation_temperature_for_interface_layer',& - UNITS = 'K', & - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'SW', & - LONG_NAME = 'foundation_salinity_for_interface_layer',& - UNITS = 'PSU', & - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & - RC=STATUS ) - VERIFY_(STATUS) - -! import - - call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'FRACICE', & - LONG_NAME = 'fractional_cover_of_seaice', & - UNITS = '1', & - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & - RC=STATUS ) - VERIFY_(STATUS) - -!EOS - - call MAPL_TimerAdd(GC, name="RUN" ,RC=STATUS) - VERIFY_(STATUS) - call MAPL_TimerAdd(GC, name="-UPDATE" ,RC=STATUS) - VERIFY_(STATUS) - -! Set generic init and final methods -! ---------------------------------- - - call MAPL_GenericSetServices ( GC, RC=STATUS) - VERIFY_(STATUS) - - RETURN_(ESMF_SUCCESS) - - end subroutine SetServices - - - -!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -!BOP - -! !IROUTINE: RUN -- Run stage for the DataSea component - -! !INTERFACE: - -subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) - - -! !ARGUMENTS: - - type(ESMF_GridComp), intent(inout) :: GC ! Gridded component - type(ESMF_State), intent(inout) :: IMPORT ! Import state - type(ESMF_State), intent(inout) :: EXPORT ! Export state - type(ESMF_Clock), intent(inout) :: CLOCK ! The clock - integer, optional, intent( out) :: RC ! Error code: - -! !DESCRIPTION: Periodically refreshes the SST and Ice information. - -!EOP - - -! ErrLog Variables - - character(len=ESMF_MAXSTR) :: IAm - integer :: STATUS - character(len=ESMF_MAXSTR) :: COMP_NAME - -! Locals - - type (MAPL_MetaComp), pointer :: MAPL - type (ESMF_Time) :: CurrentTime - character(len=ESMF_MAXSTR) :: DATASeaFILE -! character(len=ESMF_MAXSTR) :: DATASeaSalFILE - integer :: IFCST - logical :: FCST - integer :: adjSST - real, pointer, dimension(:,:) :: SST - integer :: IM - integer :: JM - real :: TICE - real :: CTB ! Ocean-ice turbulent mixing coefficient (m/sec) - real :: DT - real :: RUN_DT - - real, pointer, dimension(:,:) :: TNEW => null() - real, pointer, dimension(:,:) :: F1 => null() - -! pointers to export - - real, pointer, dimension(:,:) :: UW - real, pointer, dimension(:,:) :: VW - real, pointer, dimension(:,:) :: TW - real, pointer, dimension(:,:) :: SW - -! pointers to import - - real, pointer, dimension(:,:) :: FI - -! Begin... -!---------- - -! Get the target components name and set-up traceback handle. -! ----------------------------------------------------------- - - Iam = "Run" - call ESMF_GridCompGet( GC, name=COMP_NAME, RC=STATUS ) - VERIFY_(STATUS) - Iam = trim(COMP_NAME) // Iam - -! Get my internal MAPL_Generic state -!---------------------------------- - - call MAPL_GetObjectFromGC(GC, MAPL, STATUS) - VERIFY_(STATUS) - -! Start Total timer -!------------------ - - call MAPL_TimerOn(MAPL,"TOTAL") - call MAPL_TimerOn(MAPL,"RUN" ) - -! Pointers to Imports -!-------------------- - call MAPL_GetPointer(IMPORT, FI , 'FRACICE' , RC=STATUS) - VERIFY_(STATUS) - -! Pointers to Exports -!--------------------- - - call MAPL_GetPointer(EXPORT, UW , 'UW' , RC=STATUS) - VERIFY_(STATUS) - call MAPL_GetPointer(EXPORT, VW , 'VW' , RC=STATUS) - VERIFY_(STATUS) - call MAPL_GetPointer(EXPORT, TW , 'TW' , RC=STATUS) - VERIFY_(STATUS) - call MAPL_GetPointer(EXPORT, SW , 'SW' , RC=STATUS) - VERIFY_(STATUS) - -! Set current time and calendar -!------------------------------ - - call ESMF_ClockGet(CLOCK, currTime=CurrentTime, RC=STATUS) - VERIFY_(STATUS) - -! Get the SST bcs file name from the resource file -!------------------------------------------------- - - call MAPL_GetResource(MAPL,DATASeaFILE,LABEL="DATA_SST_FILE:", RC=STATUS) - VERIFY_(STATUS) - -! Get the SSS bcs file name from the resource file -!------------------------------------------------- - -! call MAPL_GetResource(MAPL,DATASeaSalFILE,LABEL="DATA_SSS_FILE:", RC=STATUS) -! VERIFY_(STATUS) - -! In atmospheric forecast mode we do not have future SST and SSS -!-------------------------------------------------------------- - - call MAPL_GetResource(MAPL,IFCST,LABEL="IS_FCST:",default=0, RC=STATUS) - VERIFY_(STATUS) - - call MAPL_GetResource(MAPL,adjSST,LABEL="SST_ADJ_UND_ICE:",default=0, RC=STATUS) - VERIFY_(STATUS) - - FCST = IFCST==1 - -! SST is usually Reynolds/OSTIA SST or bulk SST -!------------------------------------------------ - - call MAPL_Get(MAPL, IM=IM, JM=JM, RC=STATUS) - VERIFY_(STATUS) - - allocate(SST(IM,JM), stat=STATUS) - VERIFY_(STATUS) - -! SSS is usually bulk SSS -!-------------------------- - -! allocate(SSS(IM, JM), stat=STATUS) -! VERIFY_(STATUS) - -! Update the friendly skin values -!--------------------------------- - - call MAPL_TimerOn(MAPL,"-UPDATE" ) - -! Read bulk SST from retrieval -!------------------------------ - - call MAPL_ReadForcing(MAPL,'SST',DATASeaFILE, CURRENTTIME, SST, INIT_ONLY=FCST, RC=STATUS) - VERIFY_(STATUS) - -! Read bulk SSS from retrieval -!------------------------------ - -! call MAPL_ReadForcing(MAPL,'SSS',DATASeaSalFILE, CURRENTTIME, SSS, INIT_ONLY=FCST, RC=STATUS) -! VERIFY_(STATUS) - - call MAPL_TimerOff(MAPL,"-UPDATE" ) - -! Update the exports -!-------------------- - - if(associated(UW)) UW = 0.0 - if(associated(VW)) VW = 0.0 - - TICE = MAPL_TICE-1.8 - if (adjSST == 1) then - SST = max(SST, TICE) - SST = (1.-FI)*SST+FI*TICE - endif - - if (adjSST == 2) then - - call MAPL_GetResource(MAPL,CTB , LABEL="CTB:" , default=1.0e-4, RC=STATUS) - VERIFY_(STATUS) - - call MAPL_GetResource(MAPL,RUN_DT , LABEL="RUN_DT:" , RC=STATUS) - VERIFY_(STATUS) - call MAPL_GetResource(MAPL,DT , LABEL="DT:" , default=RUN_DT, RC=STATUS) - VERIFY_(STATUS) - - allocate(TNEW(size(TW,1),size(TW,2)), stat=STATUS) - VERIFY_(STATUS) - allocate(F1 (size(TW,1),size(TW,2)), stat=STATUS) - VERIFY_(STATUS) - - TNEW=0.0 - F1 =0.0 - -! ! SST below freezing point is set to freezing temperature - TNEW = max( SST,TICE) - - where(FI == 1.0) -! ! if fraction of ice is 1, set SST to freezing temperature - TNEW = TICE - elsewhere - F1=FI*CTB/(2.0*(1.0-FI)) - TNEW=(TNEW+TICE*F1*DT)/(1.0+F1*DT) - end where - - SST = TNEW - - deallocate( TNEW) - deallocate( F1) - endif - - if(associated(TW)) then - TW = SST ! SA: SST is in deg Kelvin, hence no need for abs(SST) - end if - - if(associated(SW)) then - SW = 30.0 ! SA: for now -! SW = SSS ! SA: every SST data point must have SSS (in PSU) as well - end if - -! Clean-up -!--------- - - deallocate(SST, STAT=STATUS); VERIFY_(STATUS) -! deallocate(SSS, STAT=STATUS); VERIFY_(STATUS) - -! All done -!----------- - - call MAPL_TimerOff(MAPL,"RUN" ) - call MAPL_TimerOff(MAPL,"TOTAL") - - RETURN_(ESMF_SUCCESS) -end subroutine RUN - -end module GEOS_DataSeaGridCompMod diff --git a/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/.gitignore b/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/.gitignore deleted file mode 100644 index 8dd07ca36..000000000 --- a/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -/@mom6 -/mom6 -/mom6@ diff --git a/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/CMakeLists.txt b/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/CMakeLists.txt deleted file mode 100644 index 50827a9fb..000000000 --- a/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/CMakeLists.txt +++ /dev/null @@ -1,27 +0,0 @@ -esma_set_this () - -set (SRCS - MOM6_GEOSPlug.F90 - ) - -esma_add_subdirectories( - mom6_cmake - ) - -esma_add_library (${this} - SRCS ${SRCS} - DEPENDENCIES MAPL fms_r8 mom6 - TYPE SHARED - ) - -# Specs for r8 version -string(REPLACE " " ";" tmp ${FREAL8}) -foreach (flag ${tmp}) - target_compile_options (${this} PRIVATE $<$:${flag}>) -endforeach () - -install( - DIRECTORY mom6_app - DESTINATION etc/MOM6 - USE_SOURCE_PERMISSIONS - ) diff --git a/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/MOM6_GEOSPlug.F90 b/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/MOM6_GEOSPlug.F90 deleted file mode 100644 index 554bf56d7..000000000 --- a/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/MOM6_GEOSPlug.F90 +++ /dev/null @@ -1,1587 +0,0 @@ -! $Id$ - -#include "MAPL_Generic.h" - -! GEOS default real kind - -#define G5KIND 4 -#define REAL_ real(kind=G5KIND) - -module MOM6_GEOSPlugMod - -!BOP -! !MODULE: MOM6_GEOSPlugMod -- to couple with MOM6. - -!DESCRIPTION: -! A MAPL/ESMF Gridded Component that acts as a coupler for MOM. -! It uses ESMF AND MAPL. It has heavy dependencies on FMS and MOM. -! -! This should be built like MOM, so that its default reals -! are the same as for MOM. It may also be an adequate plug for it. -! -! It does not use the configuration. -! Its time step is the clocks time step. -! Each run invocation runs one time step. -! - -!USES: - use ESMF - use MAPL - use MAPL_ConstantsMod, only: MAPL_TICE - -! These MOM dependencies are all we are currently using. - - use constants_mod, only: constants_init - use diag_manager_mod, only: diag_manager_init, diag_manager_end - use field_manager_mod, only: field_manager_init, field_manager_end - - use mpp_mod, only: mpp_exit - use fms_mod, only: fms_init, fms_end - use fms_io_mod, only: fms_io_exit - - use mpp_domains_mod, only: domain2d, mpp_update_domains, & - mpp_get_compute_domain, & - mpp_get_data_domain - - use mpp_parameter_mod, only: AGRID, BGRID_NE, CGRID_NE, SCALAR_PAIR - - use time_manager_mod, only: set_calendar_type, time_type - use time_manager_mod, only: set_time, set_date - use time_manager_mod, only: JULIAN - - use ocean_model_mod, only: ocean_model_init, & - ocean_model_init_sfc, & - update_ocean_model, & - ocean_model_end, & - ocean_model_restart - - use ocean_model_mod, only: ocean_model_data_get, & - ocean_public_type, & - ocean_state_type, & - ocean_model_get_UV_surf - - use MOM_surface_forcing_gfdl, only: ice_ocean_boundary_type - - use ocean_model_mod, only: get_ocean_grid - use MOM_grid, only: ocean_grid_type - use MOM_domains, only: pass_vector - -! Nothing on the MOM side is visible through this module. - - implicit none - private - - !PUBLIC MEMBER FUNCTIONS: - public :: SetServices -!EOP - -! These are the MOM-side bulletin boards, where things are in -! MOM precision and on its grid - - type MOM_MAPL_Type - type(ocean_public_type), pointer :: Ocean - type(ice_ocean_boundary_type), pointer :: Ice_ocean_boundary - type(ocean_state_type), pointer :: Ocean_state - end type MOM_MAPL_Type - -! A wrapper-derived data type to connect our internal state with MOM - type MOM_MAPLWrap_Type - type(MOM_MAPL_Type), pointer :: Ptr - end type MOM_MAPLWrap_Type - -contains - -!BOP - -! !IROUTINE: SetServices -- Sets ESMF services for this component - -! !INTERFACE: - - subroutine SetServices ( GC, RC ) - -! !ARGUMENTS: - - type(ESMF_GridComp), intent(INOUT) :: GC ! gridded component - integer, optional :: RC ! return code - -! !DESCRIPTION: The SetServices for the PhysicsGCM GC needs to register its -! Initialize and Run. It uses the MAPL_Generic construct for defining -! state specs and couplings among its children. In addition, it creates the -! children GCs (AGCM and OGCM) and runs their -! respective SetServices. - -!EOP - -!============================================================================= -! -! ErrLog Variables - - character(len=ESMF_MAXSTR) :: IAm - integer :: STATUS - character(len=ESMF_MAXSTR) :: COMP_NAME - -! Locals - -!============================================================================= - -! Begin... - -! Get my name and set-up traceback handle -! --------------------------------------- - - Iam = 'SetServices' - call ESMF_GridCompGet( GC, NAME=COMP_NAME, RC=STATUS ) - VERIFY_(STATUS) - Iam = trim(COMP_NAME) // Iam - -!BOS - -! !IMPORT STATE: - - call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'TAUX', & - LONG_NAME = 'Agrid_eastward_stress_on_ocean', & - UNITS = 'N m-2', & - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'TAUY', & - LONG_NAME = 'Agrid_northward_stress_on_ocean', & - UNITS = 'N m-2', & - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'PS', & - LONG_NAME = 'Surface Atmospheric Pressure', & - UNITS = 'Pa', & - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'PICE', & - LONG_NAME = 'pressure due to ice weight', & - UNITS = 'Pa', & - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'SWHEAT', & - LONG_NAME = 'solar_heating_rate', & - UNITS = 'W m-2', & - DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, & - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddImportSpec(GC , & - LONG_NAME = 'surface_net_downward_longwave_flux',& - UNITS = 'W m-2' , & - SHORT_NAME = 'LWFLX' , & - DIMS = MAPL_DimsHorzOnly , & - VLOCATION = MAPL_VLocationNone , & - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddImportSpec(GC, & - LONG_NAME = 'upward_sensible_heat_flux' ,& - UNITS = 'W m-2' ,& - SHORT_NAME = 'SHFLX' ,& - DIMS = MAPL_DimsHorzOnly ,& - VLOCATION = MAPL_VLocationNone ,& - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddImportSpec(GC, & - LONG_NAME = 'evaporation' ,& - UNITS = 'kg m-2 s-1' ,& - SHORT_NAME = 'QFLUX' , & - DIMS = MAPL_DimsHorzOnly ,& - VLOCATION = MAPL_VLocationNone ,& - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'RAIN', & - LONG_NAME = 'ocean_rainfall', & - UNITS = 'kg m-2 s-1', & - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'SNOW', & - LONG_NAME = 'ocean_snowfall', & - UNITS = 'kg m-2 s-1', & - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'SFLX', & - LONG_NAME = 'salt_flux_from_sea_ice_to_ocean', & - UNITS = 'kg m-2 s-1', & - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'PENUVR', & - LONG_NAME = 'net_downward_penetrating_direct_UV_flux', & - UNITS = 'W m-2', & - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'PENPAR', & - LONG_NAME = 'net_downward_penetrating_direct_PAR_flux', & - UNITS = 'W m-2', & - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'PENUVF', & - LONG_NAME = 'net_downward_penetrating_diffuse_UV_flux', & - UNITS = 'W m-2', & - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'PENPAF', & - LONG_NAME = 'net_downward_penetrating_diffuse_PAR_flux', & - UNITS = 'W m-2', & - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddImportSpec(GC , & - LONG_NAME = 'net_surface_downwelling_nir_beam_flux',& - UNITS = 'W m-2' ,& - SHORT_NAME = 'DRNIR' ,& - DIMS = MAPL_DimsHorzOnly ,& - VLOCATION = MAPL_VLocationNone ,& - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddImportSpec(GC , & - LONG_NAME = 'net_surface_downwelling_nir_diffuse_flux',& - UNITS = 'W m-2' ,& - SHORT_NAME = 'DFNIR' ,& - DIMS = MAPL_DimsHorzOnly ,& - VLOCATION = MAPL_VLocationNone ,& - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddImportSpec(GC, & - LONG_NAME = 'river_discharge_at_ocean_points',& - UNITS = 'kg m-2 s-1' ,& - SHORT_NAME = 'DISCHARGE' ,& - DIMS = MAPL_DimsHorzOnly ,& - VLOCATION = MAPL_VLocationNone ,& - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'AICE', & - LONG_NAME = 'ice_concentration_of_grid_cell', & - UNITS = '1', & - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'TAUXBOT', & - LONG_NAME = 'eastward_stress_at_base_of_ice_Agrid', & - UNITS = 'N m-2', & - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'TAUYBOT', & - LONG_NAME = 'northward_stress_at_base_of_ice_Agrid', & - UNITS = 'N m-2', & - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & - RC=STATUS ) - VERIFY_(STATUS) - -! !EXPORT STATE: - - call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'UW', & - LONG_NAME = 'surface_Agrid_eastward_velocity', & - UNITS = 'm s-1 ', & - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'VW', & - LONG_NAME = 'surface_Agrid_northward_velocity', & - UNITS = 'm s-1 ', & - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'UWB', & - LONG_NAME = 'surface_Bgrid_X_velocity', & - UNITS = 'm s-1 ', & - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'VWB', & - LONG_NAME = 'surface_Bgrid_Y_velocity', & - UNITS = 'm s-1 ', & - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'TW', & - LONG_NAME = 'surface_temperature', & - UNITS = 'K', & - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'SW', & - LONG_NAME = 'surface_salinity', & - UNITS = 'psu', & - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'MOM_2D_MASK', & - LONG_NAME = 'MOM_ocean_mask_at_t-points', & - UNITS = '1', & - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'AREA', & - LONG_NAME = 'MOM_ocean_area_at_t-points', & - UNITS = 'm+2', & - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'SLV', & - LONG_NAME = 'sea_level_with_ice_loading_and_invBaro', & - UNITS = 'm', & - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'FRAZIL', & - LONG_NAME = 'heating_from_frazil_formation', & - UNITS = 'W m-2', & - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'MELT_POT', & - LONG_NAME = 'heat_that_can_be_used_to_melt_sea_ice', & - UNITS = 'W m-2', & - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'FRZMLT', & - LONG_NAME = 'freeze_melt_potential', & - UNITS = 'W m-2', & - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'DUM1', & - LONG_NAME = 'dummy_export1', & - UNITS = '1', & - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & - RC=STATUS ) - VERIFY_(STATUS) - call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'DUM2', & - LONG_NAME = 'dummy_export2', & - UNITS = '1', & - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & - RC=STATUS ) - VERIFY_(STATUS) - -! !Diagnostic exports -!Get rid of following 3D exports - - call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'U', & - LONG_NAME = 'eastward_current', & - UNITS = 'm s-1', & - DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, & - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'V', & - LONG_NAME = 'northward_current', & - UNITS = 'm s-1', & - DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, & - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'DH', & - LONG_NAME = 'layer_thickness', & - UNITS = 'm OR kg m-2', & - DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, & - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'DEPTH', & - LONG_NAME = 'layer_depth', & - UNITS = 'm', & - DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, & - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'T', & - LONG_NAME = 'potential_temperature', & - UNITS = 'K', & - DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, & - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'S', & - LONG_NAME = 'salinity', & - UNITS = 'psu', & - DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, & - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'SWFRAC', & - LONG_NAME = 'shortwave_fractional_decay', & - UNITS = '1', & - DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, & - RC=STATUS ) - VERIFY_(STATUS) - -!EOS - -! Set the Initialize, Run, Finalize entry points -! ---------------------------------------------- - - call MAPL_GridCompSetEntryPoint ( GC, ESMF_METHOD_INITIALIZE, Initialize, RC=status) - VERIFY_(STATUS) - call MAPL_GridCompSetEntryPoint ( GC, ESMF_METHOD_RUN, Run, RC=status) - VERIFY_(STATUS) - call MAPL_GridCompSetEntryPoint ( GC, ESMF_METHOD_FINALIZE, Finalize, RC=status) - VERIFY_(STATUS) - call MAPL_GridCompSetEntryPoint ( GC, ESMF_METHOD_WRITERESTART, Record, RC=status) - VERIFY_(STATUS) - -! Set the Profiling timers -! ------------------------ - - call MAPL_TimerAdd(GC, name="INITIALIZE" ,RC=STATUS) - VERIFY_(STATUS) - call MAPL_TimerAdd(GC, name="RUN" ,RC=STATUS) - VERIFY_(STATUS) - call MAPL_TimerAdd(GC, name="FINALIZE" ,RC=STATUS) - VERIFY_(STATUS) - -! Generic SetServices -! ------------------- - - call MAPL_GenericSetServices ( GC, RC=STATUS ) - VERIFY_(STATUS) - -! All done -! -------- - - RETURN_(ESMF_SUCCESS) - - end subroutine SetServices - -!============================================================================= - -!BOP - -! !IROUTINE: INITIALIZE -- Initialize method for ExternalOcean wrapper - -! !INTERFACE: - - subroutine Initialize ( GC, IMPORT, EXPORT, CLOCK, RC ) - -! !ARGUMENTS: - - type(ESMF_GridComp), intent(INOUT) :: GC ! Gridded component - type(ESMF_State), intent(INOUT) :: IMPORT ! Import state - type(ESMF_State), intent(INOUT) :: EXPORT ! Export state - type(ESMF_Clock), intent(INOUT) :: CLOCK ! The clock - integer, optional, intent( OUT) :: RC ! Error code: - -!EOP - -! ErrLog Variables - - character(len=ESMF_MAXSTR) :: IAm - integer :: STATUS - character(len=ESMF_MAXSTR) :: COMP_NAME - -! Locals - - integer :: counts(7) - integer :: Comm - integer :: isc,iec,jsc,jec - integer :: isd,ied,jsd,jed - integer :: IM, JM - integer :: g_isc,g_iec,g_jsc,g_jec - integer :: g_isd,g_ied,g_jsd,g_jed - - integer :: YEAR,MONTH,DAY,HR,MN,SC - -! Locals with MOM types - - type(time_type) :: Time - type(time_type) :: DT - -! Locals with ESMF and MAPL types - - type(ESMF_VM) :: VM - type(MAPL_MetaComp), pointer :: MAPL - type(ESMF_Grid) :: Grid - type(ESMF_Time) :: MyTime - type(ESMF_TimeInterval) :: TINT - -! Locals - - type(ice_ocean_boundary_type), pointer :: Boundary => null() - type(ocean_public_type), pointer :: Ocean => null() - type(ocean_state_type), pointer :: Ocean_State => null() - type(MOM_MAPL_Type), pointer :: MOM_MAPL_internal_state => null() - type(MOM_MAPLWrap_Type) :: wrap - - type(ocean_grid_type), pointer :: Ocean_grid => null() - - REAL_, pointer :: TW (:,:) => null() - REAL_, pointer :: SW (:,:) => null() - REAL_, pointer :: AREA(:,:) => null() - REAL_, pointer :: MASK(:,:) => null() - - real, allocatable :: Tmp2(:,:) - - REAL_, pointer, dimension(:, :) :: sea_lev => null() - - integer :: DT_OCEAN - character(len=7) :: wind_stagger ! 'AGRID' or 'BGRID' or 'CGRID' - integer ::iwind_stagger ! AGRID or BGRID or CGRID : integer values - -! Begin... - -! Get the target components name and set-up traceback handle. -! ----------------------------------------------------------- - - Iam = "Initialize" - call ESMF_GridCompGet( gc, NAME=comp_name, RC=status ) - VERIFY_(STATUS) - Iam = trim(comp_name) // trim(Iam) - - -! Get my internal MAPL_Generic state -!----------------------------------- - - call MAPL_GetObjectFromGC ( GC, MAPL, RC=STATUS) - VERIFY_(STATUS) - -! Profilers -!---------- - - call MAPL_TimerOn(MAPL,"TOTAL" ) - call MAPL_TimerOn(MAPL,"INITIALIZE") - -! Get the grid, configuration -!---------------------------- - - call ESMF_GridCompGet( GC, grid=Grid, RC=status ) - VERIFY_(STATUS) - -! Get the layout from the grid -!----------------------------- - - call ESMF_VMGetCurrent(VM, rc=STATUS) - VERIFY_(STATUS) - -! Set the time for MOM -!--------------------- - - call ESMF_ClockGet(CLOCK, currTIME=MyTime, TimeStep=TINT, RC=STATUS) - VERIFY_(STATUS) - - call ESMF_TimeGet (MyTime, & - YY=YEAR, MM=MONTH, DD=DAY, & - H=HR, M =MN, S =SC, & - RC=STATUS ) - VERIFY_(STATUS) - - CALL ESMF_TimeIntervalGet(TINT, S=DT_OCEAN, RC=status) - VERIFY_(status) - -! Allocate this instance of the internal state and wrap -! ----------------------------------------------------- - - allocate ( MOM_MAPL_internal_state, stat=status ) - VERIFY_(STATUS) - - wrap%ptr => MOM_MAPL_internal_state - -! Save pointer to the wrapped internal state in the GC -! ---------------------------------------------------- - - call ESMF_UserCompSetInternalState ( GC, 'MOM_MAPL_state', WRAP, STATUS ) - VERIFY_(STATUS) - - allocate ( Boundary, stat=STATUS); VERIFY_(STATUS) - allocate ( Ocean, stat=STATUS); VERIFY_(STATUS) - - MOM_MAPL_internal_state%Ice_ocean_boundary => Boundary - MOM_MAPL_internal_state%Ocean => Ocean - -! FMS initialization using the communicator from the VM -!------------------------------------------------------ - - call ESMF_VMGet(VM, mpiCommunicator=Comm, rc=STATUS) - VERIFY_(STATUS) - - call fms_init(Comm) - -! Init MOM stuff -!--------------- - - call constants_init - call field_manager_init - call set_calendar_type ( JULIAN) - call diag_manager_init !SA: could pass time_init, not available before (MOM5) - - DT = set_time (DT_OCEAN, 0) - Time = set_date (YEAR,MONTH,DAY,HR,MN,SC) - -! Check run time wind stagger option set in AGCM.rc -! to make sure it matches what is expected here -!---------------------------------------------------- - - call MAPL_GetResource( MAPL, wind_stagger, Label="ocean_wind_stagger:", DEFAULT="AGRID", RC=STATUS) - VERIFY_(STATUS) - - if ( trim(wind_stagger) == "AGRID") then - iwind_stagger = AGRID - if (MAPL_AM_I_Root()) print *, ' Surface stress stagger for MOM6: AGRID. Its value= ', AGRID - elseif ( ( trim(wind_stagger) == "BGRID") .or. ( trim(wind_stagger) == "CGRID")) then - print *, ' Surface stress stagger for MOM6: BGRID_NE or CGRID_NE. These options are not supported. Exiting!' - ASSERT_(.false.) - else - print *, ' Surface stress stagger for MOM6 is invalid, stopping.' - ASSERT_(.false.) - endif - -! Initialize ocean model -!----------------------- - - Ocean%is_ocean_pe = .true. - call ocean_model_init (Ocean, Ocean_state, Time, Time, iwind_stagger) - - MOM_MAPL_internal_state%Ocean_State => Ocean_State - - call ocean_model_init_sfc(Ocean_state, Ocean) - -! Get the ocean grid and sizes of global and computational domains -!----------------------------------------------------------------- - - call get_ocean_grid (Ocean_state, Ocean_grid) - isc = Ocean_grid%isc; iec = Ocean_grid%iec - isd = Ocean_grid%isd; ied = Ocean_grid%ied - - jsc = Ocean_grid%jsc; jec = Ocean_grid%jec - jsd = Ocean_grid%jsd; jed = Ocean_grid%jed - -! ------- -! instead of: -! call mpp_get_compute_domain(Ocean%Domain, g_isc, g_iec, g_jsc, g_jec) -! g_isd = Ocean_grid%isd_global; g_jsd = Ocean_grid%jsd_global -!! g_ied = ied +g_isd -1; g_jed = jed +g_jsd -1 ! local + global -1 -! g_ied = ied+(Ocean_grid%idg_offset); g_jed = jed+(Ocean_grid%jdg_offset) -! do this: - call mpp_get_compute_domain(Ocean_grid%Domain%mpp_domain, g_isc, g_iec, g_jsc, g_jec) - call mpp_get_data_domain (Ocean_grid%Domain%mpp_domain, g_isd, g_ied, g_jsd, g_jed) -! ------- - -! Check local sizes of horizontal dimensions -!-------------------------------------------- - call MAPL_GridGet(GRID, localCellCountPerDim=counts, RC=status) - VERIFY_(STATUS) - - IM=iec-isc+1 - JM=jec-jsc+1 - - ASSERT_(counts(1)==IM) - ASSERT_(counts(2)==JM) - -! Check run time surface current stagger option set in MOM_input -! to make sure it matches what is expected here -!--------------------------------------------------------------- - - if (MAPL_AM_I_Root()) then - if ( (Ocean%stagger == AGRID) .or. (Ocean%stagger == BGRID_NE)) then - print *, ' Surface velocity stagger set in ocean model: (MOM6) AGRID or BGRID_NE. These are not supported, try CGRID_NE. Exiting!' - ASSERT_(.false.) - elseif (Ocean%stagger == CGRID_NE) then - print *, ' Surface velocity stagger set in ocean model: (MOM6) CGRID_NE.' - else - print *, ' Surface velocity stagger set in ocean model: (MOM6) is invalid, stopping.' - ASSERT_(.false.) - endif - endif - -! Allocate MOM flux bulletin board. -!------------------------------------ - - allocate ( Boundary% u_flux (g_isd:g_ied,g_jsd:g_jed), & - Boundary% v_flux (g_isd:g_ied,g_jsd:g_jed), & - Boundary% t_flux (g_isd:g_ied,g_jsd:g_jed), & - Boundary% q_flux (g_isd:g_ied,g_jsd:g_jed), & - Boundary% salt_flux (g_isd:g_ied,g_jsd:g_jed), & - Boundary% lw_flux (g_isd:g_ied,g_jsd:g_jed), & - Boundary% sw_flux_vis_dir (g_isd:g_ied,g_jsd:g_jed), & - Boundary% sw_flux_vis_dif (g_isd:g_ied,g_jsd:g_jed), & - Boundary% sw_flux_nir_dir (g_isd:g_ied,g_jsd:g_jed), & - Boundary% sw_flux_nir_dif (g_isd:g_ied,g_jsd:g_jed), & - Boundary% lprec (g_isd:g_ied,g_jsd:g_jed), & - Boundary% fprec (g_isd:g_ied,g_jsd:g_jed), & - Boundary% runoff (g_isd:g_ied,g_jsd:g_jed), & - Boundary% calving (g_isd:g_ied,g_jsd:g_jed), & - Boundary% stress_mag (g_isd:g_ied,g_jsd:g_jed), & - Boundary% ustar_berg (g_isd:g_ied,g_jsd:g_jed), & - Boundary% area_berg (g_isd:g_ied,g_jsd:g_jed), & - Boundary% mass_berg (g_isd:g_ied,g_jsd:g_jed), & - Boundary% runoff_hflx (g_isd:g_ied,g_jsd:g_jed), & - Boundary% calving_hflx (g_isd:g_ied,g_jsd:g_jed), & - Boundary% p (g_isd:g_ied,g_jsd:g_jed), & - Boundary% mi (g_isd:g_ied,g_jsd:g_jed), & - Boundary% ice_rigidity (g_isd:g_ied,g_jsd:g_jed), & - stat=STATUS ) - VERIFY_(STATUS) - -! Clear the fluxes we will not be using -!-------------------------------------- - - Boundary%u_flux = 0.0 - Boundary%v_flux = 0.0 - Boundary%t_flux = 0.0 - Boundary%q_flux = 0.0 - Boundary%salt_flux = 0.0 - Boundary%lw_flux = 0.0 - Boundary%sw_flux_vis_dir = 0.0 - Boundary%sw_flux_vis_dif = 0.0 - Boundary%sw_flux_nir_dir = 0.0 - Boundary%sw_flux_nir_dif = 0.0 - Boundary%lprec = 0.0 - Boundary%fprec = 0.0 - Boundary%runoff = 0.0 - Boundary%calving = 0.0 - Boundary%stress_mag = 0.0 - Boundary%ustar_berg = 0.0 - Boundary%area_berg = 0.0 - Boundary%mass_berg = 0.0 - Boundary%runoff_hflx = 0.0 - Boundary%calving_hflx = 0.0 - Boundary%p = 0.0 - Boundary%mi = 0.0 - Boundary% ice_rigidity = 0.0 - -! Profilers -! --------- - - call MAPL_TimerOff(MAPL,"INITIALIZE") - call MAPL_TimerOff(MAPL,"TOTAL" ) - -! Generic initialize -! ------------------ - - call MAPL_GenericInitialize( GC, IMPORT, EXPORT, CLOCK, RC=status ) - VERIFY_(STATUS) - -! Make sure exports neede by the parent prior to our run call are initialized -!---------------------------------------------------------------------------- - - call MAPL_GetPointer(EXPORT, MASK, 'MOM_2D_MASK', alloc=.true., RC=STATUS) - VERIFY_(STATUS) - call MAPL_GetPointer(EXPORT, TW, 'TW' , alloc=.true., RC=STATUS) - VERIFY_(STATUS) - call MAPL_GetPointer(EXPORT, SW, 'SW' , alloc=.true., RC=STATUS) - VERIFY_(STATUS) - call MAPL_GetPointer(EXPORT, AREA, 'AREA', alloc=.true., RC=STATUS) - VERIFY_(STATUS) - call MAPL_GetPointer(EXPORT, sea_lev, 'SLV', alloc=.true., RC=STATUS) - VERIFY_(STATUS) - -! Get the 2-D MOM data -!--------------------- - allocate(Tmp2(IM,JM), stat=status); VERIFY_(STATUS) - - call ocean_model_data_get(Ocean_State, Ocean, 'mask', Tmp2, isc, jsc) - MASK = real(Tmp2, kind=G5KIND) - - call ocean_model_data_get(Ocean_State, Ocean, 't_surf', Tmp2, g_isc, g_jsc) ! this comes to us in deg C - where(MASK(:,:) > 0.0) - TW = real(Tmp2, kind=G5KIND) + MAPL_TICE ! because C to K was subtracted in MOM - elsewhere - TW = MAPL_UNDEF - end where - - call ocean_model_data_get(Ocean_State, Ocean, 's_surf', Tmp2, g_isc, g_jsc) ! comes to us in PSU - where(MASK(:,:) > 0.0) - SW = real(Tmp2, kind=G5KIND) - elsewhere - SW = MAPL_UNDEF - end where - - if(associated(area)) then - call ocean_model_data_get(Ocean_State, Ocean, 'area', Tmp2, isc, jsc) - AREA = real(Tmp2, kind=G5KIND) - end if - - deallocate(Tmp2) - -! All Done -!--------- - - RETURN_(ESMF_SUCCESS) - end subroutine Initialize - -!================================================================================= - -!BOP - -! !IROUTINE: Run -- Run method for External Model Plug - -! !INTERFACE: - - subroutine Run ( GC, IMPORT, EXPORT, CLOCK, RC ) - -! !ARGUMENTS: - - type(ESMF_GridComp), intent(INOUT) :: GC ! Gridded component - type(ESMF_State), intent(INOUT) :: IMPORT ! Import state - type(ESMF_State), intent(INOUT) :: EXPORT ! Export state - type(ESMF_Clock), intent(INOUT) :: CLOCK ! The supervisor clock - integer, optional, intent( OUT) :: RC ! Error code: - type(ESMF_State) :: INTERNAL ! Internal state - -!EOP - -! ErrLog Variables - - character(len=ESMF_MAXSTR) :: IAm - integer :: STATUS - character(len=ESMF_MAXSTR) :: COMP_NAME - -! Locals with ESMF and MAPL types - - type(MAPL_MetaComp), pointer :: MAPL => null() - type(ESMF_Time) :: MyTime - type(ESMF_TimeInterval) :: TINT - -! Locals - - type(ice_ocean_boundary_type), pointer :: Boundary => null() - type(ocean_public_type), pointer :: Ocean => null() - type(ocean_state_type), pointer :: Ocean_State => null() - type(MOM_MAPL_Type), pointer :: MOM_MAPL_internal_state => null() - type(MOM_MAPLWrap_Type) :: wrap - -! type(ocean_grid_type), pointer :: Ocean_grid => null() - -! Required exports - - REAL_, pointer :: TW (:,:) => null() - REAL_, pointer :: SW (:,:) => null() - REAL_, pointer :: UW (:,:) => null() - REAL_, pointer :: VW (:,:) => null() - REAL_, pointer :: UWB (:,:) => null() - REAL_, pointer :: VWB (:,:) => null() - REAL_, pointer :: SLV (:,:) => null() - REAL_, pointer :: FRAZIL(:,:) => null() - REAL_, pointer :: MELT_POT(:,:) => null() - REAL_, pointer :: FRZMLT(:,:) => null() - REAL_, pointer :: MASK (:,:) => null() - REAL_, pointer :: AREA (:,:) => null() - -! Optional Exports -! none - -! Imports - REAL_, pointer :: TAUX(:,:) => null() - REAL_, pointer :: TAUY(:,:) => null() - REAL_, pointer :: PS (:,:) => null() - REAL_, pointer :: PICE(:,:) => null() - REAL_, pointer :: LWFLX(:,:) => null() - REAL_, pointer :: SHFLX(:,:) => null() - REAL_, pointer :: QFLUX(:,:) => null() - REAL_, pointer :: RAIN(:,:) => null() - REAL_, pointer :: SNOW(:,:) => null() - REAL_, pointer :: SFLX(:,:) => null() - REAL_, pointer :: PENUVR(:,:) => null() - REAL_, pointer :: PENPAR(:,:) => null() - REAL_, pointer :: PENUVF(:,:) => null() - REAL_, pointer :: PENPAF(:,:) => null() - REAL_, pointer :: DRNIR(:,:) => null() - REAL_, pointer :: DFNIR(:,:) => null() - REAL_, pointer :: DISCHARGE(:,:) => null() - REAL_, pointer :: AICE(:,:) => null() - REAL_, pointer :: TAUXBOT(:,:) => null() - REAL_, pointer :: TAUYBOT(:,:) => null() - -! Temporaries - - real, allocatable :: U (:,:), V(:,:) - real, allocatable :: cos_rot(:,:) - real, allocatable :: sin_rot(:,:) - - integer :: IM, JM - - integer :: steady_state_ocean = 0 ! SA: Per Atanas T, "name" of this var is misleading - ! We run ocean model only when it = 0 - - character(len=7) :: pres_loading ! yes or no - - integer :: isc,iec,jsc,jec - - integer :: YEAR,MONTH,DAY,HR,MN,SC - type(time_type) :: Time - type(time_type) :: DT - - real :: pice_scaling = 1.0 - integer :: DT_OCEAN - - - REAL_, pointer, dimension(:,:) :: LATS => null() - REAL_, pointer, dimension(:,:) :: LONS => null() - -! Begin -!------ - -! Get the component name and set-up traceback handle. -! ----------------------------------------------------- - Iam = "Run" - call ESMF_GridCompGet( gc, NAME=comp_name, RC=status ) - VERIFY_(status) - Iam = trim(comp_name) // Iam - -! Get my internal MAPL_Generic state -!----------------------------------- - - call MAPL_GetObjectFromGC ( GC, MAPL, RC=status) - VERIFY_(STATUS) - - - call MAPL_Get(MAPL, & - INTERNAL_ESMF_STATE = INTERNAL, & - LATS = LATS , & - LONS = LONS , & - RC=STATUS ) - VERIFY_(STATUS) - -! Profilers -!---------- - - call MAPL_TimerOn (MAPL,"TOTAL") - call MAPL_TimerOn (MAPL,"RUN" ) - -! Get the Plug private internal state -!-------------------------------------- - - CALL ESMF_UserCompGetInternalState( GC, 'MOM_MAPL_state', WRAP, STATUS ) - VERIFY_(STATUS) - - MOM_MAPL_internal_state => WRAP%PTR - -! Aliases to MOM types -!--------------------- - - Boundary => MOM_MAPL_internal_state%Ice_ocean_boundary - Ocean => MOM_MAPL_internal_state%Ocean - Ocean_State => MOM_MAPL_internal_state%Ocean_State - -! Get domain size -!---------------- - -! ------- -! do this: - call mpp_get_compute_domain(Ocean%Domain, isc, iec, jsc, jec) -! instead of: -! call get_ocean_grid (Ocean_state, Ocean_grid) -! isc = Ocean_grid%isc; iec = Ocean_grid%iec -! jsc = Ocean_grid%jsc; jec = Ocean_grid%jec -! ------- - - IM=iec-isc+1 - JM=jec-jsc+1 - -! Temporaries with MOM default reals -!----------------------------------- - - allocate(U(IM,JM ), stat=STATUS); VERIFY_(STATUS) - allocate(V(IM,JM ), stat=STATUS); VERIFY_(STATUS) - allocate(cos_rot(IM,JM), stat=STATUS); VERIFY_(STATUS) - allocate(sin_rot(IM,JM), stat=STATUS); VERIFY_(STATUS) - -! Get IMPORT pointers -!-------------------- - - call MAPL_GetPointer(IMPORT, TAUX, 'TAUX' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(IMPORT, TAUY, 'TAUY' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(IMPORT, PS, 'PS' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(IMPORT, PICE, 'PICE' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(IMPORT, LWFLX, 'LWFLX' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(IMPORT, SHFLX, 'SHFLX' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(IMPORT, QFLUX, 'QFLUX' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(IMPORT, RAIN, 'RAIN' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(IMPORT, SNOW, 'SNOW' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(IMPORT, SFLX, 'SFLX' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(IMPORT, PENUVR, 'PENUVR' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(IMPORT, PENPAR, 'PENPAR' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(IMPORT, PENUVF, 'PENUVF' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(IMPORT, PENPAF, 'PENPAF' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(IMPORT, DRNIR, 'DRNIR' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(IMPORT, DFNIR, 'DFNIR' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(IMPORT, DISCHARGE,'DISCHARGE', RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(IMPORT, AICE, 'AICE', RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(IMPORT, TAUXBOT, 'TAUXBOT', RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(IMPORT, TAUYBOT, 'TAUYBOT', RC=STATUS); VERIFY_(STATUS) - -! Get EXPORT pointers -!-------------------- - - call MAPL_GetPointer(EXPORT, UW, 'UW' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(EXPORT, VW, 'VW' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(EXPORT, UWB, 'UWB' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(EXPORT, VWB, 'VWB' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(EXPORT, TW, 'TW' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(EXPORT, SW, 'SW' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(EXPORT, SLV, 'SLV', RC=STATUS); VERIFY_(STATUS) - - call MAPL_GetPointer(EXPORT, FRAZIL, 'FRAZIL', alloc=.true., RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(EXPORT, MELT_POT,'MELT_POT', alloc=.true., RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(EXPORT, FRZMLT, 'FRZMLT', RC=STATUS); VERIFY_(STATUS) - - call MAPL_GetPointer(EXPORT, MASK, 'MOM_2D_MASK', RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(EXPORT, AREA, 'AREA', RC=STATUS); VERIFY_(STATUS) - - call MAPL_GetResource(MAPL, pice_scaling, Label = "MOM_PICE_SCALING:", default = 1.0, rc = status); VERIFY_(status) - -! Fill in ocean boundary fluxes/forces -!------------------------------------- - - call MAPL_GetResource( MAPL, pres_loading, Label="pres_loading:", DEFAULT="NO", RC=STATUS) - VERIFY_(STATUS) - - ! NOTE: PICE that is available here is all = 0. This should be made realistic, for now it is from MOM5 legacy - ! Need to study with zero pressure loading (CTL: as now), exp1 ( with PS only), exp2 (with PS and PICE), exp3 (PICE only). - if ( pres_loading == "YES") then - Boundary%P (isc:iec,jsc:jec)= real(PS, kind=KIND(Boundary%p)) + & ! Pressure of overlying atmospheric - pice_scaling * real(PICE, kind=KIND(Boundary%p)) ! and ice - else - Boundary%P (isc:iec,jsc:jec)= & - pice_scaling* real(PICE, kind=KIND(Boundary%p)) ! Pressure of overlying ice only - end if - - Boundary%lw_flux (isc:iec,jsc:jec)= real(LWFLX, kind=KIND(Boundary%p)) ! Long wave flux: both positive down - Boundary%t_flux (isc:iec,jsc:jec)= real(SHFLX, kind=KIND(Boundary%p)) ! Sensible heat flux: both positive up - Boundary%q_flux (isc:iec,jsc:jec)= real(QFLUX, kind=KIND(Boundary%p)) ! specific humidity flux [kg m-2 s-1] ( OR evaporation flux ?) - Boundary%lprec (isc:iec,jsc:jec)= real(RAIN, kind=KIND(Boundary%p)) ! Liquid precipitation: both positive down - Boundary%fprec (isc:iec,jsc:jec)= real(SNOW, kind=KIND(Boundary%p)) ! Frozen precipitation: both positive down - Boundary%salt_flux (isc:iec,jsc:jec)=-real(SFLX, kind=KIND(Boundary%p)) ! Salt flux: MOM positive up, GEOS positive down - Boundary%runoff (isc:iec,jsc:jec)= real(DISCHARGE, kind=KIND(Boundary%p)) ! mass flux of liquid runoff [kg m-2 s-1] - -! All shortwave components are positive down in MOM and in GEOS -!-------------------------------------------------------------- - Boundary%sw_flux_vis_dir(isc:iec,jsc:jec)= real(PENUVR+PENPAR, kind=KIND(Boundary%p)) ! direct visible sw radiation [W m-2] - Boundary%sw_flux_vis_dif(isc:iec,jsc:jec)= real(PENUVF+PENPAF, kind=KIND(Boundary%p)) ! diffuse visible sw radiation [W m-2] - Boundary%sw_flux_nir_dir(isc:iec,jsc:jec)= real(DRNIR, kind=KIND(Boundary%p)) ! direct Near InfraRed sw radiation [W m-2] - Boundary%sw_flux_nir_dif(isc:iec,jsc:jec)= real(DFNIR, kind=KIND(Boundary%p)) ! diffuse Near InfraRed sw radiation [W m-2] - -! Convert input stresses over water to MOM wind stagger -!------------------------------------------------------ - U = 0.0; V = 0.0 -! Using A-grid ice stress, note ice (CICE) stress has opposite sign to atmosphere - U = real( TAUX*(1.-AICE) - TAUXBOT*AICE, kind=kind(U)) - V = real( TAUY*(1.-AICE) - TAUYBOT*AICE, kind=kind(V)) - -! Grid rotation angles - these could be saved in the first instance, rather doing every time -! cos_rot = 1. ! A-grid - call ocean_model_data_get(Ocean_State, Ocean, 'cos_rot', cos_rot, isc, jsc) -! sin_rot = 0. ! A-grid - call ocean_model_data_get(Ocean_State, Ocean, 'sin_rot', sin_rot, isc, jsc) - -! Rotate input stress over water along i,j of tripolar grid, and combine with stress under ice -!--------------------------------------------------------------------------------------------- - Boundary%U_flux = 0.0; Boundary%V_flux = 0.0 ! Initialize stress - - Boundary%U_flux (isc:iec,jsc:jec)= real( (U*cos_rot - V*sin_rot), kind=KIND(Boundary%p)) - Boundary%V_flux (isc:iec,jsc:jec)= real( (U*sin_rot + V*cos_rot), kind=KIND(Boundary%p)) - -! Set the time for MOM -!--------------------- - - call ESMF_ClockGet(CLOCK, currTIME=MyTime, TimeStep=TINT, RC=STATUS) - VERIFY_(STATUS) - - call ESMF_TimeGet (MyTime, & - YY=YEAR, MM=MONTH, DD=DAY, & - H=HR, M =MN, S =SC, & - RC=STATUS ) - VERIFY_(STATUS) - - CALL ESMF_TimeIntervalGet(TINT, S=DT_OCEAN, RC=status) - VERIFY_(status) - - DT = set_time (DT_OCEAN, 0) - Time = set_date (YEAR,MONTH,DAY,HR,MN,SC) - -! Run MOM for one time step -!-------------------------- - - ! set following to non-zero only if the coupled model becomes unstable - ! (inconsistent atmosphere or bad restart! or some instabilities) - per Atanas T - call MAPL_GetResource(MAPL, steady_state_ocean, Label = "steady_state_ocean:", default = 0, rc = status); VERIFY_(status) - - if(steady_state_ocean == 0) then - call update_ocean_model(Boundary, Ocean_State, Ocean, Time, DT) - else - ! SA: steady_state_ocean: Call update_ocean_model with additional args now available with MOM6 - ! though this will cause MOM_FATAL error - call update_ocean_model(Boundary, Ocean_State, Ocean, Time, DT, .false., .false.) - endif - -! Get required Exports at GEOS precision -!--------------------------------------- - -! mask - U = 0.0 - call ocean_model_data_get(Ocean_State, Ocean, 'mask', U, isc, jsc) - MASK = real(U, kind=G5KIND) - -! surface (potential) temperature (K) - U = 0.0 - call ocean_model_data_get(Ocean_State, Ocean, 't_surf', U, isc, jsc) ! this comes to us in deg C - where(MASK(:,:) > 0.0) - TW = real(U, kind=G5KIND) + MAPL_TICE ! because C to K was subtracted in MOM - elsewhere - TW = MAPL_UNDEF - end where - -! surface salinity (PSU) - U = 0.0 - call ocean_model_data_get(Ocean_State, Ocean, 's_surf', U, isc, jsc) ! this comes to us in PSU - where(MASK(:,:) > 0.0) - SW = real(U, kind=G5KIND) - elsewhere - SW = MAPL_UNDEF - end where - -! sea level (m) - U = 0.0 - if(associated(SLV)) then - call ocean_model_data_get(Ocean_State, Ocean, 'sea_lev', U, isc, jsc) ! this comes to us in m - where(MASK(:,:)>0.0) - SLV = real(U, kind = G5KIND) - elsewhere - SLV = 0.0 - end where - end if - -! frazil (W/m^2) - U = 0.0 - if(associated(FRAZIL)) then - call ocean_model_data_get(Ocean_State, Ocean, 'frazil', U, isc, jsc) ! this comes to us in J/m2 - where(MASK(:,:)>0.0) - FRAZIL = real( (U)/dt_ocean, kind = G5KIND) ! relying on fortran to promote the int (dt_ocean) to real - elsewhere - FRAZIL = 0.0 - end where - endif - -! melt potential (W/m^2) - U = 0.0 - if(associated(MELT_POT)) then - call ocean_model_data_get(Ocean_State, Ocean, 'melt_pot', U, isc, jsc) ! this comes to us in J/m2 - where(MASK(:,:)>0.0) - MELT_POT = -real( (U)/dt_ocean, kind = G5KIND) ! relying on fortran to promote the int (dt_ocean) to real - elsewhere - MELT_POT = 0.0 - end where - MELT_POT = MIN ( MELT_POT, 0.0) ! make sure melt potential is <= 0 - endif - -! freezing melt potential (W/m^2) - if(associated(FRZMLT)) then - if ( (.not.associated(FRAZIL)) .or. (.not.associated(MELT_POT))) then - print *, 'You are asking for freeze melt potential, without asking for frazil and melt potential. You must ask for all. Exiting!' - ASSERT_(.false.) - endif - - where(MASK(:,:)>0.0) - FRZMLT = FRAZIL + MELT_POT - elsewhere - FRZMLT = 0.0 - end where - end if - -! currents (m/s) -!--------------- -! A-grid currents (for the atmospheric model) - U = 0.0; V = 0.0 - call ocean_model_get_UV_surf(Ocean_State, Ocean, 'ua', U, isc, jsc) ! this comes to us in m/s - call ocean_model_get_UV_surf(Ocean_State, Ocean, 'va', V, isc, jsc) ! this comes to us in m/s - - if(associated(UW )) then - where(MASK(:,:) > 0.0) - UW = real(U, kind=G5KIND) - elsewhere - UW=0.0 - end where - endif - - if(associated(VW )) then - where(MASK(:,:) > 0.0) - VW = real(V, kind=G5KIND) - elsewhere - VW=0.0 - end where - end if - -! B-grid currents (for CICE dynamics) - U = 0.0; V = 0.0 - call ocean_model_get_UV_surf(Ocean_State, Ocean, 'ub', U, isc, jsc) ! this comes to us in m/s - call ocean_model_get_UV_surf(Ocean_State, Ocean, 'vb', V, isc, jsc) ! this comes to us in m/s - - if(associated(UWB )) then - where(MASK(:,:) > 0.0) - UWB = real(U, kind=G5KIND) - elsewhere - UWB =0.0 - end where - endif - - if(associated(VWB )) then - where(MASK(:,:) > 0.0) - VWB = real(V, kind=G5KIND) - elsewhere - VWB =0.0 - end where - end if - -! Optional Exports at GEOS precision -!----------------------------------- -! none -! 3d exports with MOM6, such as depths, T, S, U, V, etc -! will not be exported. If needed, write them on tri-polar grid directly from MOM6 - - deallocate(U, V) - deallocate(cos_rot,sin_rot) - - call MAPL_TimerOff(MAPL,"RUN" ) - call MAPL_TimerOff(MAPL,"TOTAL" ) - -! All Done -!--------- - RETURN_(ESMF_SUCCESS) - end subroutine Run - -!BOP - -!==================================================================== - -! !IROUTINE: Finalize -- Finalize method for GuestOcean wrapper - -! !INTERFACE: - - subroutine Finalize ( gc, import, export, clock, rc ) - -! !ARGUMENTS: - - type(ESMF_GridComp), intent(INOUT) :: GC ! Gridded component - type(ESMF_State), intent(INOUT) :: IMPORT ! Import state - type(ESMF_State), intent(INOUT) :: EXPORT ! Export state - type(ESMF_Clock), intent(INOUT) :: CLOCK ! The supervisor clock - integer, optional, intent( OUT) :: RC ! Error code - -!EOP - - type(MAPL_MetaComp), pointer :: MAPL - type(ESMF_Time) :: MyTime - type(MOM_MAPL_Type), pointer :: MOM_MAPL_internal_state => null() - type(MOM_MAPLWrap_Type) :: wrap - type(ocean_public_type), pointer :: Ocean => null() - type(ocean_state_type), pointer :: Ocean_State => null() - type(ice_ocean_boundary_type), pointer :: Boundary => null() - -! ErrLog Variables - - character(len=ESMF_MAXSTR) :: IAm - integer :: STATUS - character(len=ESMF_MAXSTR) :: COMP_NAME - -! Locals with MOM types - - type(time_type) :: Time - integer :: YEAR,MONTH,DAY,HR,MN,SC - -! Get the target components name and set-up traceback handle. -! ----------------------------------------------------------- - - Iam = "Finalize" - call ESMF_GridCompGet( gc, NAME=comp_name, RC=status ) - VERIFY_(STATUS) - Iam = trim(comp_name) // Iam - -! Get my internal MAPL_Generic state -!----------------------------------- - - call MAPL_GetObjectFromGC ( GC, MAPL, RC=status) - VERIFY_(STATUS) - -! Profilers -!---------- - - call MAPL_TimerOn(MAPL,"TOTAL" ) - call MAPL_TimerOn(MAPL,"FINALIZE") - -! Get the Plug private internal state -!-------------------------------------- - - CALL ESMF_UserCompGetInternalState( GC, 'MOM_MAPL_state', WRAP, STATUS ) - VERIFY_(STATUS) - - MOM_MAPL_internal_state => WRAP%PTR - - Boundary => MOM_MAPL_internal_state%Ice_ocean_boundary - Ocean => MOM_MAPL_internal_state%Ocean - Ocean_State => MOM_MAPL_internal_state%Ocean_State - -! Set the times for MOM -!---------------------- - - call ESMF_ClockGet( CLOCK, currTime=MyTime, RC=STATUS) - VERIFY_(status) - - call ESMF_TimeGet (MyTime, & - YY=YEAR, MM=MONTH, DD=DAY, & - H=HR, M =MN, S =SC, & - RC=STATUS ) - VERIFY_(STATUS) - - Time = set_date(YEAR,MONTH,DAY,HR,MN,SC) - - call ocean_model_end (Ocean, Ocean_State, Time) ! SA: this also calls ocean_model_save_restart(...) - - call diag_manager_end(Time ) - call field_manager_end - call fms_io_exit - - deallocate ( Boundary% u_flux , & - Boundary% v_flux , & - Boundary% t_flux , & - Boundary% q_flux , & - Boundary% salt_flux , & - Boundary% lw_flux , & - Boundary% sw_flux_vis_dir , & - Boundary% sw_flux_vis_dif , & - Boundary% sw_flux_nir_dir , & - Boundary% sw_flux_nir_dif , & - Boundary% lprec , & - Boundary% fprec , & - Boundary% runoff , & - Boundary% calving , & - Boundary% stress_mag , & - Boundary% ustar_berg , & - Boundary% area_berg , & - Boundary% mass_berg , & - Boundary% runoff_hflx , & - Boundary% calving_hflx , & - Boundary% p , & - Boundary% mi , & - Boundary% ice_rigidity , & - stat=STATUS ) - VERIFY_(STATUS) - - deallocate ( Ocean, STAT=STATUS); VERIFY_(STATUS) - deallocate ( Boundary, STAT=STATUS); VERIFY_(STATUS) - deallocate ( MOM_MAPL_internal_state, STAT=STATUS); VERIFY_(STATUS) -! - - call MAPL_TimerOff(MAPL,"FINALIZE") - call MAPL_TimerOff(MAPL,"TOTAL" ) - -! Generic Finalize -! ------------------ - - call MAPL_GenericFinalize( GC, IMPORT, EXPORT, CLOCK, RC=status ) - VERIFY_(STATUS) - - call mpp_exit() - -! All Done -!--------- - - RETURN_(ESMF_SUCCESS) - end subroutine Finalize - -!==================================================================== - -! !IROUTINE: Record -- Record method for GuestOcean wrapper (write intermediate restarts) - -! !INTERFACE: - - subroutine Record ( gc, import, export, clock, rc ) - -! !ARGUMENTS: - - type(ESMF_GridComp), intent(INOUT) :: GC ! Gridded component - type(ESMF_State), intent(INOUT) :: IMPORT ! Import state - type(ESMF_State), intent(INOUT) :: EXPORT ! Export state - type(ESMF_Clock), intent(INOUT) :: CLOCK ! The supervisor clock - integer, optional, intent( OUT) :: RC ! Error code - -!EOP - - type(MAPL_MetaComp), pointer :: MAPL - type(MOM_MAPL_Type), pointer :: MOM_MAPL_internal_state => null() - type(MOM_MAPLWrap_Type) :: wrap - type(ocean_state_type), pointer :: Ocean_State => null() - -! ErrLog Variables - - character(len=ESMF_MAXSTR) :: IAm - integer :: STATUS - character(len=ESMF_MAXSTR) :: COMP_NAME - -! Locals - character(len=14) :: timeStamp - logical :: doRecord - -! Get the target components name and set-up traceback handle. -! ----------------------------------------------------------- - - Iam = "Record" - call ESMF_GridCompGet( gc, NAME=comp_name, RC=status ) - VERIFY_(STATUS) - Iam = trim(comp_name) // Iam - -! Get my internal MAPL_Generic state -!----------------------------------- - - call MAPL_GetObjectFromGC ( GC, MAPL, RC=status) - VERIFY_(STATUS) - -! Profilers -!---------- - - call MAPL_TimerOn(MAPL,"TOTAL") - - doRecord = MAPL_RecordAlarmIsRinging(MAPL, RC=status) - VERIFY_(STATUS) - - if (doRecord) then - -! Get the Plug private internal state -!-------------------------------------- - - CALL ESMF_UserCompGetInternalState( GC, 'MOM_MAPL_state', WRAP, STATUS ) - VERIFY_(STATUS) - - MOM_MAPL_internal_state => WRAP%PTR - Ocean_State => MOM_MAPL_internal_state%Ocean_State - - call MAPL_DateStampGet(clock, timeStamp, rc=status) - VERIFY_(STATUS) - -! Write a restart -!----------------- - - call ocean_model_restart (Ocean_State, timeStamp) - VERIFY_(STATUS) - - end if - - call MAPL_TimerOff(MAPL,"TOTAL") - RETURN_(ESMF_SUCCESS) - - end subroutine Record - -!==================================================================== - -end module MOM6_GEOSPlugMod - -subroutine SetServices(gc, rc) - use ESMF - use MOM6_GEOSPlugMod, only : mySetservices=>SetServices - type(ESMF_GridComp) :: gc - integer, intent(out) :: rc - call mySetServices(gc, rc=rc) -end subroutine - diff --git a/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/1440x1080/MOM_input b/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/1440x1080/MOM_input deleted file mode 100644 index 3362e20e6..000000000 --- a/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/1440x1080/MOM_input +++ /dev/null @@ -1,805 +0,0 @@ -! This input file provides the adjustable run-time parameters for version 6 of the Modular Ocean Model (MOM6). -! Where appropriate, parameters use usually given in MKS units. - -! This particular file is for the example in ice_ocean_SIS2/OM4_025. - -! This MOM_input file typically contains only the non-default values that are needed to reproduce this example. -! A full list of parameters for this example can be found in the corresponding MOM_parameter_doc.all file -! which is generated by the model at run-time. - -! === module MOM_domains === -TRIPOLAR_N = True ! [Boolean] default = False - ! Use tripolar connectivity at the northern edge of the domain. With - ! TRIPOLAR_N, NIGLOBAL must be even. -NIGLOBAL = 1440 ! - ! The total number of thickness grid points in the x-direction in the physical - ! domain. With STATIC_MEMORY_ this is set in MOM_memory.h at compile time. -NJGLOBAL = 1080 ! - ! The total number of thickness grid points in the y-direction in the physical - ! domain. With STATIC_MEMORY_ this is set in MOM_memory.h at compile time. -NIHALO = 4 ! default = 4 - ! The number of halo points on each side in the x-direction. With - ! STATIC_MEMORY_ this is set as NIHALO_ in MOM_memory.h at compile time; without - ! STATIC_MEMORY_ the default is NIHALO_ in MOM_memory.h (if defined) or 2. -NJHALO = 4 ! default = 4 - ! The number of halo points on each side in the y-direction. With - ! STATIC_MEMORY_ this is set as NJHALO_ in MOM_memory.h at compile time; without - ! STATIC_MEMORY_ the default is NJHALO_ in MOM_memory.h (if defined) or 2. -! LAYOUT = 32, 18 ! - ! The processor layout that was actually used. -! IO_LAYOUT = 1, 1 ! default = 1 - ! The processor layout to be used, or 0,0 to automatically set the io_layout to - ! be the same as the layout. - -! === module MOM === -USE_REGRIDDING = True ! [Boolean] default = False - ! If True, use the ALE algorithm (regridding/remapping). If False, use the - ! layered isopycnal algorithm. -THICKNESSDIFFUSE = True ! [Boolean] default = False - ! If true, interface heights are diffused with a coefficient of KHTH. -THICKNESSDIFFUSE_FIRST = True ! [Boolean] default = False - ! If true, do thickness diffusion before dynamics. This is only used if - ! THICKNESSDIFFUSE is true. -DT = 900.0 ! [s] - ! The (baroclinic) dynamics time step. The time-step that is actually used will - ! be an integer fraction of the forcing time-step (DT_FORCING in ocean-only mode - ! or the coupling timestep in coupled mode.) -DT_THERM = 7200.0 ! [s] default = 900.0 - ! The thermodynamic and tracer advection time step. Ideally DT_THERM should be - ! an integer multiple of DT and less than the forcing or coupling time-step, - ! unless THERMO_SPANS_COUPLING is true, in which case DT_THERM can be an integer - ! multiple of the coupling timestep. By default DT_THERM is set to DT. -THERMO_SPANS_COUPLING = True ! [Boolean] default = False - ! If true, the MOM will take thermodynamic and tracer timesteps that can be - ! longer than the coupling timestep. The actual thermodynamic timestep that is - ! used in this case is the largest integer multiple of the coupling timestep - ! that is less than or equal to DT_THERM. -USE_PSURF_IN_EOS = False ! [Boolean] default = False - ! If true, always include the surface pressure contributions in equation of - ! state calculations. -FRAZIL = True ! [Boolean] default = False - ! If true, water freezes if it gets too cold, and the accumulated heat deficit - ! is returned in the surface state. FRAZIL is only used if - ! ENABLE_THERMODYNAMICS is true. -DO_GEOTHERMAL = True ! [Boolean] default = False - ! If true, apply geothermal heating. -BOUND_SALINITY = True ! [Boolean] default = False - ! If true, limit salinity to being positive. (The sea-ice model may ask for more - ! salt than is available and drive the salinity negative otherwise.) -MIN_SALINITY = 0.01 ! [PPT] default = 0.01 - ! The minimum value of salinity when BOUND_SALINITY=True. The default is 0.01 - ! for backward compatibility but ideally should be 0. -C_P = 3992.0 ! [J kg-1 K-1] default = 3991.86795711963 - ! The heat capacity of sea water, approximated as a constant. This is only used - ! if ENABLE_THERMODYNAMICS is true. The default value is from the TEOS-10 - ! definition of conservative temperature. -CHECK_BAD_SURFACE_VALS = True ! [Boolean] default = False - ! If true, check the surface state for ridiculous values. -BAD_VAL_SSH_MAX = 50.0 ! [m] default = 20.0 - ! The value of SSH above which a bad value message is triggered, if - ! CHECK_BAD_SURFACE_VALS is true. -BAD_VAL_SSS_MAX = 75.0 ! [PPT] default = 45.0 - ! The value of SSS above which a bad value message is triggered, if - ! CHECK_BAD_SURFACE_VALS is true. -BAD_VAL_SST_MAX = 55.0 ! [deg C] default = 45.0 - ! The value of SST above which a bad value message is triggered, if - ! CHECK_BAD_SURFACE_VALS is true. -BAD_VAL_SST_MIN = -3.0 ! [deg C] default = -2.1 - ! The value of SST below which a bad value message is triggered, if - ! CHECK_BAD_SURFACE_VALS is true. -DEFAULT_2018_ANSWERS = True ! [Boolean] default = True - ! This sets the default value for the various _2018_ANSWERS parameters. -WRITE_GEOM = 0 ! default = 1 - ! If =0, never write the geometry and vertical grid files. If =1, write the - ! geometry and vertical grid files only for a new simulation. If =2, always - ! write the geometry and vertical grid files. Other values are invalid. - -! === module MOM_hor_index === -! Sets the horizontal array index types. - -! === module MOM_fixed_initialization === -INPUTDIR = "INPUT" ! default = "." - ! The directory in which input files are found. - -! === module MOM_grid_init === -GRID_CONFIG = "mosaic" ! - ! A character string that determines the method for defining the horizontal - ! grid. Current options are: - ! mosaic - read the grid from a mosaic (supergrid) - ! file set by GRID_FILE. - ! cartesian - use a (flat) Cartesian grid. - ! spherical - use a simple spherical grid. - ! mercator - use a Mercator spherical grid. -GRID_FILE = "ocean_hgrid.nc" ! - ! Name of the file from which to read horizontal grid data. -TOPO_CONFIG = "file" ! - ! This specifies how bathymetry is specified: - ! file - read bathymetric information from the file - ! specified by (TOPO_FILE). - ! flat - flat bottom set to MAXIMUM_DEPTH. - ! bowl - an analytically specified bowl-shaped basin - ! ranging between MAXIMUM_DEPTH and MINIMUM_DEPTH. - ! spoon - a similar shape to 'bowl', but with an vertical - ! wall at the southern face. - ! halfpipe - a zonally uniform channel with a half-sine - ! profile in the meridional direction. - ! benchmark - use the benchmark test case topography. - ! Neverland - use the Neverland test case topography. - ! DOME - use a slope and channel configuration for the - ! DOME sill-overflow test case. - ! ISOMIP - use a slope and channel configuration for the - ! ISOMIP test case. - ! DOME2D - use a shelf and slope configuration for the - ! DOME2D gravity current/overflow test case. - ! Kelvin - flat but with rotated land mask. - ! seamount - Gaussian bump for spontaneous motion test case. - ! dumbbell - Sloshing channel with reservoirs on both ends. - ! shelfwave - exponential slope for shelfwave test case. - ! Phillips - ACC-like idealized topography used in the Phillips config. - ! dense - Denmark Strait-like dense water formation and overflow. - ! USER - call a user modified routine. -TOPO_FILE = "ocean_topog.nc" ! default = "topog.nc" - ! The file from which the bathymetry is read. -TOPO_EDITS_FILE = "All_edits.nc" ! default = "" - ! The file from which to read a list of i,j,z topography overrides. -MAXIMUM_DEPTH = 6500.0 ! [m] - ! The maximum depth of the ocean. -MINIMUM_DEPTH = 9.5 ! [m] default = 0.0 - ! If MASKING_DEPTH is unspecified, then anything shallower than MINIMUM_DEPTH is - ! assumed to be land and all fluxes are masked out. If MASKING_DEPTH is - ! specified, then all depths shallower than MINIMUM_DEPTH but deeper than - ! MASKING_DEPTH are rounded to MINIMUM_DEPTH. - -! === module MOM_open_boundary === -! Controls where open boundaries are located, what kind of boundary condition to impose, and what data to apply, -! if any. -MASKING_DEPTH = 0.0 ! [m] default = -9999.0 - ! The depth below which to mask points as land points, for which all fluxes are - ! zeroed out. MASKING_DEPTH is ignored if negative. -CHANNEL_CONFIG = "list" ! default = "none" - ! A parameter that determines which set of channels are - ! restricted to specific widths. Options are: - ! none - All channels have the grid width. - ! global_1deg - Sets 16 specific channels appropriate - ! for a 1-degree model, as used in CM2G. - ! list - Read the channel locations and widths from a - ! text file, like MOM_channel_list in the MOM_SIS - ! test case. - ! file - Read open face widths everywhere from a - ! NetCDF file on the model grid. -CHANNEL_LIST_FILE = "MOM_channels_global_025" ! default = "MOM_channel_list" - ! The file from which the list of narrowed channels is read. - -! === module MOM_verticalGrid === -! Parameters providing information about the vertical grid. -NK = 75 ! [nondim] - ! The number of model layers. - -! === module MOM_tracer_registry === - -! === module MOM_EOS === -DTFREEZE_DP = -7.75E-08 ! [deg C Pa-1] default = 0.0 - ! When TFREEZE_FORM=LINEAR, this is the derivative of the freezing potential - ! temperature with pressure. - -! === module MOM_restart === -PARALLEL_RESTARTFILES = True ! [Boolean] default = False - ! If true, each processor writes its own restart file, otherwise a single - ! restart file is generated - -! === module MOM_tracer_flow_control === -USE_IDEAL_AGE_TRACER = True ! [Boolean] default = False - ! If true, use the ideal_age_example tracer package. - -! === module ideal_age_example === - -! === module MOM_coord_initialization === -COORD_CONFIG = "file" ! - ! This specifies how layers are to be defined: - ! ALE or none - used to avoid defining layers in ALE mode - ! file - read coordinate information from the file - ! specified by (COORD_FILE). - ! BFB - Custom coords for buoyancy-forced basin case - ! based on SST_S, T_BOT and DRHO_DT. - ! linear - linear based on interfaces not layers - ! layer_ref - linear based on layer densities - ! ts_ref - use reference temperature and salinity - ! ts_range - use range of temperature and salinity - ! (T_REF and S_REF) to determine surface density - ! and GINT calculate internal densities. - ! gprime - use reference density (RHO_0) for surface - ! density and GINT calculate internal densities. - ! ts_profile - use temperature and salinity profiles - ! (read from COORD_FILE) to set layer densities. - ! USER - call a user modified routine. -COORD_FILE = "layer_coord.nc" ! - ! The file from which the coordinate densities are read. -REMAP_UV_USING_OLD_ALG = True ! [Boolean] default = True - ! If true, uses the old remapping-via-a-delta-z method for remapping u and v. If - ! false, uses the new method that remaps between grids described by an old and - ! new thickness. -REGRIDDING_COORDINATE_MODE = "HYCOM1" ! default = "LAYER" - ! Coordinate mode for vertical regridding. Choose among the following - ! possibilities: LAYER - Isopycnal or stacked shallow water layers - ! ZSTAR, Z* - stretched geopotential z* - ! SIGMA_SHELF_ZSTAR - stretched geopotential z* ignoring shelf - ! SIGMA - terrain following coordinates - ! RHO - continuous isopycnal - ! HYCOM1 - HyCOM-like hybrid coordinate - ! SLIGHT - stretched coordinates above continuous isopycnal - ! ADAPTIVE - optimize for smooth neutral density surfaces -BOUNDARY_EXTRAPOLATION = True ! [Boolean] default = False - ! When defined, a proper high-order reconstruction scheme is used within - ! boundary cells rather than PCM. E.g., if PPM is used for remapping, a PPM - ! reconstruction will also be used within boundary cells. -ALE_COORDINATE_CONFIG = "HYBRID:hycom1_75_800m.nc,sigma2,FNC1:2,4000,4.5,.01" ! default = "UNIFORM" - ! Determines how to specify the coordinate resolution. Valid options are: - ! PARAM - use the vector-parameter ALE_RESOLUTION - ! UNIFORM[:N] - uniformly distributed - ! FILE:string - read from a file. The string specifies - ! the filename and variable name, separated - ! by a comma or space, e.g. FILE:lev.nc,dz - ! or FILE:lev.nc,interfaces=zw - ! WOA09[:N] - the WOA09 vertical grid (approximately) - ! FNC1:string - FNC1:dz_min,H_total,power,precision - ! HYBRID:string - read from a file. The string specifies - ! the filename and two variable names, separated - ! by a comma or space, for sigma-2 and dz. e.g. - ! HYBRID:vgrid.nc,sigma2,dz -!ALE_RESOLUTION = 7*2.0, 2*2.01, 2.02, 2.03, 2.05, 2.08, 2.11, 2.15, 2.21, 2.2800000000000002, 2.37, 2.48, 2.61, 2.77, 2.95, 3.17, 3.4299999999999997, 3.74, 4.09, 4.49, 4.95, 5.48, 6.07, 6.74, 7.5, 8.34, 9.280000000000001, 10.33, 11.49, 12.77, 14.19, 15.74, 17.450000000000003, 19.31, 21.35, 23.56, 25.97, 28.580000000000002, 31.41, 34.47, 37.77, 41.32, 45.14, 49.25, 53.65, 58.370000000000005, 63.42, 68.81, 74.56, 80.68, 87.21000000000001, 94.14, 101.51, 109.33, 117.62, 126.4, 135.68, 145.5, 155.87, 166.81, 178.35, 190.51, 203.31, 216.78, 230.93, 245.8, 261.42, 277.83 ! [m] - ! The distribution of vertical resolution for the target - ! grid used for Eulerian-like coordinates. For example, - ! in z-coordinate mode, the parameter is a list of level - ! thicknesses (in m). In sigma-coordinate mode, the list - ! is of non-dimensional fractions of the water column. -!TARGET_DENSITIES = 1010.0, 1014.3034, 1017.8088, 1020.843, 1023.5566, 1025.813, 1027.0275, 1027.9114, 1028.6422, 1029.2795, 1029.852, 1030.3762, 1030.8626, 1031.3183, 1031.7486, 1032.1572, 1032.5471, 1032.9207, 1033.2798, 1033.6261, 1033.9608, 1034.2519, 1034.4817, 1034.6774, 1034.8508, 1035.0082, 1035.1533, 1035.2886, 1035.4159, 1035.5364, 1035.6511, 1035.7608, 1035.8661, 1035.9675, 1036.0645, 1036.1554, 1036.2411, 1036.3223, 1036.3998, 1036.4739, 1036.5451, 1036.6137, 1036.68, 1036.7441, 1036.8062, 1036.8526, 1036.8874, 1036.9164, 1036.9418, 1036.9647, 1036.9857, 1037.0052, 1037.0236, 1037.0409, 1037.0574, 1037.0738, 1037.0902, 1037.1066, 1037.123, 1037.1394, 1037.1558, 1037.1722, 1037.1887, 1037.206, 1037.2241, 1037.2435, 1037.2642, 1037.2866, 1037.3112, 1037.3389, 1037.3713, 1037.4118, 1037.475, 1037.6332, 1037.8104, 1038.0 ! [m] - ! HYBRID target densities for interfaces -REGRID_COMPRESSIBILITY_FRACTION = 0.01 ! [nondim] default = 0.0 - ! When interpolating potential density profiles we can add some artificial - ! compressibility solely to make homogeneous regions appear stratified. -MAXIMUM_INT_DEPTH_CONFIG = "FNC1:5,8000.0,1.0,.01" ! default = "NONE" - ! Determines how to specify the maximum interface depths. - ! Valid options are: - ! NONE - there are no maximum interface depths - ! PARAM - use the vector-parameter MAXIMUM_INTERFACE_DEPTHS - ! FILE:string - read from a file. The string specifies - ! the filename and variable name, separated - ! by a comma or space, e.g. FILE:lev.nc,Z - ! FNC1:string - FNC1:dz_min,H_total,power,precision -!MAXIMUM_INT_DEPTHS = 0.0, 5.0, 12.75, 23.25, 36.49, 52.480000000000004, 71.22, 92.71000000000001, 116.94000000000001, 143.92000000000002, 173.65, 206.13, 241.36, 279.33000000000004, 320.05000000000007, 363.5200000000001, 409.7400000000001, 458.7000000000001, 510.4100000000001, 564.8700000000001, 622.0800000000002, 682.0300000000002, 744.7300000000002, 810.1800000000003, 878.3800000000003, 949.3300000000004, 1023.0200000000004, 1099.4600000000005, 1178.6500000000005, 1260.5900000000006, 1345.2700000000007, 1432.7000000000007, 1522.8800000000008, 1615.8100000000009, 1711.490000000001, 1809.910000000001, 1911.080000000001, 2015.0000000000011, 2121.670000000001, 2231.080000000001, 2343.2400000000007, 2458.1500000000005, 2575.8100000000004, 2696.2200000000003, 2819.3700000000003, 2945.2700000000004, 3073.9200000000005, 3205.3200000000006, 3339.4600000000005, 3476.3500000000004, 3615.9900000000002, 3758.38, 3903.52, 4051.4, 4202.03, 4355.41, 4511.54, 4670.41, 4832.03, 4996.4, 5163.5199999999995, 5333.379999999999, 5505.989999999999, 5681.3499999999985, 5859.459999999998, 6040.319999999998, 6223.919999999998, 6410.269999999999, 6599.369999999999, 6791.219999999999, 6985.8099999999995, 7183.15, 7383.24, 7586.08, 7791.67, 8000.0 - ! The list of maximum depths for each interface. -MAX_LAYER_THICKNESS_CONFIG = "FNC1:400,31000.0,0.1,.01" ! default = "NONE" - ! Determines how to specify the maximum layer thicknesses. - ! Valid options are: - ! NONE - there are no maximum layer thicknesses - ! PARAM - use the vector-parameter MAX_LAYER_THICKNESS - ! FILE:string - read from a file. The string specifies - ! the filename and variable name, separated - ! by a comma or space, e.g. FILE:lev.nc,Z - ! FNC1:string - FNC1:dz_min,H_total,power,precision -!MAX_LAYER_THICKNESS = 400.0, 409.63, 410.32, 410.75, 411.07, 411.32, 411.52, 411.7, 411.86, 412.0, 412.13, 412.24, 412.35, 412.45, 412.54, 412.63, 412.71, 412.79, 412.86, 412.93, 413.0, 413.06, 413.12, 413.18, 413.24, 413.29, 413.34, 413.39, 413.44, 413.49, 413.54, 413.58, 413.62, 413.67, 413.71, 413.75, 413.78, 413.82, 413.86, 413.9, 413.93, 413.97, 414.0, 414.03, 414.06, 414.1, 414.13, 414.16, 414.19, 414.22, 414.24, 414.27, 414.3, 414.33, 414.35, 414.38, 414.41, 414.43, 414.46, 414.48, 414.51, 414.53, 414.55, 414.58, 414.6, 414.62, 414.65, 414.67, 414.69, 414.71, 414.73, 414.75, 414.77, 414.79, 414.83 ! [m] - ! The list of maximum thickness for each layer. -REMAPPING_SCHEME = "PPM_H4" ! default = "PLM" - ! This sets the reconstruction scheme used for vertical remapping for all - ! variables. It can be one of the following schemes: PCM (1st-order - ! accurate) - ! PLM (2nd-order accurate) - ! PPM_H4 (3rd-order accurate) - ! PPM_IH4 (3rd-order accurate) - ! PQM_IH4IH3 (4th-order accurate) - ! PQM_IH6IH5 (5th-order accurate) - -! === module MOM_grid === -! Parameters providing information about the lateral grid. - -! === module MOM_state_initialization === -INIT_LAYERS_FROM_Z_FILE = True ! [Boolean] default = False - ! If true, initialize the layer thicknesses, temperatures, and salinities from a - ! Z-space file on a latitude-longitude grid. - -! === module MOM_initialize_layers_from_Z === -TEMP_SALT_Z_INIT_FILE = "" ! default = "temp_salt_z.nc" - ! The name of the z-space input file used to initialize temperatures (T) and - ! salinities (S). If T and S are not in the same file, TEMP_Z_INIT_FILE and - ! SALT_Z_INIT_FILE must be set. -TEMP_Z_INIT_FILE = "woa13_decav_ptemp_monthly_fulldepth_01.nc" ! default = "" - ! The name of the z-space input file used to initialize temperatures, only. -SALT_Z_INIT_FILE = "woa13_decav_s_monthly_fulldepth_01.nc" ! default = "" - ! The name of the z-space input file used to initialize temperatures, only. -Z_INIT_FILE_PTEMP_VAR = "ptemp_an" ! default = "ptemp" - ! The name of the potential temperature variable in TEMP_Z_INIT_FILE. -Z_INIT_FILE_SALT_VAR = "s_an" ! default = "salt" - ! The name of the salinity variable in SALT_Z_INIT_FILE. -Z_INIT_ALE_REMAPPING = True ! [Boolean] default = False - ! If True, then remap straight to model coordinate from file. -Z_INIT_REMAP_OLD_ALG = True ! [Boolean] default = True - ! If false, uses the preferred remapping algorithm for initialization. If true, - ! use an older, less robust algorithm for remapping. - -! === module MOM_diag_mediator === -NUM_DIAG_COORDS = 2 ! default = 1 - ! The number of diagnostic vertical coordinates to use. For each coordinate, an - ! entry in DIAG_COORDS must be provided. -DIAG_COORDS = "z Z ZSTAR", "rho2 RHO2 RHO" ! - ! A list of string tuples associating diag_table modules to a coordinate - ! definition used for diagnostics. Each string is of the form - ! "MODULE_SUFFIX,PARAMETER_SUFFIX,COORDINATE_NAME". -DIAG_COORD_DEF_RHO2 = "FILE:diag_rho2.nc,interfaces=rho2" ! default = "WOA09" - ! Determines how to specify the coordinate resolution. Valid options are: - ! PARAM - use the vector-parameter DIAG_COORD_RES_RHO2 - ! UNIFORM[:N] - uniformly distributed - ! FILE:string - read from a file. The string specifies - ! the filename and variable name, separated - ! by a comma or space, e.g. FILE:lev.nc,dz - ! or FILE:lev.nc,interfaces=zw - ! WOA09[:N] - the WOA09 vertical grid (approximately) - ! FNC1:string - FNC1:dz_min,H_total,power,precision - ! HYBRID:string - read from a file. The string specifies - ! the filename and two variable names, separated - ! by a comma or space, for sigma-2 and dz. e.g. - ! HYBRID:vgrid.nc,sigma2,dz - -! === module MOM_MEKE === -USE_MEKE = True ! [Boolean] default = False - ! If true, turns on the MEKE scheme which calculates a sub-grid mesoscale eddy - ! kinetic energy budget. -MEKE_GMCOEFF = 1.0 ! [nondim] default = -1.0 - ! The efficiency of the conversion of potential energy into MEKE by the - ! thickness mixing parameterization. If MEKE_GMCOEFF is negative, this - ! conversion is not used or calculated. -MEKE_BGSRC = 1.0E-13 ! [W kg-1] default = 0.0 - ! A background energy source for MEKE. -MEKE_KHMEKE_FAC = 1.0 ! [nondim] default = 0.0 - ! A factor that maps MEKE%Kh to Kh for MEKE itself. -MEKE_ALPHA_RHINES = 0.15 ! [nondim] default = 0.05 - ! If positive, is a coefficient weighting the Rhines scale in the expression for - ! mixing length used in MEKE-derived diffusivity. -MEKE_ALPHA_EADY = 0.15 ! [nondim] default = 0.05 - ! If positive, is a coefficient weighting the Eady length scale in the - ! expression for mixing length used in MEKE-derived diffusivity. - -! === module MOM_lateral_mixing_coeffs === -USE_VARIABLE_MIXING = True ! [Boolean] default = False - ! If true, the variable mixing code will be called. This allows diagnostics to - ! be created even if the scheme is not used. If KHTR_SLOPE_CFF>0 or - ! KhTh_Slope_Cff>0, this is set to true regardless of what is in the parameter - ! file. -RESOLN_SCALED_KH = True ! [Boolean] default = False - ! If true, the Laplacian lateral viscosity is scaled away when the first - ! baroclinic deformation radius is well resolved. -RESOLN_SCALED_KHTH = True ! [Boolean] default = False - ! If true, the interface depth diffusivity is scaled away when the first - ! baroclinic deformation radius is well resolved. -KHTR_SLOPE_CFF = 0.25 ! [nondim] default = 0.0 - ! The nondimensional coefficient in the Visbeck formula for the epipycnal tracer - ! diffusivity -USE_STORED_SLOPES = True ! [Boolean] default = False - ! If true, the isopycnal slopes are calculated once and stored for re-use. This - ! uses more memory but avoids calling the equation of state more times than - ! should be necessary. -INTERPOLATE_RES_FN = False ! [Boolean] default = True - ! If true, interpolate the resolution function to the velocity points from the - ! thickness points; otherwise interpolate the wave speed and calculate the - ! resolution function independently at each point. -GILL_EQUATORIAL_LD = True ! [Boolean] default = False - ! If true, uses Gill's definition of the baroclinic equatorial deformation - ! radius, otherwise, if false, use Pedlosky's definition. These definitions - ! differ by a factor of 2 in front of the beta term in the denominator. Gill's - ! is the more appropriate definition. - -! === module MOM_set_visc === -CHANNEL_DRAG = True ! [Boolean] default = False - ! If true, the bottom drag is exerted directly on each layer proportional to the - ! fraction of the bottom it overlies. -PRANDTL_TURB = 1.25 ! [nondim] default = 1.0 - ! The turbulent Prandtl number applied to shear instability. -HBBL = 10.0 ! [m] - ! The thickness of a bottom boundary layer with a viscosity of KVBBL if - ! BOTTOMDRAGLAW is not defined, or the thickness over which near-bottom - ! velocities are averaged for the drag law if BOTTOMDRAGLAW is defined but - ! LINEAR_DRAG is not. -DRAG_BG_VEL = 0.1 ! [m s-1] default = 0.0 - ! DRAG_BG_VEL is either the assumed bottom velocity (with LINEAR_DRAG) or an - ! unresolved velocity that is combined with the resolved velocity to estimate - ! the velocity magnitude. DRAG_BG_VEL is only used when BOTTOMDRAGLAW is - ! defined. -BBL_USE_EOS = True ! [Boolean] default = False - ! If true, use the equation of state in determining the properties of the bottom - ! boundary layer. Otherwise use the layer target potential densities. -BBL_THICK_MIN = 0.1 ! [m] default = 0.0 - ! The minimum bottom boundary layer thickness that can be used with - ! BOTTOMDRAGLAW. This might be Kv/(cdrag*drag_bg_vel) to give Kv as the minimum - ! near-bottom viscosity. -KV = 1.0E-04 ! [m2 s-1] - ! The background kinematic viscosity in the interior. The molecular value, ~1e-6 - ! m2 s-1, may be used. -KV_BBL_MIN = 0.0 ! [m2 s-1] default = 1.0E-04 - ! The minimum viscosities in the bottom boundary layer. -KV_TBL_MIN = 0.0 ! [m2 s-1] default = 1.0E-04 - ! The minimum viscosities in the top boundary layer. - -! === module MOM_thickness_diffuse === -KHTH_MAX_CFL = 0.1 ! [nondimensional] default = 0.8 - ! The maximum value of the local diffusive CFL ratio that is permitted for the - ! thickness diffusivity. 1.0 is the marginally unstable value in a pure layered - ! model, but much smaller numbers (e.g. 0.1) seem to work better for ALE-based - ! models. -USE_GM_WORK_BUG = True ! [Boolean] default = True - ! If true, compute the top-layer work tendency on the u-grid with the incorrect - ! sign, for legacy reproducibility. - -! === module MOM_continuity === - -! === module MOM_continuity_PPM === -ETA_TOLERANCE = 1.0E-06 ! [m] default = 3.75E-09 - ! The tolerance for the differences between the barotropic and baroclinic - ! estimates of the sea surface height due to the fluxes through each face. The - ! total tolerance for SSH is 4 times this value. The default is - ! 0.5*NK*ANGSTROM, and this should not be set less than about - ! 10^-15*MAXIMUM_DEPTH. -ETA_TOLERANCE_AUX = 0.001 ! [m] default = 1.0E-06 - ! The tolerance for free-surface height discrepancies between the barotropic - ! solution and the sum of the layer thicknesses when calculating the auxiliary - ! corrected velocities. By default, this is the same as ETA_TOLERANCE, but can - ! be made larger for efficiency. - -! === module MOM_CoriolisAdv === -CORIOLIS_SCHEME = "SADOURNY75_ENSTRO" ! default = "SADOURNY75_ENERGY" - ! CORIOLIS_SCHEME selects the discretization for the Coriolis terms. Valid - ! values are: - ! SADOURNY75_ENERGY - Sadourny, 1975; energy cons. - ! ARAKAWA_HSU90 - Arakawa & Hsu, 1990 - ! SADOURNY75_ENSTRO - Sadourny, 1975; enstrophy cons. - ! ARAKAWA_LAMB81 - Arakawa & Lamb, 1981; En. + Enst. - ! ARAKAWA_LAMB_BLEND - A blend of Arakawa & Lamb with - ! Arakawa & Hsu and Sadourny energy -BOUND_CORIOLIS = True ! [Boolean] default = False - ! If true, the Coriolis terms at u-points are bounded by the four estimates of - ! (f+rv)v from the four neighboring v-points, and similarly at v-points. This - ! option would have no effect on the SADOURNY Coriolis scheme if it were - ! possible to use centered difference thickness fluxes. - -! === module MOM_PressureForce === - -! === module MOM_PressureForce_AFV === -MASS_WEIGHT_IN_PRESSURE_GRADIENT = True ! [Boolean] default = False - ! If true, use mass weighting when interpolating T/S for integrals near the - ! bathymetry in AFV pressure gradient calculations. - -! === module MOM_hor_visc === -LAPLACIAN = True ! [Boolean] default = False - ! If true, use a Laplacian horizontal viscosity. -AH_VEL_SCALE = 0.01 ! [m s-1] default = 0.0 - ! The velocity scale which is multiplied by the cube of the grid spacing to - ! calculate the biharmonic viscosity. The final viscosity is the largest of this - ! scaled viscosity, the Smagorinsky and Leith viscosities, and AH. -SMAGORINSKY_AH = True ! [Boolean] default = False - ! If true, use a biharmonic Smagorinsky nonlinear eddy viscosity. -SMAG_BI_CONST = 0.06 ! [nondim] default = 0.0 - ! The nondimensional biharmonic Smagorinsky constant, typically 0.015 - 0.06. -USE_LAND_MASK_FOR_HVISC = False ! [Boolean] default = False - ! If true, use Use the land mask for the computation of thicknesses at velocity - ! locations. This eliminates the dependence on arbitrary values over land or - ! outside of the domain. Default is False in order to maintain answers with - ! legacy experiments but should be changed to True for new experiments. - -! === module MOM_vert_friction === -HMIX_FIXED = 0.5 ! [m] - ! The prescribed depth over which the near-surface viscosity and diffusivity are - ! elevated when the bulk mixed layer is not used. -MAXVEL = 6.0 ! [m s-1] default = 3.0E+08 - ! The maximum velocity allowed before the velocity components are truncated. - -! === module MOM_PointAccel === -U_TRUNC_FILE = "U_velocity_truncations" ! default = "" - ! The absolute path to a file into which the accelerations leading to zonal - ! velocity truncations are written. Undefine this for efficiency if this - ! diagnostic is not needed. -V_TRUNC_FILE = "V_velocity_truncations" ! default = "" - ! The absolute path to a file into which the accelerations leading to meridional - ! velocity truncations are written. Undefine this for efficiency if this - ! diagnostic is not needed. - -! === module MOM_barotropic === -BOUND_BT_CORRECTION = True ! [Boolean] default = False - ! If true, the corrective pseudo mass-fluxes into the barotropic solver are - ! limited to values that require less than maxCFL_BT_cont to be accommodated. -BT_PROJECT_VELOCITY = True ! [Boolean] default = False - ! If true, step the barotropic velocity first and project out the velocity - ! tendency by 1+BEBT when calculating the transport. The default (false) is to - ! use a predictor continuity step to find the pressure field, and then to do a - ! corrector continuity step using a weighted average of the old and new - ! velocities, with weights of (1-BEBT) and BEBT. -DYNAMIC_SURFACE_PRESSURE = True ! [Boolean] default = False - ! If true, add a dynamic pressure due to a viscous ice shelf, for instance. -BEBT = 0.2 ! [nondim] default = 0.1 - ! BEBT determines whether the barotropic time stepping uses the forward-backward - ! time-stepping scheme or a backward Euler scheme. BEBT is valid in the range - ! from 0 (for a forward-backward treatment of nonrotating gravity waves) to 1 - ! (for a backward Euler treatment). In practice, BEBT must be greater than about - ! 0.05. -DTBT = -0.9 ! [s or nondim] default = -0.98 - ! The barotropic time step, in s. DTBT is only used with the split explicit time - ! stepping. To set the time step automatically based the maximum stable value - ! use 0, or a negative value gives the fraction of the stable value. Setting - ! DTBT to 0 is the same as setting it to -0.98. The value of DTBT that will - ! actually be used is an integer fraction of DT, rounding down. -BT_USE_OLD_CORIOLIS_BRACKET_BUG = True ! [Boolean] default = False - ! If True, use an order of operations that is not bitwise rotationally symmetric - ! in the meridional Coriolis term of the barotropic solver. - -! === module MOM_mixed_layer_restrat === -MIXEDLAYER_RESTRAT = True ! [Boolean] default = False - ! If true, a density-gradient dependent re-stratifying flow is imposed in the - ! mixed layer. Can be used in ALE mode without restriction but in layer mode can - ! only be used if BULKMIXEDLAYER is true. -FOX_KEMPER_ML_RESTRAT_COEF = 1.0 ! [nondim] default = 0.0 - ! A nondimensional coefficient that is proportional to the ratio of the - ! deformation radius to the dominant lengthscale of the submesoscale mixed layer - ! instabilities, times the minimum of the ratio of the mesoscale eddy kinetic - ! energy to the large-scale geostrophic kinetic energy or 1 plus the square of - ! the grid spacing over the deformation radius, as detailed by Fox-Kemper et al. - ! (2010) -MLE_FRONT_LENGTH = 500.0 ! [m] default = 0.0 - ! If non-zero, is the frontal-length scale used to calculate the upscaling of - ! buoyancy gradients that is otherwise represented by the parameter - ! FOX_KEMPER_ML_RESTRAT_COEF. If MLE_FRONT_LENGTH is non-zero, it is recommended - ! to set FOX_KEMPER_ML_RESTRAT_COEF=1.0. -MLE_USE_PBL_MLD = True ! [Boolean] default = False - ! If true, the MLE parameterization will use the mixed-layer depth provided by - ! the active PBL parameterization. If false, MLE will estimate a MLD based on a - ! density difference with the surface using the parameter MLE_DENSITY_DIFF. -MLE_MLD_DECAY_TIME = 2.592E+06 ! [s] default = 0.0 - ! The time-scale for a running-mean filter applied to the mixed-layer depth used - ! in the MLE restratification parameterization. When the MLD deepens below the - ! current running-mean the running-mean is instantaneously set to the current - ! MLD. - -! === module MOM_diabatic_driver === -! The following parameters are used for diabatic processes. -ENERGETICS_SFC_PBL = True ! [Boolean] default = False - ! If true, use an implied energetics planetary boundary layer scheme to - ! determine the diffusivity and viscosity in the surface boundary layer. -EPBL_IS_ADDITIVE = False ! [Boolean] default = True - ! If true, the diffusivity from ePBL is added to all other diffusivities. - ! Otherwise, the larger of kappa-shear and ePBL diffusivities are used. - -! === module MOM_CVMix_KPP === -! This is the MOM wrapper to CVMix:KPP -! See http://cvmix.github.io/ - -! === module MOM_tidal_mixing === -! Vertical Tidal Mixing Parameterization -INT_TIDE_DISSIPATION = True ! [Boolean] default = False - ! If true, use an internal tidal dissipation scheme to drive diapycnal mixing, - ! along the lines of St. Laurent et al. (2002) and Simmons et al. (2004). -INT_TIDE_PROFILE = "POLZIN_09" ! default = "STLAURENT_02" - ! INT_TIDE_PROFILE selects the vertical profile of energy dissipation with - ! INT_TIDE_DISSIPATION. Valid values are: - ! STLAURENT_02 - Use the St. Laurent et al exponential - ! decay profile. - ! POLZIN_09 - Use the Polzin WKB-stretched algebraic - ! decay profile. -INT_TIDE_DECAY_SCALE = 300.3003003003003 ! [m] default = 500.0 - ! The decay scale away from the bottom for tidal TKE with the new coding when - ! INT_TIDE_DISSIPATION is used. -KAPPA_ITIDES = 6.28319E-04 ! [m-1] default = 6.283185307179586E-04 - ! A topographic wavenumber used with INT_TIDE_DISSIPATION. The default is 2pi/10 - ! km, as in St.Laurent et al. 2002. -KAPPA_H2_FACTOR = 0.84 ! [nondim] default = 1.0 - ! A scaling factor for the roughness amplitude with INT_TIDE_DISSIPATION. -TKE_ITIDE_MAX = 0.1 ! [W m-2] default = 1000.0 - ! The maximum internal tide energy source available to mix above the bottom - ! boundary layer with INT_TIDE_DISSIPATION. -READ_TIDEAMP = True ! [Boolean] default = False - ! If true, read a file (given by TIDEAMP_FILE) containing the tidal amplitude - ! with INT_TIDE_DISSIPATION. -TIDEAMP_FILE = "tidal_amplitude.v20140616.nc" ! default = "tideamp.nc" - ! The path to the file containing the spatially varying tidal amplitudes with - ! INT_TIDE_DISSIPATION. -H2_FILE = "ocean_topog.nc" ! - ! The path to the file containing the sub-grid-scale topographic roughness - ! amplitude with INT_TIDE_DISSIPATION. - -! === module MOM_CVMix_conv === -! Parameterization of enhanced mixing due to convection via CVMix - -! === module MOM_geothermal === -GEOTHERMAL_SCALE = 1.0 ! [W m-2 or various] default = 0.0 - ! The constant geothermal heat flux, a rescaling factor for the heat flux read - ! from GEOTHERMAL_FILE, or 0 to disable the geothermal heating. -GEOTHERMAL_FILE = "geothermal_davies2013_v1.nc" ! default = "" - ! The file from which the geothermal heating is to be read, or blank to use a - ! constant heating rate. -GEOTHERMAL_VARNAME = "geothermal_hf" ! default = "geo_heat" - ! The name of the geothermal heating variable in GEOTHERMAL_FILE. - -! === module MOM_set_diffusivity === -BBL_MIXING_AS_MAX = False ! [Boolean] default = True - ! If true, take the maximum of the diffusivity from the BBL mixing and the other - ! diffusivities. Otherwise, diffusivity from the BBL_mixing is simply added. -USE_LOTW_BBL_DIFFUSIVITY = True ! [Boolean] default = False - ! If true, uses a simple, imprecise but non-coordinate dependent, model of BBL - ! mixing diffusivity based on Law of the Wall. Otherwise, uses the original BBL - ! scheme. -SIMPLE_TKE_TO_KD = True ! [Boolean] default = False - ! If true, uses a simple estimate of Kd/TKE that will work for arbitrary - ! vertical coordinates. If false, calculates Kd/TKE and bounds based on exact - ! energetics for an isopycnal layer-formulation. - -! === module MOM_bkgnd_mixing === -! Adding static vertical background mixing coefficients -KD = 1.5E-05 ! [m2 s-1] - ! The background diapycnal diffusivity of density in the interior. Zero or the - ! molecular value, ~1e-7 m2 s-1, may be used. -KD_MIN = 2.0E-06 ! [m2 s-1] default = 1.5E-07 - ! The minimum diapycnal diffusivity. -HENYEY_IGW_BACKGROUND = True ! [Boolean] default = False - ! If true, use a latitude-dependent scaling for the near surface background - ! diffusivity, as described in Harrison & Hallberg, JPO 2008. -KD_MAX = 0.1 ! [m2 s-1] default = -1.0 - ! The maximum permitted increment for the diapycnal diffusivity from TKE-based - ! parameterizations, or a negative value for no limit. - -! === module MOM_kappa_shear === -! Parameterization of shear-driven turbulence following Jackson, Hallberg and Legg, JPO 2008 -USE_JACKSON_PARAM = True ! [Boolean] default = False - ! If true, use the Jackson-Hallberg-Legg (JPO 2008) shear mixing - ! parameterization. -MAX_RINO_IT = 25 ! [nondim] default = 50 - ! The maximum number of iterations that may be used to estimate the Richardson - ! number driven mixing. -KAPPA_SHEAR_ITER_BUG = True ! [Boolean] default = True - ! If true, use an older, dimensionally inconsistent estimate of the derivative - ! of diffusivity with energy in the Newton's method iteration. The bug causes - ! undercorrections when dz > 1 m. -KAPPA_SHEAR_ALL_LAYER_TKE_BUG = True ! [Boolean] default = True - ! If true, report back the latest estimate of TKE instead of the time average - ! TKE when there is mass in all layers. Otherwise always report the time - ! averaged TKE, as is currently done when there are some massless layers. - -! === module MOM_CVMix_shear === -! Parameterization of shear-driven turbulence via CVMix (various options) - -! === module MOM_CVMix_ddiff === -! Parameterization of mixing due to double diffusion processes via CVMix - -! === module MOM_diabatic_aux === -! The following parameters are used for auxiliary diabatic processes. -PRESSURE_DEPENDENT_FRAZIL = True ! [Boolean] default = False - ! If true, use a pressure dependent freezing temperature when making frazil. The - ! default is false, which will be faster but is inappropriate with ice-shelf - ! cavities. -VAR_PEN_SW = True ! [Boolean] default = False - ! If true, use one of the CHL_A schemes specified by OPACITY_SCHEME to determine - ! the e-folding depth of incoming short wave radiation. -CHL_FILE = "seawifs-clim-1997-2010.1440x1080.v20180328.nc" ! - ! CHL_FILE is the file containing chl_a concentrations in the variable CHL_A. It - ! is used when VAR_PEN_SW and CHL_FROM_FILE are true. -CHL_VARNAME = "chlor_a" ! default = "CHL_A" - ! Name of CHL_A variable in CHL_FILE. - -! === module MOM_energetic_PBL === -ML_OMEGA_FRAC = 0.001 ! [nondim] default = 0.0 - ! When setting the decay scale for turbulence, use this fraction of the absolute - ! rotation rate blended with the local value of f, as sqrt((1-of)*f^2 + - ! of*4*omega^2). -TKE_DECAY = 0.01 ! [nondim] default = 2.5 - ! TKE_DECAY relates the vertical rate of decay of the TKE available for - ! mechanical entrainment to the natural Ekman depth. -EPBL_MSTAR_SCHEME = "OM4" ! default = "CONSTANT" - ! EPBL_MSTAR_SCHEME selects the method for setting mstar. Valid values are: - ! CONSTANT - Use a fixed mstar given by MSTAR - ! OM4 - Use L_Ekman/L_Obukhov in the sabilizing limit, as in OM4 - ! REICHL_H18 - Use the scheme documented in Reichl & Hallberg, 2018. -MSTAR_CAP = 10.0 ! [nondim] default = -1.0 - ! If this value is positive, it sets the maximum value of mstar allowed in ePBL. - ! (This is not used if EPBL_MSTAR_SCHEME = CONSTANT). -MSTAR2_COEF1 = 0.29 ! [nondim] default = 0.3 - ! Coefficient in computing mstar when rotation and stabilizing effects are both - ! important (used if EPBL_MSTAR_SCHEME = OM4). -MSTAR2_COEF2 = 0.152 ! [nondim] default = 0.085 - ! Coefficient in computing mstar when only rotation limits the total mixing - ! (used if EPBL_MSTAR_SCHEME = OM4) -NSTAR = 0.06 ! [nondim] default = 0.2 - ! The portion of the buoyant potential energy imparted by surface fluxes that is - ! available to drive entrainment at the base of mixed layer when that energy is - ! positive. -MSTAR_CONV_ADJ = 0.667 ! [nondim] default = 0.0 - ! Coefficient used for reducing mstar during convection due to reduction of - ! stable density gradient. -USE_MLD_ITERATION = True ! [Boolean] default = False - ! A logical that specifies whether or not to use the distance to the bottom of - ! the actively turbulent boundary layer to help set the EPBL length scale. -EPBL_TRANSITION_SCALE = 0.01 ! [nondim] default = 0.1 - ! A scale for the mixing length in the transition layer at the edge of the - ! boundary layer as a fraction of the boundary layer thickness. -MIX_LEN_EXPONENT = 1.0 ! [nondim] default = 2.0 - ! The exponent applied to the ratio of the distance to the MLD and the MLD depth - ! which determines the shape of the mixing length. This is only used if - ! USE_MLD_ITERATION is True. -USE_LA_LI2016 = True ! [nondim] default = False - ! A logical to use the Li et al. 2016 (submitted) formula to determine the - ! Langmuir number. -EPBL_LANGMUIR_SCHEME = "ADDITIVE" ! default = "NONE" - ! EPBL_LANGMUIR_SCHEME selects the method for including Langmuir turbulence. - ! Valid values are: - ! NONE - Do not do any extra mixing due to Langmuir turbulence - ! RESCALE - Use a multiplicative rescaling of mstar to account for Langmuir - ! turbulence - ! ADDITIVE - Add a Langmuir turblence contribution to mstar to other - ! contributions -LT_ENHANCE_COEF = 0.044 ! [nondim] default = 0.447 - ! Coefficient for Langmuir enhancement of mstar -LT_ENHANCE_EXP = -1.5 ! [nondim] default = -1.33 - ! Exponent for Langmuir enhancementt of mstar -LT_MOD_LAC1 = 0.0 ! [nondim] default = -0.87 - ! Coefficient for modification of Langmuir number due to MLD approaching Ekman - ! depth. -LT_MOD_LAC4 = 0.0 ! [nondim] default = 0.95 - ! Coefficient for modification of Langmuir number due to ratio of Ekman to - ! stable Obukhov depth. -LT_MOD_LAC5 = 0.22 ! [nondim] default = 0.95 - ! Coefficient for modification of Langmuir number due to ratio of Ekman to - ! unstable Obukhov depth. - -! === module MOM_regularize_layers === - -! === module MOM_opacity === -PEN_SW_NBANDS = 3 ! default = 1 - ! The number of bands of penetrating shortwave radiation. - -! === module MOM_tracer_advect === -TRACER_ADVECTION_SCHEME = "PPM:H3" ! default = "PLM" - ! The horizontal transport scheme for tracers: - ! PLM - Piecewise Linear Method - ! PPM:H3 - Piecewise Parabolic Method (Huyhn 3rd order) - ! PPM - Piecewise Parabolic Method (Colella-Woodward) - -! === module MOM_tracer_hor_diff === -CHECK_DIFFUSIVE_CFL = True ! [Boolean] default = False - ! If true, use enough iterations the diffusion to ensure that the diffusive - ! equivalent of the CFL limit is not violated. If false, always use the greater - ! of 1 or MAX_TR_DIFFUSION_CFL iteration. - -! === module MOM_neutral_diffusion === -! This module implements neutral diffusion of tracers - -! === module MOM_lateral_boundary_diffusion === -! This module implements lateral diffusion of tracers near boundaries - -! === module MOM_sum_output === -MAXTRUNC = 100000 ! [truncations save_interval-1] default = 0 - ! The run will be stopped, and the day set to a very large value if the velocity - ! is truncated more than MAXTRUNC times between energy saves. Set MAXTRUNC to 0 - ! to stop if there is any truncation of velocities. -ENERGYSAVEDAYS = 0.25 ! [days] default = 1.0 - ! The interval in units of TIMEUNIT between saves of the energies of the run and - ! other globally summed diagnostics. - -! === module ocean_model_init === - -! === module MOM_surface_forcing === -MAX_P_SURF = 0.0 ! [Pa] default = -1.0 - ! The maximum surface pressure that can be exerted by the atmosphere and - ! floating sea-ice or ice shelves. This is needed because the FMS coupling - ! structure does not limit the water that can be frozen out of the ocean and the - ! ice-ocean heat fluxes are treated explicitly. No limit is applied if a - ! negative value is used. -CD_TIDES = 0.0018 ! [nondim] default = 1.0E-04 - ! The drag coefficient that applies to the tides. -GUST_CONST = 0.0 ! [Pa] default = 0.02 - ! The background gustiness in the winds. -FIX_USTAR_GUSTLESS_BUG = False ! [Boolean] default = False - ! If true correct a bug in the time-averaging of the gustless wind friction - ! velocity -USE_RIGID_SEA_ICE = True ! [Boolean] default = False - ! If true, sea-ice is rigid enough to exert a nonhydrostatic pressure that - ! resist vertical motion. -SEA_ICE_RIGID_MASS = 100.0 ! [kg m-2] default = 1000.0 - ! The mass of sea-ice per unit area at which the sea-ice starts to exhibit - ! rigidity - -! === module MOM_restart === - -! === module MOM_file_parser === diff --git a/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/1440x1080/MOM_override b/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/1440x1080/MOM_override deleted file mode 100644 index c9fc3719e..000000000 --- a/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/1440x1080/MOM_override +++ /dev/null @@ -1,20 +0,0 @@ -! Blank file in which we can put "overrides" for parameters - -LAYOUT = 40, 30 -#override DT = 450.0 -#override DT_THERM = 450. -!BAD_VAL_SST_MIN = -3.0 -!BAD_VAL_SSS_MAX = 55.0 -HFREEZE = 2.0 - -! disable checksums -RESTART_CHECKSUMS_REQUIRED = False - -!VERBOSITY = 9 -!DEBUG = True -!REPORT_UNUSED_PARAMS = True - -#override NUM_DIAG_COORDS = 1 -#override DIAG_COORDS = "z Z ZSTAR" -#override DIAG_COORD_DEF_Z = "WOA09" - diff --git a/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/1440x1080/README.md b/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/1440x1080/README.md deleted file mode 100644 index dac3e7f85..000000000 --- a/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/1440x1080/README.md +++ /dev/null @@ -1 +0,0 @@ -This configuration was adapted from: https://github.com/NOAA-GFDL/MOM6-examples/tree/dev/gfdl/ice_ocean_SIS2/OM4_025 diff --git a/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/1440x1080/data_table b/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/1440x1080/data_table deleted file mode 100644 index e69de29bb..000000000 diff --git a/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/1440x1080/diag_table b/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/1440x1080/diag_table deleted file mode 100644 index 0d48dfcbe..000000000 --- a/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/1440x1080/diag_table +++ /dev/null @@ -1,494 +0,0 @@ -"Global ALE Experiment" -1900 1 1 0 0 0 -#"scalar", 1,"days",1,"days","Time", -#"layer", 1,"days",1,"days","Time", -#"prog", 0,"days",1,"days","Time", -"prog_z", 1,"days",1,"days","Time", -#"ave_prog", 1,"days",1,"days","Time", -#"tracer", 1,"days",1,"days","Time", -#"cont", 1,"days",1,"days","Time", -##"mom", 5,"days",1,"days","Time", -##"bt_mom", 5,"days",1,"days","Time", -#"visc", 1,"days",1,"days","Time", -##"energy", 5,"days",1,"days","Time", -"forcing", 1,"days",1,"days","Time", -#"surface", 1,"months",1,"days","Time", -"sfc_ave", 1,"days",1,"days","Time", -#"ocean_static", -1,"days",1,"days","time", -# -#"cmor", 1,"days",1,"days","Time", -#"cmor2", 1,"days",1,"days","Time", -#"cmor_z", 1,"days",1,"days","Time", -#"cmor_scalar", 1,"days",1,"days","Time", -#"ocean_static_cmor", -1,"days",1,"days","time", -# -##This is the field section of the diag_table. -# -## Layer-Average Diagnostics: -##=========================== -#"ocean_model","temp_layer_ave","temp_layer_ave","layer","all",.true.,"none",2 -#"ocean_model","salt_layer_ave","salt_layer_ave","layer","all",.true.,"none",2 -# -## Prognostic Ocean fields: -##========================= -# -#"ocean_model","u","u","prog","all",.false.,"none",2 -#"ocean_model","v","v","prog","all",.false.,"none",2 -#"ocean_model","h","h","prog","all",.false.,"none",1 -#"ocean_model","e","e","prog","all",.false.,"none",2 -#"ocean_model","temp","temp","prog","all",.false.,"none",2 -#"ocean_model","salt","salt","prog","all",.false.,"none",2 -##"ocean_model","Rml","Rml","prog","all",.false.,"none",2 -# -##"ocean_model","RV","RV","prog","all",.false.,"none",2 -##"ocean_model","PV","PV","prog","all",.false.,"none",2 -##"ocean_model","e_D","e_D","prog","all",.false.,"none",2 -# -#"ocean_model","u","u","ave_prog","all",.true.,"none",2 -#"ocean_model","v","v","ave_prog","all",.true.,"none",2 -#"ocean_model","h","h","ave_prog","all",.true.,"none",1 -#"ocean_model","e","e","ave_prog","all",.true.,"none",2 -##"ocean_model","temp","temp","ave_prog","all",.true.,"none",2 -##"ocean_model","salt","salt","ave_prog","all",.true.,"none",2 -##"ocean_model","Rml","Rml","ave_prog","all",.true.,"none",2 -# -#"ocean_model","mass_wt","mass_wt","surface","all",.false.,"none",1 -#"ocean_model","opottempmint","opottempmint","surface","all",.false.,"none",1 # GFDL name: temp_int -#"ocean_model","somint","somint","surface","all",.false.,"none",1 # GFDL name: salt_int -#"ocean_model","SSH","SSH","surface","all",.false.,"none",2 -#"ocean_model","SST","SST","surface","all",.false.,"none",1 -#"ocean_model","SSS","SSS","surface","all",.false.,"none",2 -#"ocean_model","speed","speed","surface","all",.false.,"none",2 -#"ocean_model","SSU","SSU","surface","all",.false.,"none",2 -#"ocean_model","SSV","SSV","surface","all",.false.,"none",2 -# -"ocean_model","SSH","SSH","sfc_ave","all",.true.,"none",2 -"ocean_model","SST","SST","sfc_ave","all",.true.,"none",2 -"ocean_model","SSS","SSS","sfc_ave","all",.true.,"none",2 -"ocean_model","speed","speed","sfc_ave","all",.true.,"none",2 -"ocean_model","SSU","SSU","sfc_ave","all",.true.,"none",2 -"ocean_model","SSV","SSV","sfc_ave","all",.true.,"none",2 -# -# -## Z-space fields: -##================== -"ocean_model_z","u","u","prog_z","all",.true.,"none",2 -"ocean_model_z","v","v","prog_z","all",.true.,"none",2 -"ocean_model_z","temp","temp","prog_z","all",.true.,"none",2 -"ocean_model_z","temp_xyave","temp_xyave","prog_z","all",.true.,"none",2 -"ocean_model_z","salt","salt","prog_z","all",.true.,"none",2 -"ocean_model_z","thkcello","thkcello","prog_z","all",.true.,"none",2 -# -## Auxilary Tracers: -##================== -##"ocean_model","vintage","vintage","prog","all",.false.,"none",2 -##"ocean_model","agescc","agescc","prog","all",.false.,"none",2 -# -## Continuity Equation Terms: -##=========================== -##"ocean_model","dhdt","dhdt","cont","all",.true.,"none",2 -#"ocean_model","wd","wd","cont","all",.true.,"none",2 -#"ocean_model","uh","uh","cont","all",.true.,"none",2 -#"ocean_model","vh","vh","cont","all",.true.,"none",2 -##"ocean_model","uhGM","uhGM","cont","all",.true.,"none",2 -##"ocean_model","vhGM","vhGM","cont","all",.true.,"none",2 -##"ocean_model","uhbt","uhbt","cont","all",.true.,"none",2 -##"ocean_model","vhbt","vhbt","cont","all",.true.,"none",2 -#"ocean_model","h_rho","h_rho","cont","all",.true.,"none",2 -#"ocean_model","uh_rho","uh_rho","cont","all",.true.,"none",2 -#"ocean_model","vh_rho","vh_rho","cont","all",.true.,"none",2 -#"ocean_model","uhGM_rho","uhGM_rho","cont","all",.true.,"none",2 -#"ocean_model","vhGM_rho","vhGM_rho","cont","all",.true.,"none",2 -#"ocean_model","KHth_u","KHth_u","cont","all",.true.,"none",2 -#"ocean_model","KHth_v","KHth_v","cont","all",.true.,"none",2 -#"ocean_model","diftrblo","diftrblo","cont","all",.true.,"none",2 -#"ocean_model","diftrelo","difteblo","cont","all",.true.,"none",2 -#"ocean_model","KHTR_u","KHTR_u","cont","all",.true.,"none",2 -#"ocean_model","KHTR_v","KHTR_v","cont","all",.true.,"none",2 -#"ocean_model","GMwork","GMwork","cont","all",.true.,"none",2 -#"ocean_model","umo","umo","cont","all",.true.,"none",2 -#"ocean_model","vmo","vmo","cont","all",.true.,"none",2 -#"ocean_model","umo_2d","umo_2d","cont","all",.true.,"none",2 -#"ocean_model","vmo_2d","vmo_2d","cont","all",.true.,"none",2 -# -## Continuity Equation Terms In Pure Potential Density Coordiantes: -##================================================================= -##"ocean_model","h_rho","h_rho","cont","all",.true.,"none",2 -##"ocean_model","uh_rho","uh_rho","cont","all",.true.,"none",2 -##"ocean_model","vh_rho","vh_rho","cont","all",.true.,"none",2 -##"ocean_model","uhGM_rho","uhGM_rho","cont","all",.true.,"none",2 -##"ocean_model","vhGM_rho","vhGM_rho","cont","all",.true.,"none",2 -# -## -## Tracer Fluxes: -##================== -#"ocean_model","T_adx", "T_adx", "tracer","all",.true.,"none",2 -#"ocean_model","T_ady", "T_ady", "tracer","all",.true.,"none",2 -#"ocean_model","T_diffx","T_diffx","tracer","all",.true.,"none",2 -#"ocean_model","T_diffy","T_diffy","tracer","all",.true.,"none",2 -#"ocean_model","S_adx", "S_adx", "tracer","all",.true.,"none",2 -#"ocean_model","S_ady", "S_ady", "tracer","all",.true.,"none",2 -#"ocean_model","S_diffx","S_diffx","tracer","all",.true.,"none",2 -#"ocean_model","S_diffy","S_diffy","tracer","all",.true.,"none",2 -# -## T/S net tendency, lateral advection, and vertical remapping budget terms -##================== -## hfds-hfsifrazil = boundary_forcing_heat_tendency_2d -##"ocean_model","rsdoabsorb" ,"rsdoabsorb", "tracer","all",.true.,"none",2 -##"ocean_model","boundary_forcing_temp_tendency" ,"boundary_forcing_temp_tendency", "tracer","all",.true.,"none",2 -##"ocean_model","boundary_forcing_saln_tendency" ,"boundary_forcing_saln_tendency", "tracer","all",.true.,"none",2 -##"ocean_model","boundary_forcing_heat_tendency" ,"boundary_forcing_heat_tendency", "tracer","all",.true.,"none",2 -##"ocean_model","boundary_forcing_salt_tendency" ,"boundary_forcing_salt_tendency", "tracer","all",.true.,"none",2 -##"ocean_model","boundary_forcing_heat_tendency_2d" ,"boundary_forcing_heat_tendency_2d", "tracer","all",.true.,"none",2 -##"ocean_model","boundary_forcing_salt_tendency_2d" ,"boundary_forcing_salt_tendency_2d", "tracer","all",.true.,"none",2 -# -## opottemptend_2d = T_advection_xy_2d + hfds + hfgeo + opottemppmdiff_2d -## note: Th_tendency_vert_remap_2d = 0 -#"ocean_model","T_tendency" ,"T_tendency", "tracer","all",.true.,"none",2 -#"ocean_model","S_tendency" ,"S_tendency", "tracer","all",.true.,"none",2 -#"ocean_model","opottemptend" ,"opottemptend", "tracer","all",.true.,"none",2 -#"ocean_model","osalttend" ,"osalttend", "tracer","all",.true.,"none",2 -#"ocean_model","opottemptend_2d" ,"opottemptend_2d", "tracer","all",.true.,"none",2 -#"ocean_model","osalttend_2d" ,"osalttend_2d", "tracer","all",.true.,"none",2 -#"ocean_model","T_advection_xy" ,"T_advection_xy", "tracer","all",.true.,"none",2 -#"ocean_model","S_advection_xy" ,"S_advection_xy", "tracer","all",.true.,"none",2 -#"ocean_model","T_advection_xy_2d" ,"T_advection_xy_2d", "tracer","all",.true.,"none",2 -#"ocean_model","S_advection_xy_2d" ,"S_advection_xy_2d", "tracer","all",.true.,"none",2 -##"ocean_model","T_tendency_vert_remap","T_tendency_vert_remap", "tracer","all",.true.,"none",2 -##"ocean_model","S_tendency_vert_remap","S_tendency_vert_remap", "tracer","all",.true.,"none",2 -##"ocean_model","Th_tendency_vert_remap","Th_tendency_vert_remap", "tracer","all",.true.,"none",2 -##"ocean_model","Sh_tendency_vert_remap","Sh_tendency_vert_remap", "tracer","all",.true.,"none",2 -##"ocean_model","Th_tendency_vert_remap_2d","Th_tendency_vert_remap_2d", "tracer","all",.true.,"none",2 -##"ocean_model","Sh_tendency_vert_remap_2d","Sh_tendency_vert_remap_2d", "tracer","all",.true.,"none",2 -#"ocean_model","frazil_heat_tendency","frazil_heat_tendency", "tracer","all",.true.,"none",2 -#"ocean_model","frazil_heat_tendency_2d","frazil_heat_tendency_2d", "tracer","all",.true.,"none",2 -#"ocean_model","frazil_temp_tendency","frazil_temp_tendency", "tracer","all",.true.,"none",2 -# -## neutral diffusion tendencies for T and S -##================== -##"ocean_model","opottemppmdiff","opottemppmdiff", "tracer","all",.true.,"none",2 -##"ocean_model","osaltpmdiff","osaltpmdiff", "tracer","all",.true.,"none",2 -##"ocean_model","opottemppmdiff_2d","opottemppmdiff_2d", "tracer","all",.true.,"none",2 -##"ocean_model","osaltpmdiff_2d","osaltpmdiff_2d", "tracer","all",.true.,"none",2 -##"ocean_model","ndiff_tracer_conc_tendency_T","ndiff_tracer_conc_tendency_T","tracer","all",.true.,"none",2 -##"ocean_model","ndiff_tracer_conc_tendency_S","ndiff_tracer_conc_tendency_S","tracer","all",.true.,"none",2 -# -## diabatic diffusion tendencies for T and S -## note: opottempdiff_2d = 0 -##================== -##"ocean_model","opottempdiff" ,"opottempdiff", "tracer","all",.true.,"none",2 -##"ocean_model","osaltdiff" ,"osaltdiff", "tracer","all",.true.,"none",2 -##"ocean_model","opottempdiff_2d" ,"opottempdiff_2d", "tracer","all",.true.,"none",2 -##"ocean_model","osaltdiff_2d" ,"osaltdiff_2d", "tracer","all",.true.,"none",2 -##"ocean_model","diabatic_diff_temp_tendency","diabatic_diff_temp_tendency","tracer","all",.true.,"none",2 -##"ocean_model","diabatic_diff_saln_tendency","diabatic_diff_saln_tendency","tracer","all",.true.,"none",2 -# -# -# -## Momentum Balance Terms: -##======================= -##"ocean_model","dudt","dudt","mom","all",.true.,"none",2 -##"ocean_model","dvdt","dvdt","mom","all",.true.,"none",2 -##"ocean_model","CAu","CAu","mom","all",.true.,"none",2 -##"ocean_model","CAv","CAv","mom","all",.true.,"none",2 -##"ocean_model","PFu","PFu","mom","all",.true.,"none",2 -##"ocean_model","PFv","PFv","mom","all",.true.,"none",2 -##"ocean_model","du_dt_visc","du_dt_visc","mom","all",.true.,"none",2 -##"ocean_model","dv_dt_visc","dv_dt_visc","mom","all",.true.,"none",2 -##"ocean_model","diffu","diffu","mom","all",.true.,"none",2 -##"ocean_model","diffv","diffv","mom","all",.true.,"none",2 -##"ocean_model","dudt_dia","dudt_dia","mom","all",.true.,"none",2 -##"ocean_model","dvdt_dia","dvdt_dia","mom","all",.true.,"none",2 -## Subterms that should not be added to a closed budget. -##"ocean_model","gKEu","gKEu","mom","all",.true.,"none",2 -##"ocean_model","gKEv","gKEv","mom","all",.true.,"none",2 -##"ocean_model","rvxu","rvxu","mom","all",.true.,"none",2 -##"ocean_model","rvxv","rvxv","mom","all",.true.,"none",2 -##"ocean_model","PFu_bc","PFu_bc","mom","all",.true.,"none",2 -##"ocean_model","PFv_bc","PFv_bc","mom","all",.true.,"none",2 -# -## Barotropic Momentum Balance Terms: -## (only available with split time stepping.) -##=========================================== -##"ocean_model","PFuBT","PFuBT","bt_mom","all",.true.,"none",2 -##"ocean_model","PFvBT","PFvBT","bt_mom","all",.true.,"none",2 -##"ocean_model","CoruBT","CoruBT","bt_mom","all",.true.,"none",2 -##"ocean_model","CorvBT","CorvBT","bt_mom","all",.true.,"none",2 -##"ocean_model","NluBT","NluBT","bt_mom","all",.true.,"none",2 -##"ocean_model","NlvBT","NlvBT","bt_mom","all",.true.,"none",2 -##"ocean_model","ubtforce","ubtforce","bt_mom","all",.true.,"none",2 -##"ocean_model","vbtforce","vbtforce","bt_mom","all",.true.,"none",2 -##"ocean_model","u_accel_bt","u_accel_bt","bt_mom","all",.true.,"none",2 -##"ocean_model","v_accel_bt","v_accel_bt","bt_mom","all",.true.,"none",2 -## -## Viscosities and diffusivities: -##=============================== -#"ocean_model","Kd_interface","Kd_interface","visc","all",.true.,"none",2 -#"ocean_model","Kd_layer","Kd_layer","visc","all",.true.,"none",2 -#"ocean_model","Kd_effective","Kd_effective","visc","all",.true.,"none",2 -#"ocean_model","Kd_itides","Kd_itides","visc","all",.true.,"none",2 -#"ocean_model","Kd_shear","Kd_shear","visc","all",.true.,"none",2 -#"ocean_model","Kd_BBL","Kd_BBL","visc","all",.true.,"none",2 -##"ocean_model","Ahh","Ahh","visc","all",.true.,"none",2 -##"ocean_model","Ahq","Ahq","visc","all",.true.,"none",2 -##"ocean_model","Khh","Khh","visc","all",.true.,"none",2 -##"ocean_model","Khq","Khq","visc","all",.true.,"none",2 -##"ocean_model","bbl_thick_u","bbl_thick_u","visc","all",.true.,"none",2 -##"ocean_model","kv_bbl_u","kv_bbl_u","visc","all",.true.,"none",2 -##"ocean_model","bbl_thick_v","bbl_thick_v","visc","all",.true.,"none",2 -##"ocean_model","kv_bbl_v","kv_bbl_v","visc","all",.true.,"none",2 -##"ocean_model","av_visc","av_visc","visc","all",.true.,"none",2 -##"ocean_model","au_visc","au_visc","visc","all",.true.,"none",2 -##"ocean_model","FrictWork","FrictWork","visc","all",.true.,"none",2 -#"ocean_model","MLD_003","MLD_003","visc","all",.true.,"none",2 -#"ocean_model","subML_N2","subML_N2","visc","all",.true.,"none",2 -#"ocean_model","MEKE","MEKE","visc","all",.true.,"none",2 -#"ocean_model","MEKE_KH","MEKE_KH","visc","all",.true.,"none",2 -#"ocean_model","SN_u","SN_u","visc","all",.true.,"none",2 -# -## -## Kinetic Energy Balance Terms: -##============================= -##"ocean_model","KE","KE","energy","all",.true.,"none",2 -##"ocean_model","dKE_dt","dKE_dt","energy","all",.true.,"none",2 -##"ocean_model","PE_to_KE","PE_to_KE","energy","all",.true.,"none",2 -##"ocean_model","KE_Coradv","KE_Coradv","energy","all",.true.,"none",2 -##"ocean_model","KE_adv","KE_adv","energy","all",.true.,"none",2 -##"ocean_model","KE_visc","KE_visc","energy","all",.true.,"none",2 -##"ocean_model","KE_horvisc","KE_horvisc","energy","all",.true.,"none",2 -##"ocean_model","KE_dia","KE_dia","energy","all",.true.,"none",2 -# -## Surface Forcing: -##================= -#"ocean_model","taux","taux", "forcing","all",.true.,"none",2 -#"ocean_model","tauy","tauy", "forcing","all",.true.,"none",2 -#"ocean_model","ustar","ustar", "forcing","all",.true.,"none",2 -#"ocean_model","p_surf","p_surf", "forcing","all",.true.,"none",2 -## -#"ocean_model","PRCmE","PRCmE", "forcing","all",.true.,"none",1 -#"ocean_model","net_massin","net_massin", "forcing","all",.true.,"none",1 -#"ocean_model","net_massout","net_massout", "forcing","all",.true.,"none",1 -#"ocean_model","lrunoff","lrunoff", "forcing","all",.true.,"none",1 -#"ocean_model","frunoff","frunoff", "forcing","all",.true.,"none",1 -#"ocean_model","lprec","lprec", "forcing","all",.true.,"none",1 -#"ocean_model","fprec","fprec", "forcing","all",.true.,"none",1 -#"ocean_model","vprec","vprec", "forcing","all",.true.,"none",1 -#"ocean_model","evap","evap", "forcing","all",.true.,"none",1 -## -#"ocean_model","net_heat_coupler","net_heat_coupler", "forcing","all",.true.,"none",1 -#"ocean_model","net_heat_surface","net_heat_surface", "forcing","all",.true.,"none",1 -#"ocean_model","SW","SW", "forcing","all",.true.,"none",1 -#"ocean_model","LW","LW", "forcing","all",.true.,"none",1 -#"ocean_model","LwLatSens","LwLatSens", "forcing","all",.true.,"none",1 -#"ocean_model","salt_flux","salt_flux", "forcing","all",.true.,"none",1 -#"ocean_model","Heat_PmE","Heat_PmE", "forcing","all",.true.,"none",1 -"ocean_model","frazil","frazil", "forcing","all",.true.,"none",1 -#"ocean_model","internal_heat","internal_heat", "forcing","all",.true.,"none",1 -#"ocean_model","heat_added","heat_added", "forcing","all",.true.,"none",1 -## -#"ocean_model","heat_content_cond","heat_content_cond", "forcing","all",.true.,"none",1 -#"ocean_model","heat_content_lprec","heat_content_lprec", "forcing","all",.true.,"none",1 -#"ocean_model","heat_content_fprec","heat_content_fprec", "forcing","all",.true.,"none",1 -#"ocean_model","heat_content_vprec","heat_content_vprec", "forcing","all",.true.,"none",1 -#"ocean_model","heat_content_lrunoff","heat_content_lrunoff", "forcing","all",.true.,"none",1 -#"ocean_model","heat_content_frunoff","heat_content_frunoff", "forcing","all",.true.,"none",1 -#"ocean_model","heat_content_surfwater","heat_content_surfwater","forcing","all",.true.,"none",1 -#"ocean_model","heat_content_massout","heat_content_massout", "forcing","all",.true.,"none",1 -#"ocean_model","heat_content_massin","heat_content_massin", "forcing","all",.true.,"none",1 -## -#"ocean_model","total_prcme","total_prcme", "forcing","all",.true.,"none",2 -#"ocean_model","total_evap","total_evap", "forcing","all",.true.,"none",2 -#"ocean_model","total_lprec","total_lprec", "forcing","all",.true.,"none",2 -#"ocean_model","total_fprec","total_fprec", "forcing","all",.true.,"none",2 -#"ocean_model","total_vprec","total_vprec", "forcing","all",.true.,"none",2 -#"ocean_model","total_precip","total_precip", "forcing","all",.true.,"none",2 -#"ocean_model","total_lrunoff","total_lrunoff", "forcing","all",.true.,"none",2 -#"ocean_model","total_frunoff","total_frunoff", "forcing","all",.true.,"none",2 -#"ocean_model","total_net_massin","total_net_massin" , "forcing","all",.true.,"none",2 -#"ocean_model","total_net_massout","total_net_massout", "forcing","all",.true.,"none",2 -## -#"ocean_model","total_heat_content_frunoff" ,"total_heat_content_frunoff", "forcing","all",.true.,"none",2 -#"ocean_model","total_heat_content_lrunoff" ,"total_heat_content_lrunoff", "forcing","all",.true.,"none",2 -#"ocean_model","total_heat_content_lprec" ,"total_heat_content_lprec", "forcing","all",.true.,"none",2 -#"ocean_model","total_heat_content_fprec" ,"total_heat_content_fprec", "forcing","all",.true.,"none",2 -#"ocean_model","total_heat_content_vprec" ,"total_heat_content_vprec", "forcing","all",.true.,"none",2 -#"ocean_model","total_heat_content_cond" ,"total_heat_content_cond", "forcing","all",.true.,"none",2 -#"ocean_model","total_heat_content_surfwater" ,"total_heat_content_surfwater", "forcing","all",.true.,"none",2 -#"ocean_model","total_heat_content_massin" ,"total_heat_content_massin", "forcing","all",.true.,"none",2 -#"ocean_model","total_heat_content_massout" ,"total_heat_content_massout", "forcing","all",.true.,"none",2 -#"ocean_model","total_net_heat_coupler" ,"total_net_heat_coupler", "forcing","all",.true.,"none",2 -#"ocean_model","total_net_heat_surface" ,"total_net_heat_surface", "forcing","all",.true.,"none",2 -#"ocean_model","total_sw" ,"total_sw", "forcing","all",.true.,"none",2 -#"ocean_model","total_LwLatSens" ,"total_LwLatSens", "forcing","all",.true.,"none",2 -#"ocean_model","total_lw" ,"total_lw", "forcing","all",.true.,"none",2 -#"ocean_model","total_lat" ,"total_lat", "forcing","all",.true.,"none",2 -#"ocean_model","total_lat_evap" ,"total_lat_evap", "forcing","all",.true.,"none",2 -#"ocean_model","total_lat_fprec" ,"total_lat_fprec", "forcing","all",.true.,"none",2 -#"ocean_model","total_lat_frunoff" ,"total_lat_frunoff", "forcing","all",.true.,"none",2 -#"ocean_model","total_sens" ,"total_sens", "forcing","all",.true.,"none",2 -##"ocean_model","total_heat_added" ,"total_heat_added", "forcing","all",.true.,"none",2 -#"ocean_model","total_salt_flux" ,"total_salt_flux", "forcing","all",.true.,"none",2 -#"ocean_model","total_salt_flux_in" ,"total_salt_flux_in", "forcing","all",.true.,"none",2 -##"ocean_model","total_salt_flux_added" ,"total_salt_flux_added", "forcing","all",.true.,"none",2 -## -## -# "ocean_model", "hfgeou", "hfgeou", "cmor2", "all", "none", "none",2 # geothermal heat flux -# "ocean_model", "hfrainds", "hfrainds", "cmor2", "all", "mean", "none",2 -# "ocean_model", "hfevapds", "hfevapds", "cmor2", "all", "mean", "none",2 -# "ocean_model", "hfrunoffds", "hfrunoffds", "cmor2", "all", "mean", "none",2 -# "ocean_model", "hfsnthermds", "hfsnthermds", "cmor2", "all", "mean", "none",2 -# "ocean_model", "hfsifrazil", "hfsifrazil", "cmor2", "all", "mean", "none",2 -##"ocean_model", "hfsithermds", "hfsithermds", "cmor2", "all", "mean", "none",2 # computed in SIS2 -# "ocean_model", "hfibthermds", "hfibthermds", "cmor2", "all", "mean", "none",2 -##"ocean_model", "hfsolidrunoffds", "hfsolidrunoffds", "cmor2", "all", "mean", "none",2 # =0 if ice = 0C -# "ocean_model", "rlntds", "rlntds", "cmor2", "all", "mean", "none",2 -# "ocean_model", "hflso", "hflso", "cmor2", "all", "mean", "none",2 -# "ocean_model", "hfsso", "hfsso", "cmor2", "all", "mean", "none",2 -# "ocean_model", "rsntds", "rsntds" "cmor2", "all", "mean", "none",2 -##"ocean_model", "rsdoabsorb", "rsdoabsorb" "cmor2", "all", "mean", "none",2 -##"ocean_model", "rsdo", "rsdo" "cmor2", "all", "mean", "none",2 -# "ocean_model", "hfds", "hfds" "cmor2", "all", "mean", "none",2 -## -## -## Fields for CMIP6 (CMOR Names): -##======================================= -#"ocean_model","pso","pso" ,"cmor","all",.true.,"none",2 # GFDL Name: p_surf -#"ocean_model","tauuo","tauuo" ,"cmor","all",.true.,"none",2 # surface i-stress -#"ocean_model","tauvo","tauvo" ,"cmor","all",.true.,"none",2 # surface j-stress -#"ocean_model","wfo","wfo" ,"cmor","all",.true.,"none",2 # GFDL Name: PRCmE -#"ocean_model","rsntds","rsntds" ,"cmor","all",.true.,"none",2 # GFDL Name: SW -#"ocean_model","rlntds","rlntds" ,"cmor","all",.true.,"none",2 # GFDL Name: SW -#"ocean_model","hfibthermds","hfibthermds" ,"cmor","all",.true.,"none",2 # GFDL Name: heat_content_frunoff -#"ocean_model","hfrunoffds","hfrunoffds" ,"cmor","all",.true.,"none",2 # GFDL Name: runoff_heat_content -#"ocean_model","hfsifrazil","hfsifrazil" ,"cmor","all",.true.,"none",2 # GFDL Name: frazil -#"ocean_model","evs","evs" ,"cmor","all",.true.,"none",2 # GFDL Name: evap -#"ocean_model","prlq","prlq" ,"cmor","all",.true.,"none",2 # GFDL Name: fprec -#"ocean_model","prsn","prsn" ,"cmor","all",.true.,"none",2 # GFDL Name: fprec -#"ocean_model","hflso","hflso" ,"cmor","all",.true.,"none",2 # GFDL Name: latent -#"ocean_model","friver","friver" ,"cmor","all",.true.,"none",2 # GFDL Name: lrunoff -##"ocean_model","rlds","rlds" ,"cmor","all",.true.,"none",2 # GFDL Name: LW -##"ocean_model","hfss","hfss" ,"cmor","all",.true.,"none",2 # GFDL Name: sensible -#"ocean_model","hfds","hfds" ,"cmor","all",.true.,"none",2 # GFDL Name: net_heat_surface -#"ocean_model","sfdsi","sfdsi" ,"cmor","all",.true.,"none",2 # GFDL Name: salt_flux -#"ocean_model","uo","uo" ,"cmor","all",.true.,"none",2 # GFDL Name: u -#"ocean_model","vo","vo" ,"cmor","all",.true.,"none",2 # GFDL Name: v -#"ocean_model","so","so" ,"cmor","all",.true.,"none",2 # GFDL Name: salinity -#"ocean_model","masscello","masscello" ,"cmor","all",.true.,"none",2 # mass of ocean cells -#"ocean_model","pbo","pbo" ,"cmor","all",.true.,"none",2 # GFDL Name: n/a -#"ocean_model","mlotst","mlotst" ,"cmor","all",.true.,"none",2 # GFDL Name: MLD_003 -#"ocean_model","mlotstsq","mlotstsq" ,"cmor","all",.true.,"none",2 # GFDL Name: n/a -#"ocean_model","zos","zos" ,"cmor","all",.true.,"none",2 # dynamic sealevel -#"ocean_model","zossq","zossq" ,"cmor","all",.true.,"none",2 # squared zos -#"ocean_model","hfgeou","hfgeou" ,"cmor","all",.false.,"none",2 # GFDL name: geo_heat -#"ocean_model","thkcello","thkcello" ,"cmor","all",.true.,"none",2 # GFDL name: h if Bouss -#"ocean_model","opottempmint","opottempmint" ,"cmor","all",.true.,"none",2 # GFDL name: temp_int -#"ocean_model","somint","somint" ,"cmor","all",.true.,"none",2 # GFDL name: salt_int -#"ocean_model","obvfsq","obvfsq" ,"cmor","all",.true.,"none",2 # GFDL name: N2 -#"ocean_model","difvho","difvho" ,"cmor","all",.true.,"none",2 # GFDL name: N2 -#"ocean_model","difvso","difvso" ,"cmor","all",.true.,"none",2 # GFDL name: N2 -#"ocean_model","difmxylo","difmxylo" ,"cmor","all",.true.,"none",2 # GFDL name: N2 -#"ocean_model","difmxybo","difmxybo" ,"cmor","all",.true.,"none",2 # GFDL name: N2 -#"ocean_model","dispkexyfo","dispkexyfo" ,"cmor","all",.true.,"none",2 # GFDL name: N2 -## -## -## Z-Space Fields Provided for CMIP6 (CMOR Names): -##=============================================== -#"ocean_model_z","uo", "uo", "cmor_z","all",.true.,"none",2 #GFDL Name: u_z -#"ocean_model_z","vo", "vo", "cmor_z","all",.true.,"none",2 #GFDL Name: v_z -#"ocean_model_z","so", "so", "cmor_z","all",.true.,"none",2 #GFDL Name: salt_z -#"ocean_model_z","thetao","thetao","cmor_z","all",.true.,"none",2 #GFDL Name: temp_z -#"ocean_model_z","umo", "umo", "cmor_z","all",.true.,"none",2 #GFDL Name: uh_z -#"ocean_model_z","vmo", "vmo", "cmor_z","all",.true.,"none",2 #GFDL Name: vh_z -## -## Scalar ocean fields for CMIP6 (CMOR Names): -##===================== -#"ocean_model", "masso", "masso", "cmor_scalar", "all", .true., "none",2 # global mean masscello -#"ocean_model", "thetaoga", "thetaoga", "cmor_scalar", "all", .true., "none",2 # global mean theta -#"ocean_model", "soga", "soga", "cmor_scalar", "all", .true., "none",2 # global mean saln -#"ocean_model", "tosga", "tosga", "cmor_scalar", "all", .true., "none",2 # area mean SST -#"ocean_model", "sosga", "sosga", "cmor_scalar", "all", .true., "none",2 # area mean SSS -#"ocean_model", "volo", "volo", "cmor_scalar", "all", .true., "none",2 # ocean volume -# -## Scalar fields for run-time monitoring: -##======================================= -#"ocean_model", "masso", "masso", "scalar", "all", .true., "none",2 # global mean masscello -#"ocean_model", "thetaoga", "thetaoga", "scalar", "all", .true., "none",2 # global mean theta -#"ocean_model", "soga", "soga", "scalar", "all", .true., "none",2 # global mean salinity -#"ocean_model", "tosga", "tosga", "scalar", "all", .true., "none",2 # area mean SST -#"ocean_model", "sosga", "sosga", "scalar", "all", .true., "none",2 # area mean SSS -#"ocean_model", "volo", "volo", "scalar", "all", .true., "none",2 # ocean volume -#"ocean_model", "ssh_ga", "ssh_ga", "scalar", "all", .true., "none",2 # global mean ssh -#"ocean_model", "prcme_ga", "prcme_ga", "scalar", "all", .true., "none",2 # global mean prcme -#"ocean_model", "precip_ga", "precip_ga", "scalar", "all", .true., "none",2 # global mean precip -#"ocean_model", "evap_ga", "evap_ga", "scalar", "all", .true., "none",2 # global mean evaporation -#"ocean_model", "net_heat_coupler_ga", "net_heat_coupler_ga", "scalar", "all", .true., "none",2 # global mean net heat coupler -#"ocean_model", "net_heat_surface_ga", "net_heat_surface_ga", "scalar", "all", .true., "none",2 # global mean net heat surface -#"ocean_model", "sens_ga", "sens_ga", "scalar", "all", .true., "none",2 # global mean sensible heat -#"ocean_model", "LwLatSens_ga", "LwLatSens_ga", "scalar", "all", .true., "none",2 # global mean LW + latent + sensible -#"ocean_model", "sw_ga", "sw_ga", "scalar", "all", .true., "none",2 # global mean SW -#"ocean_model", "lw_ga", "lw_ga", "scalar", "all", .true., "none",2 # global mean LW -#"ocean_model", "lat_ga", "lat_ga", "scalar", "all", .true., "none",2 # global mean latent -# -## Static ocean fields: -##===================== -#"ocean_model", "geolon", "geolon", "ocean_static", "all", .false., "none", 1 -#"ocean_model", "geolat", "geolat", "ocean_static", "all", .false., "none", 1 -#"ocean_model", "geolon_c", "geolon_c", "ocean_static", "all", .false., "none", 2 -#"ocean_model", "geolat_c", "geolat_c", "ocean_static", "all", .false., "none", 2 -#"ocean_model", "geolon_u", "geolon_u", "ocean_static", "all", .false., "none", 2 -#"ocean_model", "geolat_u", "geolat_u", "ocean_static", "all", .false., "none", 2 -#"ocean_model", "geolon_v", "geolon_v", "ocean_static", "all", .false., "none", 2 -#"ocean_model", "geolat_v", "geolat_v", "ocean_static", "all", .false., "none", 2 -#"ocean_model", "area_t", "area_t", "ocean_static", "all", .false., "none", 1 -#"ocean_model", "depth_ocean", "depth_ocean", "ocean_static", "all", .false., "none", 2 -#"ocean_model", "wet", "wet", "ocean_static", "all", .false., "none", 1 -#"ocean_model", "wet_c", "wet_c", "ocean_static", "all", .false., "none", 2 -#"ocean_model", "wet_u", "wet_u", "ocean_static", "all", .false., "none", 2 -#"ocean_model", "wet_v", "wet_v", "ocean_static", "all", .false., "none", 2 -#"ocean_model", "Coriolis", "Coriolis", "ocean_static", "all", .false., "none", 2 -#"ocean_model", "dxt", "dxt", "ocean_static", "all", .false., "none", 2 -#"ocean_model", "dyt", "dyt", "ocean_static", "all", .false., "none", 2 -#"ocean_model", "dxCu", "dxCu", "ocean_static", "all", .false., "none", 2 -#"ocean_model", "dyCu", "dyCu", "ocean_static", "all", .false., "none", 2 -#"ocean_model", "dxCv", "dxCv", "ocean_static", "all", .false., "none", 2 -#"ocean_model", "dyCv", "dyCv", "ocean_static", "all", .false., "none", 2 - -# -## Static ocean fields: -##===================== -#"ocean_model", "areacello", "areacello", "ocean_static_cmor", "all", .false., "none", 2 - -#============================================================================================= -# -#====> This file can be used with diag_manager/v2.0a (or higher) <==== -# -# -# FORMATS FOR FILE ENTRIES (not all input values are used) -# ------------------------ -# -#"file_name", output_freq, "output_units", format, "time_units", "time_long_name", ... -# (opt) new_file_frequecy, (opt) "new_file_freq_units", "new_file_start_date" -# -# -#output_freq: > 0 output frequency in "output_units" -# = 0 output frequency every time step -# =-1 output frequency at end of run -# -#output_units = units used for output frequency -# (years, months, days, minutes, hours, seconds) -# -#time_units = units used to label the time axis -# (days, minutes, hours, seconds) -# -# -# FORMAT FOR FIELD ENTRIES (not all input values are used) -# ------------------------ -# -#"module_name", "field_name", "output_name", "file_name" "time_sampling", time_avg, "other_opts", packing -# -#time_avg = .true. or .false. -# -#packing = 1 double precision -# = 2 float -# = 4 packed 16-bit integers -# = 8 packed 1-byte (not tested?) diff --git a/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/1440x1080/g5aodas_diag_table b/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/1440x1080/g5aodas_diag_table deleted file mode 100644 index a08cc7ed4..000000000 --- a/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/1440x1080/g5aodas_diag_table +++ /dev/null @@ -1,494 +0,0 @@ -"Global ALE Experiment" -1900 1 1 0 0 0 -#"scalar", 1,"days",1,"days","Time", -#"layer", 1,"days",1,"days","Time", -#"prog", 0,"days",1,"days","Time", -"prog_z", 2,"hours",1,"days","Time", -#"ave_prog", 1,"days",1,"days","Time", -#"tracer", 1,"days",1,"days","Time", -#"cont", 1,"days",1,"days","Time", -##"mom", 5,"days",1,"days","Time", -##"bt_mom", 5,"days",1,"days","Time", -#"visc", 1,"days",1,"days","Time", -##"energy", 5,"days",1,"days","Time", -"forcing", 2,"hours",1,"days","Time", -#"surface", 1,"months",1,"days","Time", -"sfc_ave", 2,"hours",1,"days","Time", -#"ocean_static", -1,"days",1,"days","time", -# -#"cmor", 1,"days",1,"days","Time", -#"cmor2", 1,"days",1,"days","Time", -#"cmor_z", 1,"days",1,"days","Time", -#"cmor_scalar", 1,"days",1,"days","Time", -#"ocean_static_cmor", -1,"days",1,"days","time", -# -##This is the field section of the diag_table. -# -## Layer-Average Diagnostics: -##=========================== -#"ocean_model","temp_layer_ave","temp_layer_ave","layer","all",.true.,"none",2 -#"ocean_model","salt_layer_ave","salt_layer_ave","layer","all",.true.,"none",2 -# -## Prognostic Ocean fields: -##========================= -# -#"ocean_model","u","u","prog","all",.false.,"none",2 -#"ocean_model","v","v","prog","all",.false.,"none",2 -#"ocean_model","h","h","prog","all",.false.,"none",1 -#"ocean_model","e","e","prog","all",.false.,"none",2 -#"ocean_model","temp","temp","prog","all",.false.,"none",2 -#"ocean_model","salt","salt","prog","all",.false.,"none",2 -##"ocean_model","Rml","Rml","prog","all",.false.,"none",2 -# -##"ocean_model","RV","RV","prog","all",.false.,"none",2 -##"ocean_model","PV","PV","prog","all",.false.,"none",2 -##"ocean_model","e_D","e_D","prog","all",.false.,"none",2 -# -#"ocean_model","u","u","ave_prog","all",.true.,"none",2 -#"ocean_model","v","v","ave_prog","all",.true.,"none",2 -#"ocean_model","h","h","ave_prog","all",.true.,"none",1 -#"ocean_model","e","e","ave_prog","all",.true.,"none",2 -##"ocean_model","temp","temp","ave_prog","all",.true.,"none",2 -##"ocean_model","salt","salt","ave_prog","all",.true.,"none",2 -##"ocean_model","Rml","Rml","ave_prog","all",.true.,"none",2 -# -#"ocean_model","mass_wt","mass_wt","surface","all",.false.,"none",1 -#"ocean_model","opottempmint","opottempmint","surface","all",.false.,"none",1 # GFDL name: temp_int -#"ocean_model","somint","somint","surface","all",.false.,"none",1 # GFDL name: salt_int -#"ocean_model","SSH","SSH","surface","all",.false.,"none",2 -#"ocean_model","SST","SST","surface","all",.false.,"none",1 -#"ocean_model","SSS","SSS","surface","all",.false.,"none",2 -#"ocean_model","speed","speed","surface","all",.false.,"none",2 -#"ocean_model","SSU","SSU","surface","all",.false.,"none",2 -#"ocean_model","SSV","SSV","surface","all",.false.,"none",2 -# -"ocean_model","SSH","SSH","sfc_ave","all",.true.,"none",2 -"ocean_model","SST","SST","sfc_ave","all",.true.,"none",2 -"ocean_model","SSS","SSS","sfc_ave","all",.true.,"none",2 -"ocean_model","speed","speed","sfc_ave","all",.true.,"none",2 -"ocean_model","SSU","SSU","sfc_ave","all",.true.,"none",2 -"ocean_model","SSV","SSV","sfc_ave","all",.true.,"none",2 -# -# -## Z-space fields: -##================== -"ocean_model_z","u","u","prog_z","all",.true.,"none",2 -"ocean_model_z","v","v","prog_z","all",.true.,"none",2 -"ocean_model_z","temp","temp","prog_z","all",.true.,"none",2 -"ocean_model_z","temp_xyave","temp_xyave","prog_z","all",.true.,"none",2 -"ocean_model_z","salt","salt","prog_z","all",.true.,"none",2 -"ocean_model_z","thkcello","thkcello","prog_z","all",.true.,"none",2 -# -## Auxilary Tracers: -##================== -##"ocean_model","vintage","vintage","prog","all",.false.,"none",2 -##"ocean_model","agescc","agescc","prog","all",.false.,"none",2 -# -## Continuity Equation Terms: -##=========================== -##"ocean_model","dhdt","dhdt","cont","all",.true.,"none",2 -#"ocean_model","wd","wd","cont","all",.true.,"none",2 -#"ocean_model","uh","uh","cont","all",.true.,"none",2 -#"ocean_model","vh","vh","cont","all",.true.,"none",2 -##"ocean_model","uhGM","uhGM","cont","all",.true.,"none",2 -##"ocean_model","vhGM","vhGM","cont","all",.true.,"none",2 -##"ocean_model","uhbt","uhbt","cont","all",.true.,"none",2 -##"ocean_model","vhbt","vhbt","cont","all",.true.,"none",2 -#"ocean_model","h_rho","h_rho","cont","all",.true.,"none",2 -#"ocean_model","uh_rho","uh_rho","cont","all",.true.,"none",2 -#"ocean_model","vh_rho","vh_rho","cont","all",.true.,"none",2 -#"ocean_model","uhGM_rho","uhGM_rho","cont","all",.true.,"none",2 -#"ocean_model","vhGM_rho","vhGM_rho","cont","all",.true.,"none",2 -#"ocean_model","KHth_u","KHth_u","cont","all",.true.,"none",2 -#"ocean_model","KHth_v","KHth_v","cont","all",.true.,"none",2 -#"ocean_model","diftrblo","diftrblo","cont","all",.true.,"none",2 -#"ocean_model","diftrelo","difteblo","cont","all",.true.,"none",2 -#"ocean_model","KHTR_u","KHTR_u","cont","all",.true.,"none",2 -#"ocean_model","KHTR_v","KHTR_v","cont","all",.true.,"none",2 -#"ocean_model","GMwork","GMwork","cont","all",.true.,"none",2 -#"ocean_model","umo","umo","cont","all",.true.,"none",2 -#"ocean_model","vmo","vmo","cont","all",.true.,"none",2 -#"ocean_model","umo_2d","umo_2d","cont","all",.true.,"none",2 -#"ocean_model","vmo_2d","vmo_2d","cont","all",.true.,"none",2 -# -## Continuity Equation Terms In Pure Potential Density Coordiantes: -##================================================================= -##"ocean_model","h_rho","h_rho","cont","all",.true.,"none",2 -##"ocean_model","uh_rho","uh_rho","cont","all",.true.,"none",2 -##"ocean_model","vh_rho","vh_rho","cont","all",.true.,"none",2 -##"ocean_model","uhGM_rho","uhGM_rho","cont","all",.true.,"none",2 -##"ocean_model","vhGM_rho","vhGM_rho","cont","all",.true.,"none",2 -# -## -## Tracer Fluxes: -##================== -#"ocean_model","T_adx", "T_adx", "tracer","all",.true.,"none",2 -#"ocean_model","T_ady", "T_ady", "tracer","all",.true.,"none",2 -#"ocean_model","T_diffx","T_diffx","tracer","all",.true.,"none",2 -#"ocean_model","T_diffy","T_diffy","tracer","all",.true.,"none",2 -#"ocean_model","S_adx", "S_adx", "tracer","all",.true.,"none",2 -#"ocean_model","S_ady", "S_ady", "tracer","all",.true.,"none",2 -#"ocean_model","S_diffx","S_diffx","tracer","all",.true.,"none",2 -#"ocean_model","S_diffy","S_diffy","tracer","all",.true.,"none",2 -# -## T/S net tendency, lateral advection, and vertical remapping budget terms -##================== -## hfds-hfsifrazil = boundary_forcing_heat_tendency_2d -##"ocean_model","rsdoabsorb" ,"rsdoabsorb", "tracer","all",.true.,"none",2 -##"ocean_model","boundary_forcing_temp_tendency" ,"boundary_forcing_temp_tendency", "tracer","all",.true.,"none",2 -##"ocean_model","boundary_forcing_saln_tendency" ,"boundary_forcing_saln_tendency", "tracer","all",.true.,"none",2 -##"ocean_model","boundary_forcing_heat_tendency" ,"boundary_forcing_heat_tendency", "tracer","all",.true.,"none",2 -##"ocean_model","boundary_forcing_salt_tendency" ,"boundary_forcing_salt_tendency", "tracer","all",.true.,"none",2 -##"ocean_model","boundary_forcing_heat_tendency_2d" ,"boundary_forcing_heat_tendency_2d", "tracer","all",.true.,"none",2 -##"ocean_model","boundary_forcing_salt_tendency_2d" ,"boundary_forcing_salt_tendency_2d", "tracer","all",.true.,"none",2 -# -## opottemptend_2d = T_advection_xy_2d + hfds + hfgeo + opottemppmdiff_2d -## note: Th_tendency_vert_remap_2d = 0 -#"ocean_model","T_tendency" ,"T_tendency", "tracer","all",.true.,"none",2 -#"ocean_model","S_tendency" ,"S_tendency", "tracer","all",.true.,"none",2 -#"ocean_model","opottemptend" ,"opottemptend", "tracer","all",.true.,"none",2 -#"ocean_model","osalttend" ,"osalttend", "tracer","all",.true.,"none",2 -#"ocean_model","opottemptend_2d" ,"opottemptend_2d", "tracer","all",.true.,"none",2 -#"ocean_model","osalttend_2d" ,"osalttend_2d", "tracer","all",.true.,"none",2 -#"ocean_model","T_advection_xy" ,"T_advection_xy", "tracer","all",.true.,"none",2 -#"ocean_model","S_advection_xy" ,"S_advection_xy", "tracer","all",.true.,"none",2 -#"ocean_model","T_advection_xy_2d" ,"T_advection_xy_2d", "tracer","all",.true.,"none",2 -#"ocean_model","S_advection_xy_2d" ,"S_advection_xy_2d", "tracer","all",.true.,"none",2 -##"ocean_model","T_tendency_vert_remap","T_tendency_vert_remap", "tracer","all",.true.,"none",2 -##"ocean_model","S_tendency_vert_remap","S_tendency_vert_remap", "tracer","all",.true.,"none",2 -##"ocean_model","Th_tendency_vert_remap","Th_tendency_vert_remap", "tracer","all",.true.,"none",2 -##"ocean_model","Sh_tendency_vert_remap","Sh_tendency_vert_remap", "tracer","all",.true.,"none",2 -##"ocean_model","Th_tendency_vert_remap_2d","Th_tendency_vert_remap_2d", "tracer","all",.true.,"none",2 -##"ocean_model","Sh_tendency_vert_remap_2d","Sh_tendency_vert_remap_2d", "tracer","all",.true.,"none",2 -#"ocean_model","frazil_heat_tendency","frazil_heat_tendency", "tracer","all",.true.,"none",2 -#"ocean_model","frazil_heat_tendency_2d","frazil_heat_tendency_2d", "tracer","all",.true.,"none",2 -#"ocean_model","frazil_temp_tendency","frazil_temp_tendency", "tracer","all",.true.,"none",2 -# -## neutral diffusion tendencies for T and S -##================== -##"ocean_model","opottemppmdiff","opottemppmdiff", "tracer","all",.true.,"none",2 -##"ocean_model","osaltpmdiff","osaltpmdiff", "tracer","all",.true.,"none",2 -##"ocean_model","opottemppmdiff_2d","opottemppmdiff_2d", "tracer","all",.true.,"none",2 -##"ocean_model","osaltpmdiff_2d","osaltpmdiff_2d", "tracer","all",.true.,"none",2 -##"ocean_model","ndiff_tracer_conc_tendency_T","ndiff_tracer_conc_tendency_T","tracer","all",.true.,"none",2 -##"ocean_model","ndiff_tracer_conc_tendency_S","ndiff_tracer_conc_tendency_S","tracer","all",.true.,"none",2 -# -## diabatic diffusion tendencies for T and S -## note: opottempdiff_2d = 0 -##================== -##"ocean_model","opottempdiff" ,"opottempdiff", "tracer","all",.true.,"none",2 -##"ocean_model","osaltdiff" ,"osaltdiff", "tracer","all",.true.,"none",2 -##"ocean_model","opottempdiff_2d" ,"opottempdiff_2d", "tracer","all",.true.,"none",2 -##"ocean_model","osaltdiff_2d" ,"osaltdiff_2d", "tracer","all",.true.,"none",2 -##"ocean_model","diabatic_diff_temp_tendency","diabatic_diff_temp_tendency","tracer","all",.true.,"none",2 -##"ocean_model","diabatic_diff_saln_tendency","diabatic_diff_saln_tendency","tracer","all",.true.,"none",2 -# -# -# -## Momentum Balance Terms: -##======================= -##"ocean_model","dudt","dudt","mom","all",.true.,"none",2 -##"ocean_model","dvdt","dvdt","mom","all",.true.,"none",2 -##"ocean_model","CAu","CAu","mom","all",.true.,"none",2 -##"ocean_model","CAv","CAv","mom","all",.true.,"none",2 -##"ocean_model","PFu","PFu","mom","all",.true.,"none",2 -##"ocean_model","PFv","PFv","mom","all",.true.,"none",2 -##"ocean_model","du_dt_visc","du_dt_visc","mom","all",.true.,"none",2 -##"ocean_model","dv_dt_visc","dv_dt_visc","mom","all",.true.,"none",2 -##"ocean_model","diffu","diffu","mom","all",.true.,"none",2 -##"ocean_model","diffv","diffv","mom","all",.true.,"none",2 -##"ocean_model","dudt_dia","dudt_dia","mom","all",.true.,"none",2 -##"ocean_model","dvdt_dia","dvdt_dia","mom","all",.true.,"none",2 -## Subterms that should not be added to a closed budget. -##"ocean_model","gKEu","gKEu","mom","all",.true.,"none",2 -##"ocean_model","gKEv","gKEv","mom","all",.true.,"none",2 -##"ocean_model","rvxu","rvxu","mom","all",.true.,"none",2 -##"ocean_model","rvxv","rvxv","mom","all",.true.,"none",2 -##"ocean_model","PFu_bc","PFu_bc","mom","all",.true.,"none",2 -##"ocean_model","PFv_bc","PFv_bc","mom","all",.true.,"none",2 -# -## Barotropic Momentum Balance Terms: -## (only available with split time stepping.) -##=========================================== -##"ocean_model","PFuBT","PFuBT","bt_mom","all",.true.,"none",2 -##"ocean_model","PFvBT","PFvBT","bt_mom","all",.true.,"none",2 -##"ocean_model","CoruBT","CoruBT","bt_mom","all",.true.,"none",2 -##"ocean_model","CorvBT","CorvBT","bt_mom","all",.true.,"none",2 -##"ocean_model","NluBT","NluBT","bt_mom","all",.true.,"none",2 -##"ocean_model","NlvBT","NlvBT","bt_mom","all",.true.,"none",2 -##"ocean_model","ubtforce","ubtforce","bt_mom","all",.true.,"none",2 -##"ocean_model","vbtforce","vbtforce","bt_mom","all",.true.,"none",2 -##"ocean_model","u_accel_bt","u_accel_bt","bt_mom","all",.true.,"none",2 -##"ocean_model","v_accel_bt","v_accel_bt","bt_mom","all",.true.,"none",2 -## -## Viscosities and diffusivities: -##=============================== -#"ocean_model","Kd_interface","Kd_interface","visc","all",.true.,"none",2 -#"ocean_model","Kd_layer","Kd_layer","visc","all",.true.,"none",2 -#"ocean_model","Kd_effective","Kd_effective","visc","all",.true.,"none",2 -#"ocean_model","Kd_itides","Kd_itides","visc","all",.true.,"none",2 -#"ocean_model","Kd_shear","Kd_shear","visc","all",.true.,"none",2 -#"ocean_model","Kd_BBL","Kd_BBL","visc","all",.true.,"none",2 -##"ocean_model","Ahh","Ahh","visc","all",.true.,"none",2 -##"ocean_model","Ahq","Ahq","visc","all",.true.,"none",2 -##"ocean_model","Khh","Khh","visc","all",.true.,"none",2 -##"ocean_model","Khq","Khq","visc","all",.true.,"none",2 -##"ocean_model","bbl_thick_u","bbl_thick_u","visc","all",.true.,"none",2 -##"ocean_model","kv_bbl_u","kv_bbl_u","visc","all",.true.,"none",2 -##"ocean_model","bbl_thick_v","bbl_thick_v","visc","all",.true.,"none",2 -##"ocean_model","kv_bbl_v","kv_bbl_v","visc","all",.true.,"none",2 -##"ocean_model","av_visc","av_visc","visc","all",.true.,"none",2 -##"ocean_model","au_visc","au_visc","visc","all",.true.,"none",2 -##"ocean_model","FrictWork","FrictWork","visc","all",.true.,"none",2 -#"ocean_model","MLD_003","MLD_003","visc","all",.true.,"none",2 -#"ocean_model","subML_N2","subML_N2","visc","all",.true.,"none",2 -#"ocean_model","MEKE","MEKE","visc","all",.true.,"none",2 -#"ocean_model","MEKE_KH","MEKE_KH","visc","all",.true.,"none",2 -#"ocean_model","SN_u","SN_u","visc","all",.true.,"none",2 -# -## -## Kinetic Energy Balance Terms: -##============================= -##"ocean_model","KE","KE","energy","all",.true.,"none",2 -##"ocean_model","dKE_dt","dKE_dt","energy","all",.true.,"none",2 -##"ocean_model","PE_to_KE","PE_to_KE","energy","all",.true.,"none",2 -##"ocean_model","KE_Coradv","KE_Coradv","energy","all",.true.,"none",2 -##"ocean_model","KE_adv","KE_adv","energy","all",.true.,"none",2 -##"ocean_model","KE_visc","KE_visc","energy","all",.true.,"none",2 -##"ocean_model","KE_horvisc","KE_horvisc","energy","all",.true.,"none",2 -##"ocean_model","KE_dia","KE_dia","energy","all",.true.,"none",2 -# -## Surface Forcing: -##================= -#"ocean_model","taux","taux", "forcing","all",.true.,"none",2 -#"ocean_model","tauy","tauy", "forcing","all",.true.,"none",2 -#"ocean_model","ustar","ustar", "forcing","all",.true.,"none",2 -#"ocean_model","p_surf","p_surf", "forcing","all",.true.,"none",2 -## -#"ocean_model","PRCmE","PRCmE", "forcing","all",.true.,"none",1 -#"ocean_model","net_massin","net_massin", "forcing","all",.true.,"none",1 -#"ocean_model","net_massout","net_massout", "forcing","all",.true.,"none",1 -#"ocean_model","lrunoff","lrunoff", "forcing","all",.true.,"none",1 -#"ocean_model","frunoff","frunoff", "forcing","all",.true.,"none",1 -#"ocean_model","lprec","lprec", "forcing","all",.true.,"none",1 -#"ocean_model","fprec","fprec", "forcing","all",.true.,"none",1 -#"ocean_model","vprec","vprec", "forcing","all",.true.,"none",1 -#"ocean_model","evap","evap", "forcing","all",.true.,"none",1 -## -#"ocean_model","net_heat_coupler","net_heat_coupler", "forcing","all",.true.,"none",1 -#"ocean_model","net_heat_surface","net_heat_surface", "forcing","all",.true.,"none",1 -#"ocean_model","SW","SW", "forcing","all",.true.,"none",1 -#"ocean_model","LW","LW", "forcing","all",.true.,"none",1 -#"ocean_model","LwLatSens","LwLatSens", "forcing","all",.true.,"none",1 -#"ocean_model","salt_flux","salt_flux", "forcing","all",.true.,"none",1 -#"ocean_model","Heat_PmE","Heat_PmE", "forcing","all",.true.,"none",1 -"ocean_model","frazil","frazil", "forcing","all",.true.,"none",1 -#"ocean_model","internal_heat","internal_heat", "forcing","all",.true.,"none",1 -#"ocean_model","heat_added","heat_added", "forcing","all",.true.,"none",1 -## -#"ocean_model","heat_content_cond","heat_content_cond", "forcing","all",.true.,"none",1 -#"ocean_model","heat_content_lprec","heat_content_lprec", "forcing","all",.true.,"none",1 -#"ocean_model","heat_content_fprec","heat_content_fprec", "forcing","all",.true.,"none",1 -#"ocean_model","heat_content_vprec","heat_content_vprec", "forcing","all",.true.,"none",1 -#"ocean_model","heat_content_lrunoff","heat_content_lrunoff", "forcing","all",.true.,"none",1 -#"ocean_model","heat_content_frunoff","heat_content_frunoff", "forcing","all",.true.,"none",1 -#"ocean_model","heat_content_surfwater","heat_content_surfwater","forcing","all",.true.,"none",1 -#"ocean_model","heat_content_massout","heat_content_massout", "forcing","all",.true.,"none",1 -#"ocean_model","heat_content_massin","heat_content_massin", "forcing","all",.true.,"none",1 -## -#"ocean_model","total_prcme","total_prcme", "forcing","all",.true.,"none",2 -#"ocean_model","total_evap","total_evap", "forcing","all",.true.,"none",2 -#"ocean_model","total_lprec","total_lprec", "forcing","all",.true.,"none",2 -#"ocean_model","total_fprec","total_fprec", "forcing","all",.true.,"none",2 -#"ocean_model","total_vprec","total_vprec", "forcing","all",.true.,"none",2 -#"ocean_model","total_precip","total_precip", "forcing","all",.true.,"none",2 -#"ocean_model","total_lrunoff","total_lrunoff", "forcing","all",.true.,"none",2 -#"ocean_model","total_frunoff","total_frunoff", "forcing","all",.true.,"none",2 -#"ocean_model","total_net_massin","total_net_massin" , "forcing","all",.true.,"none",2 -#"ocean_model","total_net_massout","total_net_massout", "forcing","all",.true.,"none",2 -## -#"ocean_model","total_heat_content_frunoff" ,"total_heat_content_frunoff", "forcing","all",.true.,"none",2 -#"ocean_model","total_heat_content_lrunoff" ,"total_heat_content_lrunoff", "forcing","all",.true.,"none",2 -#"ocean_model","total_heat_content_lprec" ,"total_heat_content_lprec", "forcing","all",.true.,"none",2 -#"ocean_model","total_heat_content_fprec" ,"total_heat_content_fprec", "forcing","all",.true.,"none",2 -#"ocean_model","total_heat_content_vprec" ,"total_heat_content_vprec", "forcing","all",.true.,"none",2 -#"ocean_model","total_heat_content_cond" ,"total_heat_content_cond", "forcing","all",.true.,"none",2 -#"ocean_model","total_heat_content_surfwater" ,"total_heat_content_surfwater", "forcing","all",.true.,"none",2 -#"ocean_model","total_heat_content_massin" ,"total_heat_content_massin", "forcing","all",.true.,"none",2 -#"ocean_model","total_heat_content_massout" ,"total_heat_content_massout", "forcing","all",.true.,"none",2 -#"ocean_model","total_net_heat_coupler" ,"total_net_heat_coupler", "forcing","all",.true.,"none",2 -#"ocean_model","total_net_heat_surface" ,"total_net_heat_surface", "forcing","all",.true.,"none",2 -#"ocean_model","total_sw" ,"total_sw", "forcing","all",.true.,"none",2 -#"ocean_model","total_LwLatSens" ,"total_LwLatSens", "forcing","all",.true.,"none",2 -#"ocean_model","total_lw" ,"total_lw", "forcing","all",.true.,"none",2 -#"ocean_model","total_lat" ,"total_lat", "forcing","all",.true.,"none",2 -#"ocean_model","total_lat_evap" ,"total_lat_evap", "forcing","all",.true.,"none",2 -#"ocean_model","total_lat_fprec" ,"total_lat_fprec", "forcing","all",.true.,"none",2 -#"ocean_model","total_lat_frunoff" ,"total_lat_frunoff", "forcing","all",.true.,"none",2 -#"ocean_model","total_sens" ,"total_sens", "forcing","all",.true.,"none",2 -##"ocean_model","total_heat_added" ,"total_heat_added", "forcing","all",.true.,"none",2 -#"ocean_model","total_salt_flux" ,"total_salt_flux", "forcing","all",.true.,"none",2 -#"ocean_model","total_salt_flux_in" ,"total_salt_flux_in", "forcing","all",.true.,"none",2 -##"ocean_model","total_salt_flux_added" ,"total_salt_flux_added", "forcing","all",.true.,"none",2 -## -## -# "ocean_model", "hfgeou", "hfgeou", "cmor2", "all", "none", "none",2 # geothermal heat flux -# "ocean_model", "hfrainds", "hfrainds", "cmor2", "all", "mean", "none",2 -# "ocean_model", "hfevapds", "hfevapds", "cmor2", "all", "mean", "none",2 -# "ocean_model", "hfrunoffds", "hfrunoffds", "cmor2", "all", "mean", "none",2 -# "ocean_model", "hfsnthermds", "hfsnthermds", "cmor2", "all", "mean", "none",2 -# "ocean_model", "hfsifrazil", "hfsifrazil", "cmor2", "all", "mean", "none",2 -##"ocean_model", "hfsithermds", "hfsithermds", "cmor2", "all", "mean", "none",2 # computed in SIS2 -# "ocean_model", "hfibthermds", "hfibthermds", "cmor2", "all", "mean", "none",2 -##"ocean_model", "hfsolidrunoffds", "hfsolidrunoffds", "cmor2", "all", "mean", "none",2 # =0 if ice = 0C -# "ocean_model", "rlntds", "rlntds", "cmor2", "all", "mean", "none",2 -# "ocean_model", "hflso", "hflso", "cmor2", "all", "mean", "none",2 -# "ocean_model", "hfsso", "hfsso", "cmor2", "all", "mean", "none",2 -# "ocean_model", "rsntds", "rsntds" "cmor2", "all", "mean", "none",2 -##"ocean_model", "rsdoabsorb", "rsdoabsorb" "cmor2", "all", "mean", "none",2 -##"ocean_model", "rsdo", "rsdo" "cmor2", "all", "mean", "none",2 -# "ocean_model", "hfds", "hfds" "cmor2", "all", "mean", "none",2 -## -## -## Fields for CMIP6 (CMOR Names): -##======================================= -#"ocean_model","pso","pso" ,"cmor","all",.true.,"none",2 # GFDL Name: p_surf -#"ocean_model","tauuo","tauuo" ,"cmor","all",.true.,"none",2 # surface i-stress -#"ocean_model","tauvo","tauvo" ,"cmor","all",.true.,"none",2 # surface j-stress -#"ocean_model","wfo","wfo" ,"cmor","all",.true.,"none",2 # GFDL Name: PRCmE -#"ocean_model","rsntds","rsntds" ,"cmor","all",.true.,"none",2 # GFDL Name: SW -#"ocean_model","rlntds","rlntds" ,"cmor","all",.true.,"none",2 # GFDL Name: SW -#"ocean_model","hfibthermds","hfibthermds" ,"cmor","all",.true.,"none",2 # GFDL Name: heat_content_frunoff -#"ocean_model","hfrunoffds","hfrunoffds" ,"cmor","all",.true.,"none",2 # GFDL Name: runoff_heat_content -#"ocean_model","hfsifrazil","hfsifrazil" ,"cmor","all",.true.,"none",2 # GFDL Name: frazil -#"ocean_model","evs","evs" ,"cmor","all",.true.,"none",2 # GFDL Name: evap -#"ocean_model","prlq","prlq" ,"cmor","all",.true.,"none",2 # GFDL Name: fprec -#"ocean_model","prsn","prsn" ,"cmor","all",.true.,"none",2 # GFDL Name: fprec -#"ocean_model","hflso","hflso" ,"cmor","all",.true.,"none",2 # GFDL Name: latent -#"ocean_model","friver","friver" ,"cmor","all",.true.,"none",2 # GFDL Name: lrunoff -##"ocean_model","rlds","rlds" ,"cmor","all",.true.,"none",2 # GFDL Name: LW -##"ocean_model","hfss","hfss" ,"cmor","all",.true.,"none",2 # GFDL Name: sensible -#"ocean_model","hfds","hfds" ,"cmor","all",.true.,"none",2 # GFDL Name: net_heat_surface -#"ocean_model","sfdsi","sfdsi" ,"cmor","all",.true.,"none",2 # GFDL Name: salt_flux -#"ocean_model","uo","uo" ,"cmor","all",.true.,"none",2 # GFDL Name: u -#"ocean_model","vo","vo" ,"cmor","all",.true.,"none",2 # GFDL Name: v -#"ocean_model","so","so" ,"cmor","all",.true.,"none",2 # GFDL Name: salinity -#"ocean_model","masscello","masscello" ,"cmor","all",.true.,"none",2 # mass of ocean cells -#"ocean_model","pbo","pbo" ,"cmor","all",.true.,"none",2 # GFDL Name: n/a -#"ocean_model","mlotst","mlotst" ,"cmor","all",.true.,"none",2 # GFDL Name: MLD_003 -#"ocean_model","mlotstsq","mlotstsq" ,"cmor","all",.true.,"none",2 # GFDL Name: n/a -#"ocean_model","zos","zos" ,"cmor","all",.true.,"none",2 # dynamic sealevel -#"ocean_model","zossq","zossq" ,"cmor","all",.true.,"none",2 # squared zos -#"ocean_model","hfgeou","hfgeou" ,"cmor","all",.false.,"none",2 # GFDL name: geo_heat -#"ocean_model","thkcello","thkcello" ,"cmor","all",.true.,"none",2 # GFDL name: h if Bouss -#"ocean_model","opottempmint","opottempmint" ,"cmor","all",.true.,"none",2 # GFDL name: temp_int -#"ocean_model","somint","somint" ,"cmor","all",.true.,"none",2 # GFDL name: salt_int -#"ocean_model","obvfsq","obvfsq" ,"cmor","all",.true.,"none",2 # GFDL name: N2 -#"ocean_model","difvho","difvho" ,"cmor","all",.true.,"none",2 # GFDL name: N2 -#"ocean_model","difvso","difvso" ,"cmor","all",.true.,"none",2 # GFDL name: N2 -#"ocean_model","difmxylo","difmxylo" ,"cmor","all",.true.,"none",2 # GFDL name: N2 -#"ocean_model","difmxybo","difmxybo" ,"cmor","all",.true.,"none",2 # GFDL name: N2 -#"ocean_model","dispkexyfo","dispkexyfo" ,"cmor","all",.true.,"none",2 # GFDL name: N2 -## -## -## Z-Space Fields Provided for CMIP6 (CMOR Names): -##=============================================== -#"ocean_model_z","uo", "uo", "cmor_z","all",.true.,"none",2 #GFDL Name: u_z -#"ocean_model_z","vo", "vo", "cmor_z","all",.true.,"none",2 #GFDL Name: v_z -#"ocean_model_z","so", "so", "cmor_z","all",.true.,"none",2 #GFDL Name: salt_z -#"ocean_model_z","thetao","thetao","cmor_z","all",.true.,"none",2 #GFDL Name: temp_z -#"ocean_model_z","umo", "umo", "cmor_z","all",.true.,"none",2 #GFDL Name: uh_z -#"ocean_model_z","vmo", "vmo", "cmor_z","all",.true.,"none",2 #GFDL Name: vh_z -## -## Scalar ocean fields for CMIP6 (CMOR Names): -##===================== -#"ocean_model", "masso", "masso", "cmor_scalar", "all", .true., "none",2 # global mean masscello -#"ocean_model", "thetaoga", "thetaoga", "cmor_scalar", "all", .true., "none",2 # global mean theta -#"ocean_model", "soga", "soga", "cmor_scalar", "all", .true., "none",2 # global mean saln -#"ocean_model", "tosga", "tosga", "cmor_scalar", "all", .true., "none",2 # area mean SST -#"ocean_model", "sosga", "sosga", "cmor_scalar", "all", .true., "none",2 # area mean SSS -#"ocean_model", "volo", "volo", "cmor_scalar", "all", .true., "none",2 # ocean volume -# -## Scalar fields for run-time monitoring: -##======================================= -#"ocean_model", "masso", "masso", "scalar", "all", .true., "none",2 # global mean masscello -#"ocean_model", "thetaoga", "thetaoga", "scalar", "all", .true., "none",2 # global mean theta -#"ocean_model", "soga", "soga", "scalar", "all", .true., "none",2 # global mean salinity -#"ocean_model", "tosga", "tosga", "scalar", "all", .true., "none",2 # area mean SST -#"ocean_model", "sosga", "sosga", "scalar", "all", .true., "none",2 # area mean SSS -#"ocean_model", "volo", "volo", "scalar", "all", .true., "none",2 # ocean volume -#"ocean_model", "ssh_ga", "ssh_ga", "scalar", "all", .true., "none",2 # global mean ssh -#"ocean_model", "prcme_ga", "prcme_ga", "scalar", "all", .true., "none",2 # global mean prcme -#"ocean_model", "precip_ga", "precip_ga", "scalar", "all", .true., "none",2 # global mean precip -#"ocean_model", "evap_ga", "evap_ga", "scalar", "all", .true., "none",2 # global mean evaporation -#"ocean_model", "net_heat_coupler_ga", "net_heat_coupler_ga", "scalar", "all", .true., "none",2 # global mean net heat coupler -#"ocean_model", "net_heat_surface_ga", "net_heat_surface_ga", "scalar", "all", .true., "none",2 # global mean net heat surface -#"ocean_model", "sens_ga", "sens_ga", "scalar", "all", .true., "none",2 # global mean sensible heat -#"ocean_model", "LwLatSens_ga", "LwLatSens_ga", "scalar", "all", .true., "none",2 # global mean LW + latent + sensible -#"ocean_model", "sw_ga", "sw_ga", "scalar", "all", .true., "none",2 # global mean SW -#"ocean_model", "lw_ga", "lw_ga", "scalar", "all", .true., "none",2 # global mean LW -#"ocean_model", "lat_ga", "lat_ga", "scalar", "all", .true., "none",2 # global mean latent -# -## Static ocean fields: -##===================== -#"ocean_model", "geolon", "geolon", "ocean_static", "all", .false., "none", 1 -#"ocean_model", "geolat", "geolat", "ocean_static", "all", .false., "none", 1 -#"ocean_model", "geolon_c", "geolon_c", "ocean_static", "all", .false., "none", 2 -#"ocean_model", "geolat_c", "geolat_c", "ocean_static", "all", .false., "none", 2 -#"ocean_model", "geolon_u", "geolon_u", "ocean_static", "all", .false., "none", 2 -#"ocean_model", "geolat_u", "geolat_u", "ocean_static", "all", .false., "none", 2 -#"ocean_model", "geolon_v", "geolon_v", "ocean_static", "all", .false., "none", 2 -#"ocean_model", "geolat_v", "geolat_v", "ocean_static", "all", .false., "none", 2 -#"ocean_model", "area_t", "area_t", "ocean_static", "all", .false., "none", 1 -#"ocean_model", "depth_ocean", "depth_ocean", "ocean_static", "all", .false., "none", 2 -#"ocean_model", "wet", "wet", "ocean_static", "all", .false., "none", 1 -#"ocean_model", "wet_c", "wet_c", "ocean_static", "all", .false., "none", 2 -#"ocean_model", "wet_u", "wet_u", "ocean_static", "all", .false., "none", 2 -#"ocean_model", "wet_v", "wet_v", "ocean_static", "all", .false., "none", 2 -#"ocean_model", "Coriolis", "Coriolis", "ocean_static", "all", .false., "none", 2 -#"ocean_model", "dxt", "dxt", "ocean_static", "all", .false., "none", 2 -#"ocean_model", "dyt", "dyt", "ocean_static", "all", .false., "none", 2 -#"ocean_model", "dxCu", "dxCu", "ocean_static", "all", .false., "none", 2 -#"ocean_model", "dyCu", "dyCu", "ocean_static", "all", .false., "none", 2 -#"ocean_model", "dxCv", "dxCv", "ocean_static", "all", .false., "none", 2 -#"ocean_model", "dyCv", "dyCv", "ocean_static", "all", .false., "none", 2 - -# -## Static ocean fields: -##===================== -#"ocean_model", "areacello", "areacello", "ocean_static_cmor", "all", .false., "none", 2 - -#============================================================================================= -# -#====> This file can be used with diag_manager/v2.0a (or higher) <==== -# -# -# FORMATS FOR FILE ENTRIES (not all input values are used) -# ------------------------ -# -#"file_name", output_freq, "output_units", format, "time_units", "time_long_name", ... -# (opt) new_file_frequecy, (opt) "new_file_freq_units", "new_file_start_date" -# -# -#output_freq: > 0 output frequency in "output_units" -# = 0 output frequency every time step -# =-1 output frequency at end of run -# -#output_units = units used for output frequency -# (years, months, days, minutes, hours, seconds) -# -#time_units = units used to label the time axis -# (days, minutes, hours, seconds) -# -# -# FORMAT FOR FIELD ENTRIES (not all input values are used) -# ------------------------ -# -#"module_name", "field_name", "output_name", "file_name" "time_sampling", time_avg, "other_opts", packing -# -#time_avg = .true. or .false. -# -#packing = 1 double precision -# = 2 float -# = 4 packed 16-bit integers -# = 8 packed 1-byte (not tested?) diff --git a/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/1440x1080/g5aodas_input.nml b/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/1440x1080/g5aodas_input.nml deleted file mode 100644 index 784e412d6..000000000 --- a/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/1440x1080/g5aodas_input.nml +++ /dev/null @@ -1,11 +0,0 @@ - &MOM_input_nml - output_directory = './', - input_filename = 'r' - restart_input_dir = 'INPUT', - restart_output_dir = 'RESTART', - parameter_filename = 'MOM_input', - 'MOM_override' / - - &diag_manager_nml - / - diff --git a/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/1440x1080/input.nml b/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/1440x1080/input.nml deleted file mode 100644 index 3c31f4856..000000000 --- a/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/1440x1080/input.nml +++ /dev/null @@ -1,11 +0,0 @@ - &MOM_input_nml - output_directory = './', - input_filename = 'n' - restart_input_dir = 'INPUT/', - restart_output_dir = 'RESTART/', - parameter_filename = 'MOM_input', - 'MOM_override' / - - &diag_manager_nml - / - diff --git a/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/360x210/MOM_input b/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/360x210/MOM_input deleted file mode 100644 index 209ed11a9..000000000 --- a/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/360x210/MOM_input +++ /dev/null @@ -1,660 +0,0 @@ -/* This input file provides the adjustable run-time parameters for version 6 of - the Modular Ocean Model (MOM6), a numerical ocean model developed at NOAA-GFDL. - Where appropriate, parameters use usually given in MKS units. - - This particular file is for the example in global_ALE. - - This MOM_input file typically contains only the non-default values that are - needed to reproduce this example. A full list of parameters for this example - can be found in the corresponding MOM_parameter_doc.all file which is - generated by the model at run-time. */ - -TRIPOLAR_N = True ! [Boolean] default = False - ! Use tripolar connectivity at the northern edge of the - ! domain. With TRIPOLAR_N, NIGLOBAL must be even. -!SYMMETRIC_MEMORY_ = False ! [Boolean] - ! If defined, the velocity point data domain includes - ! every face of the thickness points. In other words, - ! some arrays are larger than others, depending on where - ! they are on the staggered grid. Also, the starting - ! index of the velocity-point arrays is usually 0, not 1. - ! This can only be set at compile time. -!STATIC_MEMORY_ = False ! [Boolean] - ! If STATIC_MEMORY_ is defined, the principle variables - ! will have sizes that are statically determined at - ! compile time. Otherwise the sizes are not determined - ! until run time. The STATIC option is substantially - ! faster, but does not allow the PE count to be changed - ! at run time. This can only be set at compile time. -NIHALO = 4 ! default = 2 - ! The number of halo points on each side in the - ! x-direction. With STATIC_MEMORY_ this is set as NIHALO_ - ! in MOM_memory.h at compile time; without STATIC_MEMORY_ - ! the default is NIHALO_ in MOM_memory.h (if defined) or 2. -NJHALO = 4 ! default = 2 - ! The number of halo points on each side in the - ! y-direction. With STATIC_MEMORY_ this is set as NJHALO_ - ! in MOM_memory.h at compile time; without STATIC_MEMORY_ - ! the default is NJHALO_ in MOM_memory.h (if defined) or 2. -NIGLOBAL = 360 ! - ! The total number of thickness grid points in the - ! x-direction in the physical domain. With STATIC_MEMORY_ - ! this is set in MOM_memory.h at compile time. -NJGLOBAL = 210 ! - ! The total number of thickness grid points in the - ! y-direction in the physical domain. With STATIC_MEMORY_ - ! this is set in MOM_memory.h at compile time. -!NIPROC = 8 ! - ! The number of processors in the x-direction. With - ! STATIC_MEMORY_ this is set in MOM_memory.h at compile time. -!NJPROC = 8 ! - ! The number of processors in the x-direction. With - ! STATIC_MEMORY_ this is set in MOM_memory.h at compile time. -LAYOUT = 36, 10 ! - ! The processor layout that was acutally used. -IO_LAYOUT = 1, 1 ! default = 0 - ! The processor layout to be used, or 0,0 to automatically - ! set the io_layout to be the same as the layout. - -! === module MOM_grid === -! Parameters providing information about the vertical grid. - -! === module MOM_verticalGrid === -! Parameters providing information about the vertical grid. - -! === module MOM === -DIABATIC_FIRST = True ! [Boolean] default = False - ! If true, apply diabatic and thermodynamic processes, - ! including buoyancy forcing and mass gain or loss, - ! before stepping the dynamics forward. -THICKNESSDIFFUSE = True ! [Boolean] default = False - ! If true, interfaces or isopycnal surfaces are diffused, - ! depending on the value of FULL_THICKNESSDIFFUSE. -THICKNESSDIFFUSE_FIRST = True ! [Boolean] default = False - ! If true, do thickness diffusion before dynamics. - ! This is only used if THICKNESSDIFFUSE is true. -DT = 450.0 ! [s] - ! The (baroclinic) dynamics time step. The time-step that - ! is actually used will be an integer fraction of the - ! forcing time-step (DT_FORCING in ocean-only mode or the - ! coupling timestep in coupled mode.) -DT_THERM = 7200.0 ! [s] default = 3600.0 - ! The thermodynamic and tracer advection time step. - ! Ideally DT_THERM should be an integer multiple of DT - ! and less than the forcing or coupling time-step. - ! By default DT_THERM is set to DT. -DTBT_RESET_PERIOD = 0.0 ! [s] default = 7200.0 - ! The period between recalculations of DTBT (if DTBT <= 0). - ! If DTBT_RESET_PERIOD is negative, DTBT is set based - ! only on information available at initialization. If - ! dynamic, DTBT will be set at least every forcing time - ! step, and if 0, every dynamics time step. The default is - ! set by DT_THERM. This is only used if SPLIT is true. -FRAZIL = True ! [Boolean] default = False - ! If true, water freezes if it gets too cold, and the - ! the accumulated heat deficit is returned in the - ! surface state. FRAZIL is only used if - ! ENABLE_THERMODYNAMICS is true. -DO_GEOTHERMAL = True ! [Boolean] default = False - ! If true, apply geothermal heating. -BOUND_SALINITY = True ! [Boolean] default = False - ! If true, limit salinity to being positive. (The sea-ice - ! model may ask for more salt than is available and - ! drive the salinity negative otherwise.) -C_P = 3925.0 ! [J kg-1 K-1] default = 3991.86795711963 - ! The heat capacity of sea water, approximated as a - ! constant. This is only used if ENABLE_THERMODYNAMICS is - ! true. The default value is from the TEOS-10 definition - ! of conservative temperature. -CHECK_BAD_SURFACE_VALS = True ! [Boolean] default = False - ! If true, check the surface state for ridiculous values. -SAVE_INITIAL_CONDS = True ! [Boolean] default = False - ! If true, write the initial conditions to a file given - ! by IC_OUTPUT_FILE. -PARALLEL_RESTARTFILES = True ! [Boolean] default = False - ! If true, each processor writes its own restart file, - ! otherwise a single restart file is generated - -! === module MOM_tracer_registry === -TFREEZE_DP = -7.75E-08 ! [deg C Pa-1] default = 0.0 - ! When TFREEZE_FORM=LINEAR, - ! this is the derivative of the freezing potential - ! temperature with pressure. - -! === module MOM_tracer_flow_control === -USE_IDEAL_AGE_TRACER = True ! [Boolean] default = False - ! If true, use the ideal_age_example tracer package. - -! === module ideal_age_example === -INPUTDIR = "INPUT" ! default = "." - ! The directory in which input files are found. -COORD_CONFIG = "file" ! - ! This specifies how layers are to be defined: - ! file - read coordinate information from the file - ! specified by (COORD_FILE). - ! linear - linear based on interfaces not layesrs. - ! ts_ref - use reference temperature and salinity - ! ts_range - use range of temperature and salinity - ! (T_REF and S_REF) to determine surface density - ! and GINT calculate internal densities. - ! gprime - use reference density (RHO_0) for surface - ! density and GINT calculate internal densities. - ! ts_profile - use temperature and salinity profiles - ! (read from COORD_FILE) to set layer densities. - ! USER - call a user modified routine. -COORD_FILE = "Layer_coord.nc" ! - ! The file from which the coordinate densities are read. - -! === module MOM_grid_init === -GRID_CONFIG = "mosaic" ! - ! A character string that determines the method for - ! defining the horizontal grid. Current options are: - ! mosaic - read the grid from a mosaic (supergrid) - ! file set by GRID_FILE. - ! cartesian - use a (flat) Cartesian grid. - ! spherical - use a simple spherical grid. - ! mercator - use a Mercator spherical grid. -GRID_FILE = "ocean_hgrid.nc" ! - ! Name of the file from which to read horizontal grid data. -TOPO_CONFIG = "file" ! - ! This specifies how bathymetry is specified: - ! file - read bathymetric information from the file - ! specified by (TOPO_FILE). - ! flat - flat bottom set to MAXIMUM_DEPTH. - ! bowl - an analytically specified bowl-shaped basin - ! ranging between MAXIMUM_DEPTH and MINIMUM_DEPTH. - ! spoon - a similar shape to 'bowl', but with an vertical - ! wall at the southern face. - ! halfpipe - a zonally uniform channel with a half-sine - ! profile in the meridional direction. - ! benchmark - use the benchmark test case topography. - ! DOME - use a slope and channel configuration for the - ! DOME sill-overflow test case. - ! DOME2D - use a shelf and slope configuration for the - ! DOME2D gravity current/overflow test case. - ! seamount - Gaussian bump for spontaneous motion test case. - ! USER - call a user modified routine. -MAXIMUM_DEPTH = 6000.0 ! [m] - ! The maximum depth of the ocean. -MINIMUM_DEPTH = 0.5 ! [m] default = 0.0 - ! If MASKING_DEPTH is unspecified, then anything shallower than - ! MINIMUM_DEPTH is assumed to be land and all fluxes are masked out. - ! If MASKING_DEPTH is specified, then all depths shallower than - ! MINIMUM_DEPTH but depper than MASKING_DEPTH are rounded to MINIMUM_DEPTH. -CHANNEL_CONFIG = "global_1deg" ! default = "none" - ! A parameter that determines which set of channels are - ! restricted to specific widths. Options are: - ! none - All channels have the grid width. - ! global_1deg - Sets 16 specific channels appropriate - ! for a 1-degree model, as used in CM2G. - ! list - Read the channel locations and widths from a - ! text file, like MOM_channel_list in the MOM_SIS - ! test case. - ! file - Read open face widths everywhere from a - ! NetCDF file on the model grid. -REMAPPING_SCHEME = "PPM_H4" ! default = "PLM" - ! This sets the reconstruction scheme used - ! for vertical remapping for all variables. - ! It can be one of the following schemes: - ! PCM (1st-order accurate) - ! PLM (2nd-order accurate) - ! PPM_H4 (3rd-order accurate) - ! PPM_IH4 (3rd-order accurate) - ! PQM_IH4IH3 (4th-order accurate) - ! PQM_IH6IH5 (5th-order accurate) -INIT_LAYERS_FROM_Z_FILE = True ! [Boolean] default = False - ! If true, intialize the layer thicknesses, temperatures, - ! and salnities from a Z-space file on a latitude- - ! longitude grid. -TEMP_SALT_Z_INIT_FILE = "WOA05_pottemp_salt.nc" ! default = "temp_salt_z.nc" - ! The name of the z-space input file used to initialize - ! the layer thicknesses, temperatures and salinities. -Z_INIT_FILE_PTEMP_VAR = "PTEMP" ! default = "ptemp" - ! The name of the potential temperature variable in - ! TEMP_SALT_Z_INIT_FILE. -Z_INIT_FILE_SALT_VAR = "SALT" ! default = "salt" - ! The name of the salinity variable in - ! TEMP_SALT_Z_INIT_FILE. - -! === module MOM_MEKE === -USE_MEKE = True ! [Boolean] default = False - ! If true, turns on the MEKE scheme which calculates - ! a sub-grid mesoscale eddy kinetic energy budget. -MEKE_GMCOEFF = 1.0 ! [nondim] default = -1.0 - ! The efficiency of the conversion of potential energy - ! into MEKE by the thickness mixing parameterization. - ! If MEKE_GMCOEFF is negative, this conversion is not - ! used or calculated. - -! === module MOM_lateral_mixing_coeffs === -USE_VARIABLE_MIXING = True ! [Boolean] default = False - ! If true, the variable mixing code will be called. This - ! allows diagnostics to be created even if the scheme is - ! not used. If KHTR_SLOPE_CFF>0 or KhTh_Slope_Cff>0, - ! this is set to true regardless of what is in the - ! parameter file. -RESOLN_SCALED_KH = True ! [Boolean] default = False - ! If true, the Laplacian lateral viscosity is scaled away - ! when the first baroclinic deformation radius is well - ! resolved. -RESOLN_SCALED_KHTH = True ! [Boolean] default = False - ! If true, the interface depth diffusivity is scaled away - ! when the first baroclinic deformation radius is well - ! resolved. - -! === module MOM_wave_speed === -TIDES = True ! [Boolean] default = False - ! If true, apply tidal momentum forcing. -ETA_TOLERANCE = 1.0E-06 ! [m] default = 3.15E-09 - ! The tolerance for the differences between the - ! barotropic and baroclinic estimates of the sea surface - ! height due to the fluxes through each face. The total - ! tolerance for SSH is 4 times this value. The default - ! is 0.5*NK*ANGSTROM, and this should not be set less x - ! than about 10^-15*MAXIMUM_DEPTH. -VELOCITY_TOLERANCE = 1.0E-04 ! [m s-1] default = 3.0E+08 - ! The tolerance for barotropic velocity discrepancies - ! between the barotropic solution and the sum of the - ! layer thicknesses. -BOUND_CORIOLIS = True ! [Boolean] default = False - ! If true, the Coriolis terms at u-points are bounded by - ! the four estimates of (f+rv)v from the four neighboring - ! v-points, and similarly at v-points. This option would - ! have no effect on the SADOURNY Coriolis scheme if it - ! were possible to use centered difference thickness fluxes. - -! === module MOM_tidal_forcing === -TIDE_M2 = True ! [Boolean] default = False - ! If true, apply tidal momentum forcing at the M2 - ! frequency. This is only used if TIDES is true. -TIDE_SAL_SCALAR_VALUE = 0.094 ! [m m-1] - ! The constant of proportionality between sea surface - ! height (really it should be bottom pressure) anomalies - ! and bottom geopotential anomalies. This is only used if - ! TIDES and TIDE_USE_SAL_SCALAR are true. -MASS_WEIGHT_IN_PRESSURE_GRADIENT = True ! [Boolean] default = False - ! If true, use mass weighting when interpolation T/S for - ! top/bottom integrals in AFV pressure gradient calculation. - -! === module MOM_hor_visc === -LAPLACIAN = True ! [Boolean] default = False - ! If true, use a Laplacian horizontal viscosity. -KH_VEL_SCALE = 0.01 ! [m s-1] default = 0.0 - ! The velocity scale which is multiplied by the grid - ! spacing to calculate the Laplacian viscosity. - ! The final viscosity is the largest of this scaled - ! viscosity, the Smagorinsky viscosity and KH. -AH_VEL_SCALE = 0.05 ! [m s-1] default = 0.0 - ! The velocity scale which is multiplied by the cube of - ! the grid spacing to calculate the Laplacian viscosity. - ! The final viscosity is the largest of this scaled - ! viscosity, the Smagorinsky viscosity and AH. -SMAGORINSKY_AH = True ! [Boolean] default = False - ! If true, use a biharmonic Smagorinsky nonlinear eddy - ! viscosity. -SMAG_BI_CONST = 0.06 ! [nondim] default = 0.0 - ! The nondimensional biharmonic Smagorinsky constant, - ! typically 0.015 - 0.06. - -! === module MOM_vert_friction === -CHANNEL_DRAG = True ! [Boolean] default = False - ! If true, the bottom drag is exerted directly on each - ! layer proportional to the fraction of the bottom it - ! overlies. -!DYNAMIC_VISCOUS_ML = True ! [Boolean] default = False - ! If true, use a bulk Richardson number criterion to - ! determine the mixed layer thickness for viscosity. -PRANDTL_TURB = 1.0 ! [nondim] default = 0.0 - ! The turbulent Prandtl number applied to shear - ! instability. -U_TRUNC_FILE = "U_velocity_truncations" ! default = "" - ! The absolute path to a file into which the accelerations - ! leading to zonal velocity truncations are written. - ! Undefine this for efficiency if this diagnostic is not - ! needed. -V_TRUNC_FILE = "V_velocity_truncations" ! default = "" - ! The absolute path to a file into which the accelerations - ! leading to meridional velocity truncations are written. - ! Undefine this for efficiency if this diagnostic is not - ! needed. -KV = 1.0E-04 ! [m2 s-1] - ! The background kinematic viscosity in the interior. - ! The molecular value, ~1e-6 m2 s-1, may be used. -HBBL = 10.0 ! [m] - ! The thickness of a bottom boundary layer with a - ! viscosity of KVBBL if BOTTOMDRAGLAW is not defined, or - ! the thickness over which near-bottom velocities are - ! averaged for the drag law if BOTTOMDRAGLAW is defined - ! but LINEAR_DRAG is not. -MAXVEL = 6.0 ! [m s-1] default = 3.0E+08 - ! The maximum velocity allowed before the velocity - ! components are truncated. - -! === module MOM_PointAccel === -INTERPOLATE_RES_FN = False ! [Boolean] default = True - ! If true, interpolate the resolution function to the - ! velocity points from the thickness points; otherwise - ! interpolate the wave speed and calculate the resolution - ! function independently at each point. -GILL_EQUATORIAL_LD = True ! [Boolean] default = False - ! If true, uses Gill's definition of the baroclinic - ! equatorial deformation radius, otherwise, if false, use - ! Pedlosky's definition. These definitions differ by a factor - ! of 2 infront of the beta term in the denominator. Gill'sis the more appropriate definition. - -! === module MOM_set_visc === -DRAG_BG_VEL = 0.1 ! [m s-1] default = 0.0 - ! DRAG_BG_VEL is either the assumed bottom velocity (with - ! LINEAR_DRAG) or an unresolved velocity that is - ! combined with the resolved velocity to estimate the - ! velocity magnitude. DRAG_BG_VEL is only used when - ! BOTTOMDRAGLAW is defined. -BBL_USE_EOS = True ! [Boolean] default = False - ! If true, use the equation of state in determining the - ! properties of the bottom boundary layer. Otherwise use - ! the layer target potential densities. -BBL_THICK_MIN = 0.1 ! [m] default = 0.0 - ! The minimum bottom boundary layer thickness that can be - ! used with BOTTOMDRAGLAW. This might be - ! Kv / (cdrag * drag_bg_vel) to give Kv as the minimum - ! near-bottom viscosity. - -! === module MOM_barotropic === -BOUND_BT_CORRECTION = True ! [Boolean] default = False - ! If true, the corrective pseudo mass-fluxes into the - ! barotropic solver are limited to values that require - ! less than 0.1*MAXVEL to be accommodated. -!BT x-halo = 0 ! - ! The barotropic x-halo size that is actually used. -!BT y-halo = 0 ! - ! The barotropic y-halo size that is actually used. -BT_PROJECT_VELOCITY = True ! [Boolean] default = False - ! If true, step the barotropic velocity first and project - ! out the velocity tendancy by 1+BEBT when calculating the - ! transport. The default (false) is to use a predictor - ! continuity step to find the pressure field, and then - ! to do a corrector continuity step using a weighted - ! average of the old and new velocities, with weights - ! of (1-BEBT) and BEBT. -BT_THICK_SCHEME = "FROM_BT_CONT" ! default = "HYBRID" - ! A string describing the scheme that is used to set the - ! open face areas used for barotropic transport and the - ! relative weights of the accelerations. Valid values are: - ! ARITHMETIC - arithmetic mean layer thicknesses - ! HARMONIC - harmonic mean layer thicknesses - ! HYBRID (the default) - use arithmetic means for - ! layers above the shallowest bottom, the harmonic - ! mean for layers below, and a weighted average for - ! layers that straddle that depth - ! FROM_BT_CONT - use the average thicknesses kept - ! in the h_u and h_v fields of the BT_cont_type -BEBT = 0.2 ! [nondim] default = 0.1 - ! BEBT determines whether the barotropic time stepping - ! uses the forward-backward time-stepping scheme or a - ! backward Euler scheme. BEBT is valid in the range from - ! 0 (for a forward-backward treatment of nonrotating - ! gravity waves) to 1 (for a backward Euler treatment). - ! In practice, BEBT must be greater than about 0.05. -DTBT = -0.95 ! [s or nondim] default = -0.98 - ! The barotropic time step, in s. DTBT is only used with - ! the split explicit time stepping. To set the time step - ! automatically based the maximum stable value use 0, or - ! a negative value gives the fraction of the stable value. - ! Setting DTBT to 0 is the same as setting it to -0.98. - ! The value of DTBT that will actually be used is an - ! integer fraction of DT, rounding down. - -! === module MOM_thickness_diffuse === -KHTH = 600.0 ! [m2 s-1] default = 0.0 - ! The background horizontal thickness diffusivity. -KHTH_MAX = 900.0 ! [m2 s-1] default = 0.0 - ! The maximum horizontal thickness diffusivity. -KHTH_USE_FGNV_STREAMFUNCTION = True ! [Boolean] default = False - ! If true, use the streamfunction formulation of - ! Ferrari et al., 2010, which effectively emphasizes - ! graver vertical modes by smoothing in the vertical. -FGNV_C_MIN = 0.01 ! [m s-1] default = 0.0 - ! A minium wave speed used in the Ferrari et al., 2010, - ! streamfunction formulation. - -! === module MOM_mixed_layer_restrat === -MIXEDLAYER_RESTRAT = True ! [Boolean] default = False - ! If true, a density-gradient dependent re-stratifying - ! flow is imposed in the mixed layer. - ! This is only used if BULKMIXEDLAYER is true. -FOX_KEMPER_ML_RESTRAT_COEF = 20.0 ! [nondim] default = 0.0 - ! A nondimensional coefficient that is proportional to - ! the ratio of the deformation radius to the dominant - ! lengthscale of the submesoscale mixed layer - ! instabilities, times the minimum of the ratio of the - ! mesoscale eddy kinetic energy to the large-scale - ! geostrophic kinetic energy or 1 plus the square of the - ! grid spacing over the deformation radius, as detailed - ! by Fox-Kemper et al. (2010) - -! === module MOM_diabatic_driver === -! The following parameters are used for diabatic processes. -BBL_MIXING_AS_MAX = False ! [Boolean] default = True - ! If true, take the maximum of the diffusivity from the - ! BBL mixing and the other diffusivities. Otherwise, - ! diffusiviy from the BBL_mixing is simply added. -USE_LOTW_BBL_DIFFUSIVITY = True ! [Boolean] default = False - ! If true, uses a simple, imprecise but non-coordinate dependent, model - ! of BBL mixing diffusivity based on Law of the Wall. Otherwise, uses - ! the original BBL scheme. -KD_MAX = 0.1 ! [m2 s-1] default = -1.0 - ! The maximum permitted increment for the diapycnal - ! diffusivity from TKE-based parameterizations, or a - ! negative value for no limit. -HENYEY_IGW_BACKGROUND = True ! [Boolean] default = False - ! If true, use a latitude-dependent scaling for the near - ! surface background diffusivity, as described in - ! Harrison & Hallberg, JPO 2008. -N2_FLOOR_IOMEGA2 = 0.0 ! [nondim] default = 1.0 - ! The floor applied to N2(k) scaled by Omega^2: - ! If =0., N2(k) is simply positive definite. - ! If =1., N2(k) > Omega^2 everywhere. -KD = 2.0E-05 ! [m2 s-1] - ! The background diapycnal diffusivity of density in the - ! interior. Zero or the molecular value, ~1e-7 m2 s-1, - ! may be used. -KD_MIN = 2.0E-06 ! [m2 s-1] default = 2.0E-07 - ! The minimum diapycnal diffusivity. -INT_TIDE_DISSIPATION = True ! [Boolean] default = False - ! If true, use an internal tidal dissipation scheme to - ! drive diapycnal mixing, along the lines of St. Laurent - ! et al. (2002) and Simmons et al. (2004). -INT_TIDE_DECAY_SCALE = 300.3003003003003 ! [m] default = 0.0 - ! The decay scale away from the bottom for tidal TKE with - ! the new coding when INT_TIDE_DISSIPATION is used. -KAPPA_ITIDES = 6.28319E-04 ! [m-1] default = 6.283185307179586E-04 - ! A topographic wavenumber used with INT_TIDE_DISSIPATION. - ! The default is 2pi/10 km, as in St.Laurent et al. 2002. -KAPPA_H2_FACTOR = 0.75 ! [nondim] default = 1.0 - ! A scaling factor for the roughness amplitude with nINT_TIDE_DISSIPATION. -TKE_ITIDE_MAX = 0.1 ! [W m-2] default = 1000.0 - ! The maximum internal tide energy source availble to mix - ! above the bottom boundary layer with INT_TIDE_DISSIPATION. -READ_TIDEAMP = True ! [Boolean] default = False - ! If true, read a file (given by TIDEAMP_FILE) containing - ! the tidal amplitude with INT_TIDE_DISSIPATION. -H2_FILE = "sgs_h2.nc" ! - ! The path to the file containing the sub-grid-scale - ! topographic roughness amplitude with INT_TIDE_DISSIPATION. - -! === module MOM_kappa_shear === -! Parameterization of shear-driven turbulence following Jackson, Hallberg and Legg, JPO 2008 -USE_JACKSON_PARAM = True ! [Boolean] default = False - ! If true, use the Jackson-Hallberg-Legg (JPO 2008) - ! shear mixing parameterization. -MAX_RINO_IT = 25 ! [nondim] default = 50 - ! The maximum number of iterations that may be used to - ! estimate the Richardson number driven mixing. - -! === module MOM_KPP === -! This is the MOM wrapper to CVmix:KPP -! See http://code.google.com/p/cvmix/ - -! === module MOM_diffConvection === -! This module implements enhanced diffusivity as a -! function of static stability, N^2. -CONVECTION% -%CONVECTION - -! === module MOM_entrain_diffusive === -MAX_ENT_IT = 20 ! default = 5 - ! The maximum number of iterations that may be used to - ! calculate the interior diapycnal entrainment. -TOLERANCE_ENT = 1.0E-05 ! [m] default = 2.683281572999748E-05 - ! The tolerance with which to solve for entrainment values. - -! === module MOM_geothermal === -GEOTHERMAL_SCALE = 0.001 ! [W m-2 or various] default = 0.0 - ! The constant geothermal heat flux, a rescaling - ! factor for the heat flux read from GEOTHERMAL_FILE, or - ! 0 to disable the geothermal heating. -GEOTHERMAL_FILE = "geothermal_heating_cm2g.nc" ! default = "" - ! The file from which the geothermal heating is to be - ! read, or blank to use a constant heating rate. - -! === module MOM_mixed_layer === -BULK_RI_ML = 0.05 ! [nondim] - ! The efficiency with which mean kinetic energy released - ! by mechanically forced entrainment of the mixed layer - ! is converted to turbulent kinetic energy. -HMIX_MIN = 2.0 ! [m] default = 0.0 - ! The minimum mixed layer depth if the mixed layer depth - ! is determined dynamically. - -! === module MOM_regularize_layers === - -! === module MOM_opacity === -VAR_PEN_SW = True ! [Boolean] default = False - ! If true, use one of the CHL_A schemes specified by - ! OPACITY_SCHEME to determine the e-folding depth of - ! incoming short wave radiation. -CHL_FILE = "seawifs_1998-2006_GOLD_smoothed_2X.nc" ! - ! CHL_FILE is the file containing chl_a concentrations in - ! the variable CHL_A. It is used when VAR_PEN_SW and - ! CHL_FROM_FILE are true. -PEN_SW_NBANDS = 3 ! default = 1 - ! The number of bands of penetrating shortwave radiation. - -! === module MOM_tracer_advect === -TRACER_ADVECTION_SCHEME = "PPM:H3" ! default = "PLM" - ! The horizontal transport scheme for tracers: - ! PLM - Piecewise Linear Method - ! PPM:H3 - Piecewise Parabolic Method (Huyhn 3rd order) - -! === module MOM_tracer_hor_diff === -KHTR = 600.0 ! [m2 s-1] default = 0.0 - ! The background along-isopycnal tracer diffusivity. -KHTR_MIN = 50.0 ! [m2 s-1] default = 0.0 - ! The minimum along-isopycnal tracer diffusivity. -KHTR_MAX = 900.0 ! [m2 s-1] default = 0.0 - ! The maximum along-isopycnal tracer diffusivity. - -! === module MOM_surface_forcing === -BUOY_CONFIG = "file" ! - ! The character string that indicates how buoyancy forcing - ! is specified. Valid options include (file), (zero), - ! (linear), (USER), and (NONE). -ARCHAIC_OMIP_FORCING_FILE = False ! [Boolean] default = True - ! If true, use the forcing variable decomposition from - ! the old German OMIP prescription that predated CORE. If - ! false, use the variable groupings available from MOM - ! output diagnostics of forcing variables. -LONGWAVE_FILE = "ocean_forcing_daily.nc" ! - ! The file with the longwave heat flux, in the variable - ! given by LONGWAVE_FORCING_VAR. -SHORTWAVE_FILE = "ocean_forcing_daily.nc" ! - ! The file with the shortwave heat flux, in the variable - ! given by SHORTWAVE_FORCING_VAR. -EVAPORATION_FILE = "ocean_forcing_daily.nc" ! - ! The file with the evaporative moisture flux, in the - ! variable given by EVAP_FORCING_VAR. -LATENTHEAT_FILE = "ocean_forcing_daily.nc" ! - ! The file with the latent heat flux, in the variable - ! given by LATENT_FORCING_VAR. -SENSIBLEHEAT_FILE = "ocean_forcing_daily.nc" ! - ! The file with the sensible heat flux, in the variable - ! given by SENSIBLE_FORCING_VAR. -RAIN_FILE = "ocean_precip_monthly.nc" ! - ! The file with the liquid precipitation flux, in the - ! variable given by RAIN_FORCING_VAR. -SNOW_FILE = "ocean_precip_monthly.nc" ! - ! The file with the frozen precipitation flux, in the - ! variable given by SNOW_FORCING_VAR. -RUNOFF_FILE = "ocean_precip_monthly.nc" ! - ! The file with the fresh and frozen runoff/calving - ! fluxes, in variables given by LIQ_RUNOFF_FORCING_VAR - ! and FROZ_RUNOFF_FORCING_VAR. -SSTRESTORE_FILE = "ocean_forcing_daily.nc" ! - ! The file with the SST toward which to restore in the - ! variable given by SST_RESTORE_VAR. -SALINITYRESTORE_FILE = "ocean_forcing_daily.nc" ! - ! The file with the surface salinity toward which to - ! restore in the variable given by SSS_RESTORE_VAR. -WIND_CONFIG = "file" ! - ! The character string that indicates how wind forcing - ! is specified. Valid options include (file), (2gyre), - ! (1gyre), (gyres), (zero), and (USER). -WIND_FILE = "ocean_forcing_daily.nc" ! - ! The file in which the wind stresses are found in - ! variables STRESS_X and STRESS_Y. -WINDSTRESS_X_VAR = "taux" ! default = "STRESS_X" - ! The name of the x-wind stress variable in WIND_FILE. -WINDSTRESS_Y_VAR = "tauy" ! default = "STRESS_Y" - ! The name of the y-wind stress variable in WIND_FILE. -!WINDSTRESS_STAGGER = "C" ! default = "A" - ! A character indicating how the wind stress components - ! are staggered in WIND_FILE. This may be A or C for now. -RESTOREBUOY = True ! [Boolean] default = False - ! If true, the buoyancy fluxes drive the model back - ! toward some specified surface state with a rate - ! given by FLUXCONST. -FLUXCONST = 0.5 ! [m day-1] - ! The constant that relates the restoring surface fluxes - ! to the relative surface anomalies (akin to a piston - ! velocity). Note the non-MKS units. -READ_GUST_2D = True ! [Boolean] default = False - ! If true, use a 2-dimensional gustiness supplied from - ! an input file -GUST_2D_FILE = "gustiness_qscat.nc" ! - ! The file in which the wind gustiness is found in - ! variable gustiness. - -! === module MOM_sum_output === -MAXTRUNC = 5000 ! [truncations save_interval-1] default = 0 - ! The run will be stopped, and the day set to a very - ! large value if the velocity is truncated more than - ! MAXTRUNC times between energy saves. Set MAXTRUNC to 0 - ! to stop if there is any truncation of velocities. -MAXCPU = 2.88E+04 ! [wall-clock seconds] default = -1.0 - ! The maximum amount of cpu time per processor for which - ! MOM should run before saving a restart file and - ! quitting with a return value that indicates that a - ! further run is required to complete the simulation. - ! If automatic restarts are not desired, use a negative - ! value for MAXCPU. MAXCPU has units of wall-clock - ! seconds, so the actual CPU time used is larger by a - ! factor of the number of processors used. - -! === module MOM_main (MOM_driver) === -DT_FORCING = 7200.0 ! [s] default = 3600.0 - ! The time step for changing forcing, coupling with other - ! components, or potentially writing certain diagnostics. - ! The default value is given by DT. -RESTART_CONTROL = 3 ! default = 1 - ! An integer whose bits encode which restart files are - ! written. Add 2 (bit 1) for a time-stamped file, and odd - ! (bit 0) for a non-time-stamped file. A non-time-stamped - ! restart file is saved at the end of the run segment - ! for any non-negative value. -RESTINT = 365.0 ! [days] default = 0.0 - ! The interval between saves of the restart file in units - ! of TIMEUNIT. Use 0 (the default) to not save - ! incremental restart files at all. -ENERGYSAVEDAYS = 0.5 ! [days] default = 7200.0 - ! The interval in units of TIMEUNIT between saves of the - ! energies of the run and other globally summed diagnostics. diff --git a/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/360x210/MOM_override b/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/360x210/MOM_override deleted file mode 100644 index 610135cb0..000000000 --- a/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/360x210/MOM_override +++ /dev/null @@ -1,26 +0,0 @@ -! Blank file in which we can put "overrides" for parameters -NK = 50 -#override USE_REGRIDDING = True -#override BULKMIXEDLAYER = False -#override COORD_FILE = "Layer_coord50.nc" -USE_STORED_SLOPES = True -USE_NEUTRAL_DIFFUSION = True -SIMPLE_TKE_TO_KD = True -REGRIDDING_COORDINATE_MODE = "Z*" -ALE_COORDINATE_CONFIG = "FILE:vgrid.nc,dz" -HMIX_FIXED = 0.5 -CFL_TRUNCATE_RAMP_TIME = 7200. -Z_INIT_ALE_REMAPPING = True -ENERGETICS_SFC_PBL = True - -#override DT_THERM = 450. -BAD_VAL_SST_MIN = -3.0 -BAD_VAL_SSS_MAX = 55.0 -HFREEZE = 10.0 - -! disable checksums -RESTART_CHECKSUMS_REQUIRED = False - -!VERBOSITY = 9 -!DEBUG = True -!REPORT_UNUSED_PARAMS = True diff --git a/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/360x210/MOM_parameter_doc.all b/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/360x210/MOM_parameter_doc.all deleted file mode 100644 index ad216035b..000000000 --- a/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/360x210/MOM_parameter_doc.all +++ /dev/null @@ -1,1986 +0,0 @@ -! This file was written by the model and records all non-layout or debugging parameters used at run-time. - -! === module MOM === - -! === module MOM_unit_scaling === -! Parameters for doing unit scaling of variables. -SPLIT = True ! [Boolean] default = True - ! Use the split time stepping if true. -CALC_RHO_FOR_SEA_LEVEL = False ! [Boolean] default = False - ! If true, the in-situ density is used to calculate the effective sea level that - ! is returned to the coupler. If false, the Boussinesq parameter RHO_0 is used. -ENABLE_THERMODYNAMICS = True ! [Boolean] default = True - ! If true, Temperature and salinity are used as state variables. -USE_EOS = True ! [Boolean] default = True - ! If true, density is calculated from temperature and salinity with an equation - ! of state. If USE_EOS is true, ENABLE_THERMODYNAMICS must be true as well. -DIABATIC_FIRST = True ! [Boolean] default = False - ! If true, apply diabatic and thermodynamic processes, including buoyancy - ! forcing and mass gain or loss, before stepping the dynamics forward. -USE_CONTEMP_ABSSAL = False ! [Boolean] default = False - ! If true, the prognostics T&S are the conservative temperature and absolute - ! salinity. Care should be taken to convert them to potential temperature and - ! practical salinity before exchanging them with the coupler and/or reporting - ! T&S diagnostics. -ADIABATIC = False ! [Boolean] default = False - ! There are no diapycnal mass fluxes if ADIABATIC is true. This assumes that KD - ! = KDML = 0.0 and that there is no buoyancy forcing, but makes the model faster - ! by eliminating subroutine calls. -DO_DYNAMICS = True ! [Boolean] default = True - ! If False, skips the dynamics calls that update u & v, as well as the gravity - ! wave adjustment to h. This may be a fragile feature, but can be useful during - ! development -OFFLINE_TRACER_MODE = False ! [Boolean] default = False - ! If true, barotropic and baroclinic dynamics, thermodynamics are all bypassed - ! with all the fields necessary to integrate the tracer advection and diffusion - ! equation are read in from files stored from a previous integration of the - ! prognostic model. NOTE: This option only used in the ocean_solo_driver. -USE_REGRIDDING = True ! [Boolean] default = False - ! If True, use the ALE algorithm (regridding/remapping). If False, use the - ! layered isopycnal algorithm. -BULKMIXEDLAYER = False ! [Boolean] default = False - ! If true, use a Kraus-Turner-like bulk mixed layer with transitional buffer - ! layers. Layers 1 through NKML+NKBL have variable densities. There must be at - ! least NKML+NKBL+1 layers if BULKMIXEDLAYER is true. BULKMIXEDLAYER can not be - ! used with USE_REGRIDDING. The default is influenced by ENABLE_THERMODYNAMICS. -THICKNESSDIFFUSE = True ! [Boolean] default = False - ! If true, interface heights are diffused with a coefficient of KHTH. -THICKNESSDIFFUSE_FIRST = True ! [Boolean] default = False - ! If true, do thickness diffusion before dynamics. This is only used if - ! THICKNESSDIFFUSE is true. -BATHYMETRY_AT_VEL = False ! [Boolean] default = False - ! If true, there are separate values for the basin depths at velocity points. - ! Otherwise the effects of topography are entirely determined from thickness - ! points. -DT = 450.0 ! [s] - ! The (baroclinic) dynamics time step. The time-step that is actually used will - ! be an integer fraction of the forcing time-step (DT_FORCING in ocean-only mode - ! or the coupling timestep in coupled mode.) -DT_THERM = 450.0 ! [s] default = 450.0 - ! The thermodynamic and tracer advection time step. Ideally DT_THERM should be - ! an integer multiple of DT and less than the forcing or coupling time-step, - ! unless THERMO_SPANS_COUPLING is true, in which case DT_THERM can be an integer - ! multiple of the coupling timestep. By default DT_THERM is set to DT. -THERMO_SPANS_COUPLING = False ! [Boolean] default = False - ! If true, the MOM will take thermodynamic and tracer timesteps that can be - ! longer than the coupling timestep. The actual thermodynamic timestep that is - ! used in this case is the largest integer multiple of the coupling timestep - ! that is less than or equal to DT_THERM. -HMIX_SFC_PROP = 1.0 ! [m] default = 1.0 - ! If BULKMIXEDLAYER is false, HMIX_SFC_PROP is the depth over which to average - ! to find surface properties like SST and SSS or density (but not surface - ! velocities). -HMIX_UV_SFC_PROP = 0.0 ! [m] default = 0.0 - ! If BULKMIXEDLAYER is false, HMIX_UV_SFC_PROP is the depth over which to - ! average to find surface flow properties, SSU, SSV. A non-positive value - ! indicates no averaging. -HFREEZE = -1.0 ! [m] default = -1.0 - ! If HFREEZE > 0, melt potential will be computed. The actual depth over which - ! melt potential is computed will be min(HFREEZE, OBLD), where OBLD is the - ! boundary layer depth. If HFREEZE <= 0 (default), melt potential will not be - ! computed. -INTERPOLATE_P_SURF = False ! [Boolean] default = False - ! If true, linearly interpolate the surface pressure over the coupling time - ! step, using the specified value at the end of the step. -DTBT_RESET_PERIOD = 0.0 ! [s] default = 450.0 - ! The period between recalculations of DTBT (if DTBT <= 0). If DTBT_RESET_PERIOD - ! is negative, DTBT is set based only on information available at - ! initialization. If 0, DTBT will be set every dynamics time step. The default - ! is set by DT_THERM. This is only used if SPLIT is true. -FRAZIL = True ! [Boolean] default = False - ! If true, water freezes if it gets too cold, and the accumulated heat deficit - ! is returned in the surface state. FRAZIL is only used if - ! ENABLE_THERMODYNAMICS is true. -DO_GEOTHERMAL = True ! [Boolean] default = False - ! If true, apply geothermal heating. -BOUND_SALINITY = True ! [Boolean] default = False - ! If true, limit salinity to being positive. (The sea-ice model may ask for more - ! salt than is available and drive the salinity negative otherwise.) -MIN_SALINITY = 0.0 ! [PPT] default = 0.0 - ! The minimum value of salinity when BOUND_SALINITY=True. -C_P = 3925.0 ! [J kg-1 K-1] default = 3991.86795711963 - ! The heat capacity of sea water, approximated as a constant. This is only used - ! if ENABLE_THERMODYNAMICS is true. The default value is from the TEOS-10 - ! definition of conservative temperature. -USE_PSURF_IN_EOS = True ! [Boolean] default = True - ! If true, always include the surface pressure contributions in equation of - ! state calculations. -P_REF = 2.0E+07 ! [Pa] default = 2.0E+07 - ! The pressure that is used for calculating the coordinate density. (1 Pa = 1e4 - ! dbar, so 2e7 is commonly used.) This is only used if USE_EOS and - ! ENABLE_THERMODYNAMICS are true. -FIRST_DIRECTION = 0 ! default = 0 - ! An integer that indicates which direction goes first in parts of the code that - ! use directionally split updates, with even numbers (or 0) used for x- first - ! and odd numbers used for y-first. -CHECK_BAD_SURFACE_VALS = True ! [Boolean] default = False - ! If true, check the surface state for ridiculous values. -BAD_VAL_SSH_MAX = 20.0 ! [m] default = 20.0 - ! The value of SSH above which a bad value message is triggered, if - ! CHECK_BAD_SURFACE_VALS is true. -BAD_VAL_SSS_MAX = 55.0 ! [PPT] default = 45.0 - ! The value of SSS above which a bad value message is triggered, if - ! CHECK_BAD_SURFACE_VALS is true. -BAD_VAL_SST_MAX = 45.0 ! [deg C] default = 45.0 - ! The value of SST above which a bad value message is triggered, if - ! CHECK_BAD_SURFACE_VALS is true. -BAD_VAL_SST_MIN = -3.0 ! [deg C] default = -2.1 - ! The value of SST below which a bad value message is triggered, if - ! CHECK_BAD_SURFACE_VALS is true. -BAD_VAL_COLUMN_THICKNESS = 0.0 ! [m] default = 0.0 - ! The value of column thickness below which a bad value message is triggered, if - ! CHECK_BAD_SURFACE_VALS is true. -DEFAULT_2018_ANSWERS = False ! [Boolean] default = False - ! This sets the default value for the various _2018_ANSWERS parameters. -SURFACE_2018_ANSWERS = False ! [Boolean] default = False - ! If true, use expressions for the surface properties that recover the answers - ! from the end of 2018. Otherwise, use more appropriate expressions that differ - ! at roundoff for non-Boussinesq cases. -SAVE_INITIAL_CONDS = True ! [Boolean] default = False - ! If true, write the initial conditions to a file given by IC_OUTPUT_FILE. -IC_OUTPUT_FILE = "MOM_IC" ! default = "MOM_IC" - ! The file into which to write the initial conditions. -WRITE_GEOM = 1 ! default = 1 - ! If =0, never write the geometry and vertical grid files. If =1, write the - ! geometry and vertical grid files only for a new simulation. If =2, always - ! write the geometry and vertical grid files. Other values are invalid. -ENSEMBLE_OCEAN = False ! [Boolean] default = False - ! If False, The model is being run in serial mode as a single realization. If - ! True, The current model realization is part of a larger ensemble and at the - ! end of step MOM, we will perform a gather of the ensemble members for - ! statistical evaluation and/or data assimilation. - -! === module MOM_domains === -REENTRANT_X = True ! [Boolean] default = True - ! If true, the domain is zonally reentrant. -REENTRANT_Y = False ! [Boolean] default = False - ! If true, the domain is meridionally reentrant. -TRIPOLAR_N = True ! [Boolean] default = False - ! Use tripolar connectivity at the northern edge of the domain. With - ! TRIPOLAR_N, NIGLOBAL must be even. -NIGLOBAL = 360 ! - ! The total number of thickness grid points in the x-direction in the physical - ! domain. With STATIC_MEMORY_ this is set in MOM_memory.h at compile time. -NJGLOBAL = 210 ! - ! The total number of thickness grid points in the y-direction in the physical - ! domain. With STATIC_MEMORY_ this is set in MOM_memory.h at compile time. - -! === module MOM_hor_index === -! Sets the horizontal array index types. - -! === module MOM_fixed_initialization === -INPUTDIR = "INPUT" ! default = "." - ! The directory in which input files are found. - -! === module MOM_grid_init === -GRID_CONFIG = "mosaic" ! - ! A character string that determines the method for defining the horizontal - ! grid. Current options are: - ! mosaic - read the grid from a mosaic (supergrid) - ! file set by GRID_FILE. - ! cartesian - use a (flat) Cartesian grid. - ! spherical - use a simple spherical grid. - ! mercator - use a Mercator spherical grid. -GRID_FILE = "ocean_hgrid.nc" ! - ! Name of the file from which to read horizontal grid data. -USE_TRIPOLAR_GEOLONB_BUG = False ! [Boolean] default = False - ! If true, use older code that incorrectly sets the longitude in some points - ! along the tripolar fold to be off by 360 degrees. -TOPO_CONFIG = "file" ! - ! This specifies how bathymetry is specified: - ! file - read bathymetric information from the file - ! specified by (TOPO_FILE). - ! flat - flat bottom set to MAXIMUM_DEPTH. - ! bowl - an analytically specified bowl-shaped basin - ! ranging between MAXIMUM_DEPTH and MINIMUM_DEPTH. - ! spoon - a similar shape to 'bowl', but with an vertical - ! wall at the southern face. - ! halfpipe - a zonally uniform channel with a half-sine - ! profile in the meridional direction. - ! bbuilder - build topography from list of functions. - ! benchmark - use the benchmark test case topography. - ! Neverworld - use the Neverworld test case topography. - ! DOME - use a slope and channel configuration for the - ! DOME sill-overflow test case. - ! ISOMIP - use a slope and channel configuration for the - ! ISOMIP test case. - ! DOME2D - use a shelf and slope configuration for the - ! DOME2D gravity current/overflow test case. - ! Kelvin - flat but with rotated land mask. - ! seamount - Gaussian bump for spontaneous motion test case. - ! dumbbell - Sloshing channel with reservoirs on both ends. - ! shelfwave - exponential slope for shelfwave test case. - ! Phillips - ACC-like idealized topography used in the Phillips config. - ! dense - Denmark Strait-like dense water formation and overflow. - ! USER - call a user modified routine. -TOPO_FILE = "topog.nc" ! default = "topog.nc" - ! The file from which the bathymetry is read. -TOPO_VARNAME = "depth" ! default = "depth" - ! The name of the bathymetry variable in TOPO_FILE. -TOPO_EDITS_FILE = "" ! default = "" - ! The file from which to read a list of i,j,z topography overrides. -MAXIMUM_DEPTH = 6000.0 ! [m] - ! The maximum depth of the ocean. -MINIMUM_DEPTH = 0.5 ! [m] default = 0.0 - ! If MASKING_DEPTH is unspecified, then anything shallower than MINIMUM_DEPTH is - ! assumed to be land and all fluxes are masked out. If MASKING_DEPTH is - ! specified, then all depths shallower than MINIMUM_DEPTH but deeper than - ! MASKING_DEPTH are rounded to MINIMUM_DEPTH. - -! === module MOM_open_boundary === -! Controls where open boundaries are located, what kind of boundary condition to impose, and what data to apply, -! if any. -OBC_NUMBER_OF_SEGMENTS = 0 ! default = 0 - ! The number of open boundary segments. -MASKING_DEPTH = -9999.0 ! [m] default = -9999.0 - ! The depth below which to mask points as land points, for which all fluxes are - ! zeroed out. MASKING_DEPTH is ignored if negative. -CHANNEL_CONFIG = "global_1deg" ! default = "none" - ! A parameter that determines which set of channels are - ! restricted to specific widths. Options are: - ! none - All channels have the grid width. - ! global_1deg - Sets 16 specific channels appropriate - ! for a 1-degree model, as used in CM2G. - ! list - Read the channel locations and widths from a - ! text file, like MOM_channel_list in the MOM_SIS - ! test case. - ! file - Read open face widths everywhere from a - ! NetCDF file on the model grid. -ROTATION = "2omegasinlat" ! default = "2omegasinlat" - ! This specifies how the Coriolis parameter is specified: - ! 2omegasinlat - Use twice the planetary rotation rate - ! times the sine of latitude. - ! betaplane - Use a beta-plane or f-plane. - ! USER - call a user modified routine. -OMEGA = 7.2921E-05 ! [s-1] default = 7.2921E-05 - ! The rotation rate of the earth. -GRID_ROTATION_ANGLE_BUGS = False ! [Boolean] default = False - ! If true, use an older algorithm to calculate the sine and cosines needed - ! rotate between grid-oriented directions and true north and east. Differences - ! arise at the tripolar fold. - -! === module MOM_verticalGrid === -! Parameters providing information about the vertical grid. -G_EARTH = 9.8 ! [m s-2] default = 9.8 - ! The gravitational acceleration of the Earth. -RHO_0 = 1035.0 ! [kg m-3] default = 1035.0 - ! The mean ocean density used with BOUSSINESQ true to calculate accelerations - ! and the mass for conservation properties, or with BOUSSINSEQ false to convert - ! some parameters from vertical units of m to kg m-2. -BOUSSINESQ = True ! [Boolean] default = True - ! If true, make the Boussinesq approximation. -ANGSTROM = 1.0E-10 ! [m] default = 1.0E-10 - ! The minimum layer thickness, usually one-Angstrom. -H_TO_M = 1.0 ! [m H-1] default = 1.0 - ! A constant that translates the model's internal units of thickness into m. -NK = 50 ! [nondim] - ! The number of model layers. - -! === module MOM_tracer_registry === - -! === module MOM_EOS === -EQN_OF_STATE = "WRIGHT" ! default = "WRIGHT" - ! EQN_OF_STATE determines which ocean equation of state should be used. - ! Currently, the valid choices are "LINEAR", "UNESCO", "WRIGHT", "NEMO" and - ! "TEOS10". This is only used if USE_EOS is true. -EOS_QUADRATURE = False ! [Boolean] default = False - ! If true, always use the generic (quadrature) code code for the integrals of - ! density. -TFREEZE_FORM = "TEOS10" ! default = "LINEAR" - ! TFREEZE_FORM determines which expression should be used for the freezing - ! point. Currently, the valid choices are "LINEAR", "MILLERO_78", "TEOS10" - -! === module MOM_restart === -PARALLEL_RESTARTFILES = True ! [Boolean] default = False - ! If true, each processor writes its own restart file, otherwise a single - ! restart file is generated -RESTARTFILE = "MOM.res" ! default = "MOM.res" - ! The name-root of the restart file. -LARGE_FILE_SUPPORT = True ! [Boolean] default = True - ! If true, use the file-size limits with NetCDF large file support (4Gb), - ! otherwise the limit is 2Gb. -MAX_FIELDS = 100 ! default = 100 - ! The maximum number of restart fields that can be used. -RESTART_CHECKSUMS_REQUIRED = True ! [Boolean] default = True - ! If true, require the restart checksums to match and error out otherwise. Users - ! may want to avoid this comparison if for example the restarts are made from a - ! run with a different mask_table than the current run, in which case the - ! checksums will not match and cause crash. - -! === module MOM_tracer_flow_control === -USE_USER_TRACER_EXAMPLE = False ! [Boolean] default = False - ! If true, use the USER_tracer_example tracer package. -USE_DOME_TRACER = False ! [Boolean] default = False - ! If true, use the DOME_tracer tracer package. -USE_ISOMIP_TRACER = False ! [Boolean] default = False - ! If true, use the ISOMIP_tracer tracer package. -USE_RGC_TRACER = False ! [Boolean] default = False - ! If true, use the RGC_tracer tracer package. -USE_IDEAL_AGE_TRACER = True ! [Boolean] default = False - ! If true, use the ideal_age_example tracer package. -USE_REGIONAL_DYES = False ! [Boolean] default = False - ! If true, use the regional_dyes tracer package. -USE_OIL_TRACER = False ! [Boolean] default = False - ! If true, use the oil_tracer tracer package. -USE_ADVECTION_TEST_TRACER = False ! [Boolean] default = False - ! If true, use the advection_test_tracer tracer package. -USE_OCMIP2_CFC = False ! [Boolean] default = False - ! If true, use the MOM_OCMIP2_CFC tracer package. -USE_generic_tracer = False ! [Boolean] default = False - ! If true and _USE_GENERIC_TRACER is defined as a preprocessor macro, use the - ! MOM_generic_tracer packages. -USE_PSEUDO_SALT_TRACER = False ! [Boolean] default = False - ! If true, use the pseudo salt tracer, typically run as a diagnostic. -USE_BOUNDARY_IMPULSE_TRACER = False ! [Boolean] default = False - ! If true, use the boundary impulse tracer. -USE_DYED_OBC_TRACER = False ! [Boolean] default = False - ! If true, use the dyed_obc_tracer tracer package. - -! === module ideal_age_example === -DO_IDEAL_AGE = True ! [Boolean] default = True - ! If true, use an ideal age tracer that is set to 0 age in the mixed layer and - ! ages at unit rate in the interior. -DO_IDEAL_VINTAGE = False ! [Boolean] default = False - ! If true, use an ideal vintage tracer that is set to an exponentially - ! increasing value in the mixed layer and is conserved thereafter. -DO_IDEAL_AGE_DATED = False ! [Boolean] default = False - ! If true, use an ideal age tracer that is everywhere 0 before - ! IDEAL_AGE_DATED_START_YEAR, but the behaves like the standard ideal age tracer - ! - i.e. is set to 0 age in the mixed layer and ages at unit rate in the - ! interior. -AGE_IC_FILE = "" ! default = "" - ! The file in which the age-tracer initial values can be found, or an empty - ! string for internal initialization. -AGE_IC_FILE_IS_Z = False ! [Boolean] default = False - ! If true, AGE_IC_FILE is in depth space, not layer space -TRACERS_MAY_REINIT = False ! [Boolean] default = False - ! If true, tracers may go through the initialization code if they are not found - ! in the restart files. Otherwise it is a fatal error if the tracers are not - ! found in the restart files of a restarted run. - -! === module MOM_coord_initialization === -COORD_CONFIG = "file" ! default = "none" - ! This specifies how layers are to be defined: - ! ALE or none - used to avoid defining layers in ALE mode - ! file - read coordinate information from the file - ! specified by (COORD_FILE). - ! BFB - Custom coords for buoyancy-forced basin case - ! based on SST_S, T_BOT and DRHO_DT. - ! linear - linear based on interfaces not layers - ! layer_ref - linear based on layer densities - ! ts_ref - use reference temperature and salinity - ! ts_range - use range of temperature and salinity - ! (T_REF and S_REF) to determine surface density - ! and GINT calculate internal densities. - ! gprime - use reference density (RHO_0) for surface - ! density and GINT calculate internal densities. - ! ts_profile - use temperature and salinity profiles - ! (read from COORD_FILE) to set layer densities. - ! USER - call a user modified routine. -GFS = 9.8 ! [m s-2] default = 9.8 - ! The reduced gravity at the free surface. -COORD_FILE = "Layer_coord50.nc" ! - ! The file from which the coordinate densities are read. -COORD_VAR = "Layer" ! default = "Layer" - ! The variable in COORD_FILE that is to be used for the coordinate densities. -REMAP_UV_USING_OLD_ALG = False ! [Boolean] default = False - ! If true, uses the old remapping-via-a-delta-z method for remapping u and v. If - ! false, uses the new method that remaps between grids described by an old and - ! new thickness. -REGRIDDING_COORDINATE_MODE = "Z*" ! default = "LAYER" - ! Coordinate mode for vertical regridding. Choose among the following - ! possibilities: LAYER - Isopycnal or stacked shallow water layers - ! ZSTAR, Z* - stretched geopotential z* - ! SIGMA_SHELF_ZSTAR - stretched geopotential z* ignoring shelf - ! SIGMA - terrain following coordinates - ! RHO - continuous isopycnal - ! HYCOM1 - HyCOM-like hybrid coordinate - ! SLIGHT - stretched coordinates above continuous isopycnal - ! ADAPTIVE - optimize for smooth neutral density surfaces -REGRIDDING_COORDINATE_UNITS = "m" ! default = "m" - ! Units of the regridding coordinate. -ALE_COORDINATE_CONFIG = "FILE:vgrid.nc,dz" ! default = "UNIFORM" - ! Determines how to specify the coordinate resolution. Valid options are: - ! PARAM - use the vector-parameter ALE_RESOLUTION - ! UNIFORM[:N] - uniformly distributed - ! FILE:string - read from a file. The string specifies - ! the filename and variable name, separated - ! by a comma or space, e.g. FILE:lev.nc,dz - ! or FILE:lev.nc,interfaces=zw - ! WOA09[:N] - the WOA09 vertical grid (approximately) - ! FNC1:string - FNC1:dz_min,H_total,power,precision - ! HYBRID:string - read from a file. The string specifies - ! the filename and two variable names, separated - ! by a comma or space, for sigma-2 and dz. e.g. - ! HYBRID:vgrid.nc,sigma2,dz -!ALE_RESOLUTION = 3*10.1, 2*10.2, 10.3, 10.5, 10.7, 10.9, 11.3, 11.7, 12.4, 13.3, 14.6, 16.3, 18.6, 21.7, 25.9, 31.4, 38.5, 47.4, 58.4, 71.3, 86.0, 101.9, 118.1, 134.0, 148.7, 161.6, 172.6, 181.5, 188.6, 194.1, 198.3, 201.4, 203.7, 205.4, 206.7, 207.6, 208.3, 208.7, 209.1, 209.3, 209.5, 209.7, 2*209.8, 2*209.9, 209.0 ! [m] - ! The distribution of vertical resolution for the target - ! grid used for Eulerian-like coordinates. For example, - ! in z-coordinate mode, the parameter is a list of level - ! thicknesses (in m). In sigma-coordinate mode, the list - ! is of non-dimensional fractions of the water column. -MIN_THICKNESS = 0.001 ! [m] default = 0.001 - ! When regridding, this is the minimum layer thickness allowed. -REMAPPING_SCHEME = "PPM_H4" ! default = "PLM" - ! This sets the reconstruction scheme used for vertical remapping for all - ! variables. It can be one of the following schemes: PCM (1st-order - ! accurate) - ! PLM (2nd-order accurate) - ! PPM_H4 (3rd-order accurate) - ! PPM_IH4 (3rd-order accurate) - ! PQM_IH4IH3 (4th-order accurate) - ! PQM_IH6IH5 (5th-order accurate) -FATAL_CHECK_RECONSTRUCTIONS = False ! [Boolean] default = False - ! If true, cell-by-cell reconstructions are checked for consistency and if - ! non-monotonicity or an inconsistency is detected then a FATAL error is issued. -FATAL_CHECK_REMAPPING = False ! [Boolean] default = False - ! If true, the results of remapping are checked for conservation and new extrema - ! and if an inconsistency is detected then a FATAL error is issued. -REMAP_BOUND_INTERMEDIATE_VALUES = False ! [Boolean] default = False - ! If true, the values on the intermediate grid used for remapping are forced to - ! be bounded, which might not be the case due to round off. -REMAP_BOUNDARY_EXTRAP = False ! [Boolean] default = False - ! If true, values at the interfaces of boundary cells are extrapolated instead - ! of piecewise constant -REMAPPING_2018_ANSWERS = False ! [Boolean] default = False - ! If true, use the order of arithmetic and expressions that recover the answers - ! from the end of 2018. Otherwise, use updated and more robust forms of the - ! same expressions. -REMAP_AFTER_INITIALIZATION = True ! [Boolean] default = True - ! If true, applies regridding and remapping immediately after initialization so - ! that the state is ALE consistent. This is a legacy step and should not be - ! needed if the initialization is consistent with the coordinate mode. -REGRID_TIME_SCALE = 0.0 ! [s] default = 0.0 - ! The time-scale used in blending between the current (old) grid and the target - ! (new) grid. A short time-scale favors the target grid (0. or anything less - ! than DT_THERM) has no memory of the old grid. A very long time-scale makes the - ! model more Lagrangian. -REGRID_FILTER_SHALLOW_DEPTH = 0.0 ! [m] default = 0.0 - ! The depth above which no time-filtering is applied. Above this depth final - ! grid exactly matches the target (new) grid. -REGRID_FILTER_DEEP_DEPTH = 0.0 ! [m] default = 0.0 - ! The depth below which full time-filtering is applied with time-scale - ! REGRID_TIME_SCALE. Between depths REGRID_FILTER_SHALLOW_DEPTH and - ! REGRID_FILTER_SHALLOW_DEPTH the filter weights adopt a cubic profile. - -! === module MOM_grid === -! Parameters providing information about the lateral grid. -REFERENCE_HEIGHT = 0.0 ! [m] default = 0.0 - ! A reference value for geometric height fields, such as bathyT. - -! === module MOM_state_initialization === -TEMP_SALT_INIT_VERTICAL_REMAP_ONLY = False ! [Boolean] default = False - ! If true, initial conditions are on the model horizontal grid. Extrapolation - ! over missing ocean values is done using an ICE-9 procedure with vertical ALE - ! remapping . -HOR_REGRID_2018_ANSWERS = False ! [Boolean] default = False - ! If true, use the order of arithmetic for horizonal regridding that recovers - ! the answers from the end of 2018. Otherwise, use rotationally symmetric forms - ! of the same expressions. -SPONGE = False ! [Boolean] default = False - ! If true, sponges may be applied anywhere in the domain. The exact location and - ! properties of those sponges are specified via SPONGE_CONFIG. - -! === module MOM_diag_mediator === -NUM_DIAG_COORDS = 1 ! default = 1 - ! The number of diagnostic vertical coordinates to use. For each coordinate, an - ! entry in DIAG_COORDS must be provided. -DIAG_COORDS = "z Z ZSTAR" ! default = "z Z ZSTAR" - ! A list of string tuples associating diag_table modules to a coordinate - ! definition used for diagnostics. Each string is of the form "MODULE_SUFFIX - ! PARAMETER_SUFFIX COORDINATE_NAME". -DIAG_MISVAL = 1.0E+20 ! [not defined] default = 1.0E+20 - ! Set the default missing value to use for diagnostics. -DIAG_AS_CHKSUM = False ! [Boolean] default = False - ! Instead of writing diagnostics to the diag manager, write a text file - ! containing the checksum (bitcount) of the array. -AVAILABLE_DIAGS_FILE = "available_diags.000000" ! default = "available_diags.000000" - ! A file into which to write a list of all available ocean diagnostics that can - ! be included in a diag_table. -DIAG_COORD_DEF_Z = "WOA09" ! default = "WOA09" - ! Determines how to specify the coordinate resolution. Valid options are: - ! PARAM - use the vector-parameter DIAG_COORD_RES_Z - ! UNIFORM[:N] - uniformly distributed - ! FILE:string - read from a file. The string specifies - ! the filename and variable name, separated - ! by a comma or space, e.g. FILE:lev.nc,dz - ! or FILE:lev.nc,interfaces=zw - ! WOA09[:N] - the WOA09 vertical grid (approximately) - ! FNC1:string - FNC1:dz_min,H_total,power,precision - ! HYBRID:string - read from a file. The string specifies - ! the filename and two variable names, separated - ! by a comma or space, for sigma-2 and dz. e.g. - ! HYBRID:vgrid.nc,sigma2,dz - -! === module MOM_MEKE === -USE_MEKE = True ! [Boolean] default = False - ! If true, turns on the MEKE scheme which calculates a sub-grid mesoscale eddy - ! kinetic energy budget. -MEKE_DAMPING = 0.0 ! [s-1] default = 0.0 - ! The local depth-independent MEKE dissipation rate. -MEKE_CD_SCALE = 0.0 ! [nondim] default = 0.0 - ! The ratio of the bottom eddy velocity to the column mean eddy velocity, i.e. - ! sqrt(2*MEKE). This should be less than 1 to account for the surface - ! intensification of MEKE. -MEKE_CB = 25.0 ! [nondim] default = 25.0 - ! A coefficient in the expression for the ratio of bottom projected eddy energy - ! and mean column energy (see Jansen et al. 2015). -MEKE_MIN_GAMMA2 = 1.0E-04 ! [nondim] default = 1.0E-04 - ! The minimum allowed value of gamma_b^2. -MEKE_CT = 50.0 ! [nondim] default = 50.0 - ! A coefficient in the expression for the ratio of barotropic eddy energy and - ! mean column energy (see Jansen et al. 2015). -MEKE_GMCOEFF = 1.0 ! [nondim] default = -1.0 - ! The efficiency of the conversion of potential energy into MEKE by the - ! thickness mixing parameterization. If MEKE_GMCOEFF is negative, this - ! conversion is not used or calculated. -MEKE_GEOMETRIC = False ! [Boolean] default = False - ! If MEKE_GEOMETRIC is true, uses the GM coefficient formulation from the - ! GEOMETRIC framework (Marshall et al., 2012). -MEKE_GEOMETRIC_ALPHA = 0.05 ! [nondim] default = 0.05 - ! The nondimensional coefficient governing the efficiency of the GEOMETRIC - ! thickness diffusion. -MEKE_EQUILIBRIUM_ALT = False ! [Boolean] default = False - ! If true, use an alternative formula for computing the (equilibrium)initial - ! value of MEKE. -MEKE_EQUILIBRIUM_RESTORING = False ! [Boolean] default = False - ! If true, restore MEKE back to its equilibrium value, which is calculated at - ! each time step. -MEKE_FRCOEFF = -1.0 ! [nondim] default = -1.0 - ! The efficiency of the conversion of mean energy into MEKE. If MEKE_FRCOEFF is - ! negative, this conversion is not used or calculated. -MEKE_GMECOEFF = -1.0 ! [nondim] default = -1.0 - ! The efficiency of the conversion of MEKE into mean energy by GME. If - ! MEKE_GMECOEFF is negative, this conversion is not used or calculated. -MEKE_BGSRC = 0.0 ! [W kg-1] default = 0.0 - ! A background energy source for MEKE. -MEKE_KH = -1.0 ! [m2 s-1] default = -1.0 - ! A background lateral diffusivity of MEKE. Use a negative value to not apply - ! lateral diffusion to MEKE. -MEKE_K4 = -1.0 ! [m4 s-1] default = -1.0 - ! A lateral bi-harmonic diffusivity of MEKE. Use a negative value to not apply - ! bi-harmonic diffusion to MEKE. -MEKE_DTSCALE = 1.0 ! [nondim] default = 1.0 - ! A scaling factor to accelerate the time evolution of MEKE. -MEKE_KHCOEFF = 1.0 ! [nondim] default = 1.0 - ! A scaling factor in the expression for eddy diffusivity which is otherwise - ! proportional to the MEKE velocity- scale times an eddy mixing-length. This - ! factor must be >0 for MEKE to contribute to the thickness/ and tracer - ! diffusivity in the rest of the model. -MEKE_USCALE = 0.0 ! [m s-1] default = 0.0 - ! The background velocity that is combined with MEKE to calculate the bottom - ! drag. -MEKE_GM_SRC_ALT = False ! [Boolean] default = False - ! If true, use the GM energy conversion form S^2*N^2*kappa rather than the - ! streamfunction for the MEKE GM source term. -MEKE_VISC_DRAG = True ! [Boolean] default = True - ! If true, use the vertvisc_type to calculate the bottom drag acting on MEKE. -MEKE_KHTH_FAC = 0.0 ! [nondim] default = 0.0 - ! A factor that maps MEKE%Kh to KhTh. -MEKE_KHTR_FAC = 0.0 ! [nondim] default = 0.0 - ! A factor that maps MEKE%Kh to KhTr. -MEKE_KHMEKE_FAC = 0.0 ! [nondim] default = 0.0 - ! A factor that maps MEKE%Kh to Kh for MEKE itself. -MEKE_OLD_LSCALE = False ! [Boolean] default = False - ! If true, use the old formula for length scale which is a function of grid - ! spacing and deformation radius. -MEKE_MIN_LSCALE = False ! [Boolean] default = False - ! If true, use a strict minimum of provided length scales rather than harmonic - ! mean. -MEKE_RD_MAX_SCALE = False ! [nondim] default = False - ! If true, the length scale used by MEKE is the minimum of the deformation - ! radius or grid-spacing. Only used if MEKE_OLD_LSCALE=True -MEKE_VISCOSITY_COEFF_KU = 0.0 ! [nondim] default = 0.0 - ! If non-zero, is the scaling coefficient in the expression forviscosity used to - ! parameterize harmonic lateral momentum mixing byunresolved eddies represented - ! by MEKE. Can be negative torepresent backscatter from the unresolved eddies. -MEKE_VISCOSITY_COEFF_AU = 0.0 ! [nondim] default = 0.0 - ! If non-zero, is the scaling coefficient in the expression forviscosity used to - ! parameterize biharmonic lateral momentum mixing byunresolved eddies - ! represented by MEKE. Can be negative torepresent backscatter from the - ! unresolved eddies. -MEKE_FIXED_MIXING_LENGTH = 0.0 ! [m] default = 0.0 - ! If positive, is a fixed length contribution to the expression for mixing - ! length used in MEKE-derived diffusivity. -MEKE_ALPHA_DEFORM = 0.0 ! [nondim] default = 0.0 - ! If positive, is a coefficient weighting the deformation scale in the - ! expression for mixing length used in MEKE-derived diffusivity. -MEKE_ALPHA_RHINES = 0.0 ! [nondim] default = 0.0 - ! If positive, is a coefficient weighting the Rhines scale in the expression for - ! mixing length used in MEKE-derived diffusivity. -MEKE_ALPHA_EADY = 0.0 ! [nondim] default = 0.0 - ! If positive, is a coefficient weighting the Eady length scale in the - ! expression for mixing length used in MEKE-derived diffusivity. -MEKE_ALPHA_FRICT = 0.0 ! [nondim] default = 0.0 - ! If positive, is a coefficient weighting the frictional arrest scale in the - ! expression for mixing length used in MEKE-derived diffusivity. -MEKE_ALPHA_GRID = 0.0 ! [nondim] default = 0.0 - ! If positive, is a coefficient weighting the grid-spacing as a scale in the - ! expression for mixing length used in MEKE-derived diffusivity. -MEKE_COLD_START = False ! [Boolean] default = False - ! If true, initialize EKE to zero. Otherwise a local equilibrium solution is - ! used as an initial condition for EKE. -MEKE_BACKSCAT_RO_C = 0.0 ! [nondim] default = 0.0 - ! The coefficient in the Rossby number function for scaling the biharmonic - ! frictional energy source. Setting to non-zero enables the Rossby number - ! function. -MEKE_BACKSCAT_RO_POW = 0.0 ! [nondim] default = 0.0 - ! The power in the Rossby number function for scaling the biharmonic frictional - ! energy source. -MEKE_ADVECTION_FACTOR = 0.0 ! [nondim] default = 0.0 - ! A scale factor in front of advection of eddy energy. Zero turns advection off. - ! Using unity would be normal but other values could accommodate a mismatch - ! between the advecting barotropic flow and the vertical structure of MEKE. -MEKE_TOPOGRAPHIC_BETA = 0.0 ! [nondim] default = 0.0 - ! A scale factor to determine how much topographic beta is weighed in computing - ! beta in the expression of Rhines scale. Use 1 if full topographic beta effect - ! is considered; use 0 if it's completely ignored. -CDRAG = 0.003 ! [nondim] default = 0.003 - ! CDRAG is the drag coefficient relating the magnitude of the velocity field to - ! the bottom stress. -MEKE_CDRAG = 0.003 ! [nondim] default = 0.003 - ! Drag coefficient relating the magnitude of the velocity field to the bottom - ! stress in MEKE. - -! === module MOM_lateral_mixing_coeffs === -USE_VARIABLE_MIXING = True ! [Boolean] default = False - ! If true, the variable mixing code will be called. This allows diagnostics to - ! be created even if the scheme is not used. If KHTR_SLOPE_CFF>0 or - ! KhTh_Slope_Cff>0, this is set to true regardless of what is in the parameter - ! file. -USE_VISBECK = False ! [Boolean] default = False - ! If true, use the Visbeck et al. (1997) formulation for - ! thickness diffusivity. -RESOLN_SCALED_KH = True ! [Boolean] default = False - ! If true, the Laplacian lateral viscosity is scaled away when the first - ! baroclinic deformation radius is well resolved. -DEPTH_SCALED_KHTH = False ! [Boolean] default = False - ! If true, KHTH is scaled away when the depth is shallowerthan a reference - ! depth: KHTH = MIN(1,H/H0)**N * KHTH, where H0 is a reference depth, controlled - ! via DEPTH_SCALED_KHTH_H0, and the exponent (N) is controlled via - ! DEPTH_SCALED_KHTH_EXP. -RESOLN_SCALED_KHTH = True ! [Boolean] default = False - ! If true, the interface depth diffusivity is scaled away when the first - ! baroclinic deformation radius is well resolved. -RESOLN_SCALED_KHTR = False ! [Boolean] default = False - ! If true, the epipycnal tracer diffusivity is scaled away when the first - ! baroclinic deformation radius is well resolved. -RESOLN_USE_EBT = False ! [Boolean] default = False - ! If true, uses the equivalent barotropic wave speed instead of first baroclinic - ! wave for calculating the resolution fn. -KHTH_USE_EBT_STRUCT = False ! [Boolean] default = False - ! If true, uses the equivalent barotropic structure as the vertical structure of - ! thickness diffusivity. -KHTH_SLOPE_CFF = 0.0 ! [nondim] default = 0.0 - ! The nondimensional coefficient in the Visbeck formula for the interface depth - ! diffusivity -KHTR_SLOPE_CFF = 0.0 ! [nondim] default = 0.0 - ! The nondimensional coefficient in the Visbeck formula for the epipycnal tracer - ! diffusivity -USE_STORED_SLOPES = True ! [Boolean] default = False - ! If true, the isopycnal slopes are calculated once and stored for re-use. This - ! uses more memory but avoids calling the equation of state more times than - ! should be necessary. -VERY_SMALL_FREQUENCY = 1.0E-17 ! [s-1] default = 1.0E-17 - ! A miniscule frequency that is used to avoid division by 0. The default value - ! is roughly (pi / (the age of the universe)). -KD_SMOOTH = 1.0E-06 ! [m2 s-1] default = 1.0E-06 - ! A diapycnal diffusivity that is used to interpolate more sensible values of T - ! & S into thin layers. -VARMIX_KTOP = 2 ! [nondim] default = 2 - ! The layer number at which to start vertical integration of S*N for purposes of - ! finding the Eady growth rate. -KH_RES_SCALE_COEF = 1.0 ! [nondim] default = 1.0 - ! A coefficient that determines how KhTh is scaled away if RESOLN_SCALED_... is - ! true, as F = 1 / (1 + (KH_RES_SCALE_COEF*Rd/dx)^KH_RES_FN_POWER). -KH_RES_FN_POWER = 2 ! [nondim] default = 2 - ! The power of dx/Ld in the Kh resolution function. Any positive integer may be - ! used, although even integers are more efficient to calculate. Setting this - ! greater than 100 results in a step-function being used. -VISC_RES_SCALE_COEF = 1.0 ! [nondim] default = 1.0 - ! A coefficient that determines how Kh is scaled away if RESOLN_SCALED_... is - ! true, as F = 1 / (1 + (KH_RES_SCALE_COEF*Rd/dx)^KH_RES_FN_POWER). This - ! function affects lateral viscosity, Kh, and not KhTh. -VISC_RES_FN_POWER = 2 ! [nondim] default = 2 - ! The power of dx/Ld in the Kh resolution function. Any positive integer may be - ! used, although even integers are more efficient to calculate. Setting this - ! greater than 100 results in a step-function being used. This function affects - ! lateral viscosity, Kh, and not KhTh. -INTERPOLATE_RES_FN = False ! [Boolean] default = False - ! If true, interpolate the resolution function to the velocity points from the - ! thickness points; otherwise interpolate the wave speed and calculate the - ! resolution function independently at each point. -GILL_EQUATORIAL_LD = True ! [Boolean] default = True - ! If true, uses Gill's definition of the baroclinic equatorial deformation - ! radius, otherwise, if false, use Pedlosky's definition. These definitions - ! differ by a factor of 2 in front of the beta term in the denominator. Gill's - ! is the more appropriate definition. -INTERNAL_WAVE_SPEED_TOL = 0.001 ! [nondim] default = 0.001 - ! The fractional tolerance for finding the wave speeds. -INTERNAL_WAVE_SPEED_MIN = 0.0 ! [m s-1] default = 0.0 - ! A floor in the first mode speed below which 0 used instead. -INTERNAL_WAVE_SPEED_BETTER_EST = False ! [Boolean] default = False - ! If true, use a more robust estimate of the first mode wave speed as the - ! starting point for iterations. -USE_QG_LEITH_GM = False ! [Boolean] default = False - ! If true, use the QG Leith viscosity as the GM coefficient. - -! === module MOM_set_visc === -SET_VISC_2018_ANSWERS = False ! [Boolean] default = False - ! If true, use the order of arithmetic and expressions that recover the answers - ! from the end of 2018. Otherwise, use updated and more robust forms of the - ! same expressions. -BOTTOMDRAGLAW = True ! [Boolean] default = True - ! If true, the bottom stress is calculated with a drag law of the form - ! c_drag*|u|*u. The velocity magnitude may be an assumed value or it may be - ! based on the actual velocity in the bottommost HBBL, depending on LINEAR_DRAG. -CHANNEL_DRAG = True ! [Boolean] default = False - ! If true, the bottom drag is exerted directly on each layer proportional to the - ! fraction of the bottom it overlies. -LINEAR_DRAG = False ! [Boolean] default = False - ! If LINEAR_DRAG and BOTTOMDRAGLAW are defined the drag law is - ! cdrag*DRAG_BG_VEL*u. -DOUBLE_DIFFUSION = False ! [Boolean] default = False - ! If true, increase diffusivites for temperature or salt based on - ! double-diffusive parameterization from MOM4/KPP. -PRANDTL_TURB = 1.0 ! [nondim] default = 1.0 - ! The turbulent Prandtl number applied to shear instability. -DYNAMIC_VISCOUS_ML = False ! [Boolean] default = False - ! If true, use a bulk Richardson number criterion to determine the mixed layer - ! thickness for viscosity. -HBBL = 10.0 ! [m] - ! The thickness of a bottom boundary layer with a viscosity of KVBBL if - ! BOTTOMDRAGLAW is not defined, or the thickness over which near-bottom - ! velocities are averaged for the drag law if BOTTOMDRAGLAW is defined but - ! LINEAR_DRAG is not. -BBL_USE_TIDAL_BG = False ! [Boolean] default = False - ! Flag to use the tidal RMS amplitude in place of constant background velocity - ! for computing u* in the BBL. This flag is only used when BOTTOMDRAGLAW is true - ! and LINEAR_DRAG is false. -DRAG_BG_VEL = 0.1 ! [m s-1] default = 0.0 - ! DRAG_BG_VEL is either the assumed bottom velocity (with LINEAR_DRAG) or an - ! unresolved velocity that is combined with the resolved velocity to estimate - ! the velocity magnitude. DRAG_BG_VEL is only used when BOTTOMDRAGLAW is - ! defined. -BBL_USE_EOS = True ! [Boolean] default = False - ! If true, use the equation of state in determining the properties of the bottom - ! boundary layer. Otherwise use the layer target potential densities. -BBL_THICK_MIN = 0.1 ! [m] default = 0.0 - ! The minimum bottom boundary layer thickness that can be used with - ! BOTTOMDRAGLAW. This might be Kv/(cdrag*drag_bg_vel) to give Kv as the minimum - ! near-bottom viscosity. -HTBL_SHELF_MIN = 0.1 ! [m] default = 0.1 - ! The minimum top boundary layer thickness that can be used with BOTTOMDRAGLAW. - ! This might be Kv/(cdrag*drag_bg_vel) to give Kv as the minimum near-top - ! viscosity. -HTBL_SHELF = 10.0 ! [m] default = 10.0 - ! The thickness over which near-surface velocities are averaged for the drag law - ! under an ice shelf. By default this is the same as HBBL -KV = 1.0E-04 ! [m2 s-1] - ! The background kinematic viscosity in the interior. The molecular value, ~1e-6 - ! m2 s-1, may be used. -KV_BBL_MIN = 1.0E-04 ! [m2 s-1] default = 1.0E-04 - ! The minimum viscosities in the bottom boundary layer. -KV_TBL_MIN = 1.0E-04 ! [m2 s-1] default = 1.0E-04 - ! The minimum viscosities in the top boundary layer. -SMAG_CONST_CHANNEL = 0.15 ! [nondim] default = 0.15 - ! The nondimensional Laplacian Smagorinsky constant used in calculating the - ! channel drag if it is enabled. The default is to use the same value as - ! SMAG_LAP_CONST if it is defined, or 0.15 if it is not. The value used is also - ! 0.15 if the specified value is negative. - -! === module MOM_thickness_diffuse === -KHTH = 600.0 ! [m2 s-1] default = 0.0 - ! The background horizontal thickness diffusivity. -KHTH_MIN = 0.0 ! [m2 s-1] default = 0.0 - ! The minimum horizontal thickness diffusivity. -KHTH_MAX = 900.0 ! [m2 s-1] default = 0.0 - ! The maximum horizontal thickness diffusivity. -KHTH_MAX_CFL = 0.8 ! [nondimensional] default = 0.8 - ! The maximum value of the local diffusive CFL ratio that is permitted for the - ! thickness diffusivity. 1.0 is the marginally unstable value in a pure layered - ! model, but much smaller numbers (e.g. 0.1) seem to work better for ALE-based - ! models. -DETANGLE_INTERFACES = False ! [Boolean] default = False - ! If defined add 3-d structured enhanced interface height diffusivities to - ! horizontally smooth jagged layers. -KHTH_SLOPE_MAX = 0.01 ! [nondim] default = 0.01 - ! A slope beyond which the calculated isopycnal slope is not reliable and is - ! scaled away. -KHTH_USE_FGNV_STREAMFUNCTION = True ! [Boolean] default = False - ! If true, use the streamfunction formulation of Ferrari et al., 2010, which - ! effectively emphasizes graver vertical modes by smoothing in the vertical. -FGNV_FILTER_SCALE = 1.0 ! [nondim] default = 1.0 - ! A coefficient scaling the vertical smoothing term in the Ferrari et al., 2010, - ! streamfunction formulation. -FGNV_C_MIN = 0.01 ! [m s-1] default = 0.0 - ! A minium wave speed used in the Ferrari et al., 2010, streamfunction - ! formulation. -FGNV_STRAT_FLOOR = 1.0E-15 ! [nondim] default = 1.0E-15 - ! A floor for Brunt-Vasaila frequency in the Ferrari et al., 2010, - ! streamfunction formulation, expressed as a fraction of planetary rotation, - ! OMEGA. This should be tiny but non-zero to avoid degeneracy. -USE_KH_IN_MEKE = False ! [Boolean] default = False - ! If true, uses the thickness diffusivity calculated here to diffuse MEKE. -USE_GME = False ! [Boolean] default = False - ! If true, use the GM+E backscatter scheme in association with the Gent and - ! McWilliams parameterization. -USE_GM_WORK_BUG = False ! [Boolean] default = False - ! If true, compute the top-layer work tendency on the u-grid with the incorrect - ! sign, for legacy reproducibility. - -! === module MOM_dynamics_split_RK2 === -TIDES = True ! [Boolean] default = False - ! If true, apply tidal momentum forcing. -BE = 0.6 ! [nondim] default = 0.6 - ! If SPLIT is true, BE determines the relative weighting of a 2nd-order - ! Runga-Kutta baroclinic time stepping scheme (0.5) and a backward Euler scheme - ! (1) that is used for the Coriolis and inertial terms. BE may be from 0.5 to - ! 1, but instability may occur near 0.5. BE is also applicable if SPLIT is false - ! and USE_RK2 is true. -BEGW = 0.0 ! [nondim] default = 0.0 - ! If SPLIT is true, BEGW is a number from 0 to 1 that controls the extent to - ! which the treatment of gravity waves is forward-backward (0) or simulated - ! backward Euler (1). 0 is almost always used. If SPLIT is false and USE_RK2 is - ! true, BEGW can be between 0 and 0.5 to damp gravity waves. -SPLIT_BOTTOM_STRESS = False ! [Boolean] default = False - ! If true, provide the bottom stress calculated by the vertical viscosity to the - ! barotropic solver. -BT_USE_LAYER_FLUXES = True ! [Boolean] default = True - ! If true, use the summed layered fluxes plus an adjustment due to the change in - ! the barotropic velocity in the barotropic continuity equation. - -! === module MOM_continuity === -CONTINUITY_SCHEME = "PPM" ! default = "PPM" - ! CONTINUITY_SCHEME selects the discretization for the continuity solver. The - ! only valid value currently is: - ! PPM - use a positive-definite (or monotonic) - ! piecewise parabolic reconstruction solver. - -! === module MOM_continuity_PPM === -MONOTONIC_CONTINUITY = False ! [Boolean] default = False - ! If true, CONTINUITY_PPM uses the Colella and Woodward monotonic limiter. The - ! default (false) is to use a simple positive definite limiter. -SIMPLE_2ND_PPM_CONTINUITY = False ! [Boolean] default = False - ! If true, CONTINUITY_PPM uses a simple 2nd order (arithmetic mean) - ! interpolation of the edge values. This may give better PV conservation - ! properties. While it formally reduces the accuracy of the continuity solver - ! itself in the strongly advective limit, it does not reduce the overall order - ! of accuracy of the dynamic core. -UPWIND_1ST_CONTINUITY = False ! [Boolean] default = False - ! If true, CONTINUITY_PPM becomes a 1st-order upwind continuity solver. This - ! scheme is highly diffusive but may be useful for debugging or in single-column - ! mode where its minimal stencil is useful. -ETA_TOLERANCE = 1.0E-06 ! [m] default = 2.5E-09 - ! The tolerance for the differences between the barotropic and baroclinic - ! estimates of the sea surface height due to the fluxes through each face. The - ! total tolerance for SSH is 4 times this value. The default is - ! 0.5*NK*ANGSTROM, and this should not be set less than about - ! 10^-15*MAXIMUM_DEPTH. -ETA_TOLERANCE_AUX = 1.0E-06 ! [m] default = 1.0E-06 - ! The tolerance for free-surface height discrepancies between the barotropic - ! solution and the sum of the layer thicknesses when calculating the auxiliary - ! corrected velocities. By default, this is the same as ETA_TOLERANCE, but can - ! be made larger for efficiency. -VELOCITY_TOLERANCE = 1.0E-04 ! [m s-1] default = 3.0E+08 - ! The tolerance for barotropic velocity discrepancies between the barotropic - ! solution and the sum of the layer thicknesses. -CONT_PPM_AGGRESS_ADJUST = False ! [Boolean] default = False - ! If true, allow the adjusted velocities to have a relative CFL change up to - ! 0.5. -CONT_PPM_VOLUME_BASED_CFL = False ! [Boolean] default = False - ! If true, use the ratio of the open face lengths to the tracer cell areas when - ! estimating CFL numbers. The default is set by CONT_PPM_AGGRESS_ADJUST. -CONTINUITY_CFL_LIMIT = 0.5 ! [nondim] default = 0.5 - ! The maximum CFL of the adjusted velocities. -CONT_PPM_BETTER_ITER = True ! [Boolean] default = True - ! If true, stop corrective iterations using a velocity based criterion and only - ! stop if the iteration is better than all predecessors. -CONT_PPM_USE_VISC_REM_MAX = True ! [Boolean] default = True - ! If true, use more appropriate limiting bounds for corrections in strongly - ! viscous columns. -CONT_PPM_MARGINAL_FACE_AREAS = True ! [Boolean] default = True - ! If true, use the marginal face areas from the continuity solver for use as the - ! weights in the barotropic solver. Otherwise use the transport averaged areas. - -! === module MOM_CoriolisAdv === -NOSLIP = False ! [Boolean] default = False - ! If true, no slip boundary conditions are used; otherwise free slip boundary - ! conditions are assumed. The implementation of the free slip BCs on a C-grid is - ! much cleaner than the no slip BCs. The use of free slip BCs is strongly - ! encouraged, and no slip BCs are not used with the biharmonic viscosity. -CORIOLIS_EN_DIS = False ! [Boolean] default = False - ! If true, two estimates of the thickness fluxes are used to estimate the - ! Coriolis term, and the one that dissipates energy relative to the other one is - ! used. -CORIOLIS_SCHEME = "SADOURNY75_ENERGY" ! default = "SADOURNY75_ENERGY" - ! CORIOLIS_SCHEME selects the discretization for the Coriolis terms. Valid - ! values are: - ! SADOURNY75_ENERGY - Sadourny, 1975; energy cons. - ! ARAKAWA_HSU90 - Arakawa & Hsu, 1990 - ! SADOURNY75_ENSTRO - Sadourny, 1975; enstrophy cons. - ! ARAKAWA_LAMB81 - Arakawa & Lamb, 1981; En. + Enst. - ! ARAKAWA_LAMB_BLEND - A blend of Arakawa & Lamb with - ! Arakawa & Hsu and Sadourny energy -BOUND_CORIOLIS = True ! [Boolean] default = False - ! If true, the Coriolis terms at u-points are bounded by the four estimates of - ! (f+rv)v from the four neighboring v-points, and similarly at v-points. This - ! option would have no effect on the SADOURNY Coriolis scheme if it were - ! possible to use centered difference thickness fluxes. -KE_SCHEME = "KE_ARAKAWA" ! default = "KE_ARAKAWA" - ! KE_SCHEME selects the discretization for acceleration due to the kinetic - ! energy gradient. Valid values are: - ! KE_ARAKAWA, KE_SIMPLE_GUDONOV, KE_GUDONOV -PV_ADV_SCHEME = "PV_ADV_CENTERED" ! default = "PV_ADV_CENTERED" - ! PV_ADV_SCHEME selects the discretization for PV advection. Valid values are: - ! PV_ADV_CENTERED - centered (aka Sadourny, 75) - ! PV_ADV_UPWIND1 - upwind, first order - -! === module MOM_tidal_forcing === -TIDE_M2 = True ! [Boolean] default = False - ! If true, apply tidal momentum forcing at the M2 frequency. This is only used - ! if TIDES is true. -TIDE_S2 = False ! [Boolean] default = False - ! If true, apply tidal momentum forcing at the S2 frequency. This is only used - ! if TIDES is true. -TIDE_N2 = False ! [Boolean] default = False - ! If true, apply tidal momentum forcing at the N2 frequency. This is only used - ! if TIDES is true. -TIDE_K2 = False ! [Boolean] default = False - ! If true, apply tidal momentum forcing at the K2 frequency. This is only used - ! if TIDES is true. -TIDE_K1 = False ! [Boolean] default = False - ! If true, apply tidal momentum forcing at the K1 frequency. This is only used - ! if TIDES is true. -TIDE_O1 = False ! [Boolean] default = False - ! If true, apply tidal momentum forcing at the O1 frequency. This is only used - ! if TIDES is true. -TIDE_P1 = False ! [Boolean] default = False - ! If true, apply tidal momentum forcing at the P1 frequency. This is only used - ! if TIDES is true. -TIDE_Q1 = False ! [Boolean] default = False - ! If true, apply tidal momentum forcing at the Q1 frequency. This is only used - ! if TIDES is true. -TIDE_MF = False ! [Boolean] default = False - ! If true, apply tidal momentum forcing at the MF frequency. This is only used - ! if TIDES is true. -TIDE_MM = False ! [Boolean] default = False - ! If true, apply tidal momentum forcing at the MM frequency. This is only used - ! if TIDES is true. -TIDAL_SAL_FROM_FILE = False ! [Boolean] default = False - ! If true, read the tidal self-attraction and loading from input files, - ! specified by TIDAL_INPUT_FILE. This is only used if TIDES is true. -USE_PREVIOUS_TIDES = False ! [Boolean] default = False - ! If true, use the SAL from the previous iteration of the tides to facilitate - ! convergent iteration. This is only used if TIDES is true. -TIDE_USE_SAL_SCALAR = True ! [Boolean] default = True - ! If true and TIDES is true, use the scalar approximation when calculating - ! self-attraction and loading. -TIDE_SAL_SCALAR_VALUE = 0.094 ! [m m-1] - ! The constant of proportionality between sea surface height (really it should - ! be bottom pressure) anomalies and bottom geopotential anomalies. This is only - ! used if TIDES and TIDE_USE_SAL_SCALAR are true. -TIDE_M2_FREQ = 1.405189E-04 ! [s-1] default = 1.405189E-04 - ! Frequency of the M2 tidal constituent. This is only used if TIDES and TIDE_M2 - ! are true. -TIDE_M2_AMP = 0.242334 ! [m] default = 0.242334 - ! Amplitude of the M2 tidal constituent. This is only used if TIDES and TIDE_M2 - ! are true. -TIDE_M2_PHASE_T0 = 0.0 ! [radians] default = 0.0 - ! Phase of the M2 tidal constituent at time 0. This is only used if TIDES and - ! TIDE_M2 are true. - -! === module MOM_PressureForce === -ANALYTIC_FV_PGF = True ! [Boolean] default = True - ! If true the pressure gradient forces are calculated with a finite volume form - ! that analytically integrates the equations of state in pressure to avoid any - ! possibility of numerical thermobaric instability, as described in Adcroft et - ! al., O. Mod. (2008). - -! === module MOM_PressureForce_AFV === -MASS_WEIGHT_IN_PRESSURE_GRADIENT = True ! [Boolean] default = False - ! If true, use mass weighting when interpolating T/S for integrals near the - ! bathymetry in AFV pressure gradient calculations. -RECONSTRUCT_FOR_PRESSURE = True ! [Boolean] default = True - ! If True, use vertical reconstruction of T & S within the integrals of the FV - ! pressure gradient calculation. If False, use the constant-by-layer algorithm. - ! The default is set by USE_REGRIDDING. -PRESSURE_RECONSTRUCTION_SCHEME = 1 ! default = 1 - ! Order of vertical reconstruction of T/S to use in the integrals within the FV - ! pressure gradient calculation. - ! 0: PCM or no reconstruction. - ! 1: PLM reconstruction. - ! 2: PPM reconstruction. -BOUNDARY_EXTRAPOLATION_PRESSURE = True ! [Boolean] default = True - ! If true, the reconstruction of T & S for pressure in boundary cells is - ! extrapolated, rather than using PCM in these cells. If true, the same order - ! polynomial is used as is used for the interior cells. - -! === module MOM_hor_visc === -HOR_VISC_2018_ANSWERS = False ! [Boolean] default = False - ! If true, use the order of arithmetic and expressions that recover the answers - ! from the end of 2018. Otherwise, use updated and more robust forms of the - ! same expressions. -LAPLACIAN = True ! [Boolean] default = False - ! If true, use a Laplacian horizontal viscosity. -KH = 0.0 ! [m2 s-1] default = 0.0 - ! The background Laplacian horizontal viscosity. -KH_BG_MIN = 0.0 ! [m2 s-1] default = 0.0 - ! The minimum value allowed for Laplacian horizontal viscosity, KH. -KH_VEL_SCALE = 0.01 ! [m s-1] default = 0.0 - ! The velocity scale which is multiplied by the grid spacing to calculate the - ! Laplacian viscosity. The final viscosity is the largest of this scaled - ! viscosity, the Smagorinsky and Leith viscosities, and KH. -KH_SIN_LAT = 0.0 ! [m2 s-1] default = 0.0 - ! The amplitude of a latitudinally-dependent background viscosity of the form - ! KH_SIN_LAT*(SIN(LAT)**KH_PWR_OF_SINE). -SMAGORINSKY_KH = False ! [Boolean] default = False - ! If true, use a Smagorinsky nonlinear eddy viscosity. -LEITH_KH = False ! [Boolean] default = False - ! If true, use a Leith nonlinear eddy viscosity. -MODIFIED_LEITH = False ! [Boolean] default = False - ! If true, add a term to Leith viscosity which is proportional to the gradient - ! of divergence. -RES_SCALE_MEKE_VISC = False ! [Boolean] default = False - ! If true, the viscosity contribution from MEKE is scaled by the resolution - ! function. -BOUND_KH = True ! [Boolean] default = True - ! If true, the Laplacian coefficient is locally limited to be stable. -BETTER_BOUND_KH = True ! [Boolean] default = True - ! If true, the Laplacian coefficient is locally limited to be stable with a - ! better bounding than just BOUND_KH. -ANISOTROPIC_VISCOSITY = False ! [Boolean] default = False - ! If true, allow anistropic viscosity in the Laplacian horizontal viscosity. -ADD_LES_VISCOSITY = False ! [Boolean] default = False - ! If true, adds the viscosity from Smagorinsky and Leith to the background - ! viscosity instead of taking the maximum. -BIHARMONIC = True ! [Boolean] default = True - ! If true, use a biharmonic horizontal viscosity. BIHARMONIC may be used with - ! LAPLACIAN. -AH = 0.0 ! [m4 s-1] default = 0.0 - ! The background biharmonic horizontal viscosity. -AH_VEL_SCALE = 0.05 ! [m s-1] default = 0.0 - ! The velocity scale which is multiplied by the cube of the grid spacing to - ! calculate the biharmonic viscosity. The final viscosity is the largest of this - ! scaled viscosity, the Smagorinsky and Leith viscosities, and AH. -AH_TIME_SCALE = 0.0 ! [s] default = 0.0 - ! A time scale whose inverse is multiplied by the fourth power of the grid - ! spacing to calculate biharmonic viscosity. The final viscosity is the largest - ! of all viscosity formulations in use. 0.0 means that it's not used. -SMAGORINSKY_AH = True ! [Boolean] default = False - ! If true, use a biharmonic Smagorinsky nonlinear eddy viscosity. -LEITH_AH = False ! [Boolean] default = False - ! If true, use a biharmonic Leith nonlinear eddy viscosity. -BOUND_AH = True ! [Boolean] default = True - ! If true, the biharmonic coefficient is locally limited to be stable. -BETTER_BOUND_AH = True ! [Boolean] default = True - ! If true, the biharmonic coefficient is locally limited to be stable with a - ! better bounding than just BOUND_AH. -SMAG_BI_CONST = 0.06 ! [nondim] default = 0.0 - ! The nondimensional biharmonic Smagorinsky constant, typically 0.015 - 0.06. -BOUND_CORIOLIS_BIHARM = True ! [Boolean] default = True - ! If true use a viscosity that increases with the square of the velocity shears, - ! so that the resulting viscous drag is of comparable magnitude to the Coriolis - ! terms when the velocity differences between adjacent grid points is - ! 0.5*BOUND_CORIOLIS_VEL. The default is the value of BOUND_CORIOLIS (or - ! false). -BOUND_CORIOLIS_VEL = 6.0 ! [m s-1] default = 6.0 - ! The velocity scale at which BOUND_CORIOLIS_BIHARM causes the biharmonic drag - ! to have comparable magnitude to the Coriolis acceleration. The default is set - ! by MAXVEL. -USE_LAND_MASK_FOR_HVISC = True ! [Boolean] default = True - ! If true, use Use the land mask for the computation of thicknesses at velocity - ! locations. This eliminates the dependence on arbitrary values over land or - ! outside of the domain. -HORVISC_BOUND_COEF = 0.8 ! [nondim] default = 0.8 - ! The nondimensional coefficient of the ratio of the viscosity bounds to the - ! theoretical maximum for stability without considering other terms. -USE_KH_BG_2D = False ! [Boolean] default = False - ! If true, read a file containing 2-d background harmonic viscosities. The final - ! viscosity is the maximum of the other terms and this background value. - -! === module MOM_vert_friction === -VERT_FRICTION_2018_ANSWERS = False ! [Boolean] default = False - ! If true, use the order of arithmetic and expressions that recover the answers - ! from the end of 2018. Otherwise, use expressions that do not use an arbitrary - ! hard-coded maximum viscous coupling coefficient between layers. -DIRECT_STRESS = False ! [Boolean] default = False - ! If true, the wind stress is distributed over the topmost HMIX_STRESS of fluid - ! (like in HYCOM), and KVML may be set to a very small value. -HARMONIC_VISC = False ! [Boolean] default = False - ! If true, use the harmonic mean thicknesses for calculating the vertical - ! viscosity. -HARMONIC_BL_SCALE = 0.0 ! [nondim] default = 0.0 - ! A scale to determine when water is in the boundary layers based solely on - ! harmonic mean thicknesses for the purpose of determining the extent to which - ! the thicknesses used in the viscosities are upwinded. -HMIX_FIXED = 0.5 ! [m] - ! The prescribed depth over which the near-surface viscosity and diffusivity are - ! elevated when the bulk mixed layer is not used. -KVML = 1.0E-04 ! [m2 s-1] default = 1.0E-04 - ! The kinematic viscosity in the mixed layer. A typical value is ~1e-2 m2 s-1. - ! KVML is not used if BULKMIXEDLAYER is true. The default is set by KV. -MAXVEL = 6.0 ! [m s-1] default = 3.0E+08 - ! The maximum velocity allowed before the velocity components are truncated. -CFL_BASED_TRUNCATIONS = True ! [Boolean] default = True - ! If true, base truncations on the CFL number, and not an absolute speed. -CFL_TRUNCATE = 0.5 ! [nondim] default = 0.5 - ! The value of the CFL number that will cause velocity components to be - ! truncated; instability can occur past 0.5. -CFL_REPORT = 0.5 ! [nondim] default = 0.5 - ! The value of the CFL number that causes accelerations to be reported; the - ! default is CFL_TRUNCATE. -CFL_TRUNCATE_RAMP_TIME = 7200.0 ! [s] default = 0.0 - ! The time over which the CFL truncation value is ramped up at the beginning of - ! the run. -CFL_TRUNCATE_START = 0.0 ! [nondim] default = 0.0 - ! The start value of the truncation CFL number used when ramping up CFL_TRUNC. -STOKES_MIXING_COMBINED = False ! [Boolean] default = False - ! Flag to use Stokes drift Mixing via the Lagrangian current (Eulerian plus - ! Stokes drift). Still needs work and testing, so not recommended for use. -VEL_UNDERFLOW = 0.0 ! [m s-1] default = 0.0 - ! A negligibly small velocity magnitude below which velocity components are set - ! to 0. A reasonable value might be 1e-30 m/s, which is less than an Angstrom - ! divided by the age of the universe. - -! === module MOM_PointAccel === - -! === module MOM_barotropic === -BOUND_BT_CORRECTION = True ! [Boolean] default = False - ! If true, the corrective pseudo mass-fluxes into the barotropic solver are - ! limited to values that require less than maxCFL_BT_cont to be accommodated. -BT_CONT_CORR_BOUNDS = True ! [Boolean] default = True - ! If true, and BOUND_BT_CORRECTION is true, use the BT_cont_type variables to - ! set limits determined by MAXCFL_BT_CONT on the CFL number of the velocities - ! that are likely to be driven by the corrective mass fluxes. -ADJUST_BT_CONT = False ! [Boolean] default = False - ! If true, adjust the curve fit to the BT_cont type that is used by the - ! barotropic solver to match the transport about which the flow is being - ! linearized. -GRADUAL_BT_ICS = False ! [Boolean] default = False - ! If true, adjust the initial conditions for the barotropic solver to the values - ! from the layered solution over a whole timestep instead of instantly. This is - ! a decent approximation to the inclusion of sum(u dh_dt) while also correcting - ! for truncation errors. -BT_USE_VISC_REM_U_UH0 = False ! [Boolean] default = False - ! If true, use the viscous remnants when estimating the barotropic velocities - ! that were used to calculate uh0 and vh0. False is probably the better choice. -USE_BT_CONT_TYPE = True ! [Boolean] default = True - ! If true, use a structure with elements that describe effective face areas from - ! the summed continuity solver as a function the barotropic flow in coupling - ! between the barotropic and baroclinic flow. This is only used if SPLIT is - ! true. -NONLINEAR_BT_CONTINUITY = False ! [Boolean] default = False - ! If true, use nonlinear transports in the barotropic continuity equation. This - ! does not apply if USE_BT_CONT_TYPE is true. -BT_PROJECT_VELOCITY = True ! [Boolean] default = False - ! If true, step the barotropic velocity first and project out the velocity - ! tendency by 1+BEBT when calculating the transport. The default (false) is to - ! use a predictor continuity step to find the pressure field, and then to do a - ! corrector continuity step using a weighted average of the old and new - ! velocities, with weights of (1-BEBT) and BEBT. -BT_NONLIN_STRESS = False ! [Boolean] default = False - ! If true, use the full depth of the ocean at the start of the barotropic step - ! when calculating the surface stress contribution to the barotropic - ! acclerations. Otherwise use the depth based on bathyT. -DYNAMIC_SURFACE_PRESSURE = False ! [Boolean] default = False - ! If true, add a dynamic pressure due to a viscous ice shelf, for instance. -BT_CORIOLIS_SCALE = 1.0 ! [nondim] default = 1.0 - ! A factor by which the barotropic Coriolis anomaly terms are scaled. -BAROTROPIC_2018_ANSWERS = False ! [Boolean] default = False - ! If true, use expressions for the barotropic solver that recover the answers - ! from the end of 2018. Otherwise, use more efficient or general expressions. -SADOURNY = True ! [Boolean] default = True - ! If true, the Coriolis terms are discretized with the Sadourny (1975) energy - ! conserving scheme, otherwise the Arakawa & Hsu scheme is used. If the - ! internal deformation radius is not resolved, the Sadourny scheme should - ! probably be used. -BT_THICK_SCHEME = "FROM_BT_CONT" ! default = "FROM_BT_CONT" - ! A string describing the scheme that is used to set the open face areas used - ! for barotropic transport and the relative weights of the accelerations. Valid - ! values are: - ! ARITHMETIC - arithmetic mean layer thicknesses - ! HARMONIC - harmonic mean layer thicknesses - ! HYBRID (the default) - use arithmetic means for - ! layers above the shallowest bottom, the harmonic - ! mean for layers below, and a weighted average for - ! layers that straddle that depth - ! FROM_BT_CONT - use the average thicknesses kept - ! in the h_u and h_v fields of the BT_cont_type -BT_STRONG_DRAG = False ! [Boolean] default = False - ! If true, use a stronger estimate of the retarding effects of strong bottom - ! drag, by making it implicit with the barotropic time-step instead of implicit - ! with the baroclinic time-step and dividing by the number of barotropic steps. -BT_LINEAR_WAVE_DRAG = False ! [Boolean] default = False - ! If true, apply a linear drag to the barotropic velocities, using rates set by - ! lin_drag_u & _v divided by the depth of the ocean. This was introduced to - ! facilitate tide modeling. -CLIP_BT_VELOCITY = False ! [Boolean] default = False - ! If true, limit any velocity components that exceed CFL_TRUNCATE. This should - ! only be used as a desperate debugging measure. -MAXCFL_BT_CONT = 0.25 ! [nondim] default = 0.25 - ! The maximum permitted CFL number associated with the barotropic accelerations - ! from the summed velocities times the time-derivatives of thicknesses. -DT_BT_FILTER = -0.25 ! [sec or nondim] default = -0.25 - ! A time-scale over which the barotropic mode solutions are filtered, in seconds - ! if positive, or as a fraction of DT if negative. When used this can never be - ! taken to be longer than 2*dt. Set this to 0 to apply no filtering. -G_BT_EXTRA = 0.0 ! [nondim] default = 0.0 - ! A nondimensional factor by which gtot is enhanced. -SSH_EXTRA = 10.0 ! [m] default = 10.0 - ! An estimate of how much higher SSH might get, for use in calculating the safe - ! external wave speed. The default is the minimum of 10 m or 5% of - ! MAXIMUM_DEPTH. -LINEARIZED_BT_CORIOLIS = True ! [Boolean] default = True - ! If true use the bottom depth instead of the total water column thickness in - ! the barotropic Coriolis term calculations. -BEBT = 0.2 ! [nondim] default = 0.1 - ! BEBT determines whether the barotropic time stepping uses the forward-backward - ! time-stepping scheme or a backward Euler scheme. BEBT is valid in the range - ! from 0 (for a forward-backward treatment of nonrotating gravity waves) to 1 - ! (for a backward Euler treatment). In practice, BEBT must be greater than about - ! 0.05. -DTBT = -0.95 ! [s or nondim] default = -0.98 - ! The barotropic time step, in s. DTBT is only used with the split explicit time - ! stepping. To set the time step automatically based the maximum stable value - ! use 0, or a negative value gives the fraction of the stable value. Setting - ! DTBT to 0 is the same as setting it to -0.98. The value of DTBT that will - ! actually be used is an integer fraction of DT, rounding down. -BT_USE_OLD_CORIOLIS_BRACKET_BUG = False ! [Boolean] default = False - ! If True, use an order of operations that is not bitwise rotationally symmetric - ! in the meridional Coriolis term of the barotropic solver. - -! === module MOM_mixed_layer_restrat === -MIXEDLAYER_RESTRAT = True ! [Boolean] default = False - ! If true, a density-gradient dependent re-stratifying flow is imposed in the - ! mixed layer. Can be used in ALE mode without restriction but in layer mode can - ! only be used if BULKMIXEDLAYER is true. -FOX_KEMPER_ML_RESTRAT_COEF = 20.0 ! [nondim] default = 0.0 - ! A nondimensional coefficient that is proportional to the ratio of the - ! deformation radius to the dominant lengthscale of the submesoscale mixed layer - ! instabilities, times the minimum of the ratio of the mesoscale eddy kinetic - ! energy to the large-scale geostrophic kinetic energy or 1 plus the square of - ! the grid spacing over the deformation radius, as detailed by Fox-Kemper et al. - ! (2010) -FOX_KEMPER_ML_RESTRAT_COEF2 = 0.0 ! [nondim] default = 0.0 - ! As for FOX_KEMPER_ML_RESTRAT_COEF but used in a second application of the MLE - ! restratification parameterization. -MLE_FRONT_LENGTH = 0.0 ! [m] default = 0.0 - ! If non-zero, is the frontal-length scale used to calculate the upscaling of - ! buoyancy gradients that is otherwise represented by the parameter - ! FOX_KEMPER_ML_RESTRAT_COEF. If MLE_FRONT_LENGTH is non-zero, it is recommended - ! to set FOX_KEMPER_ML_RESTRAT_COEF=1.0. -MLE_USE_PBL_MLD = False ! [Boolean] default = False - ! If true, the MLE parameterization will use the mixed-layer depth provided by - ! the active PBL parameterization. If false, MLE will estimate a MLD based on a - ! density difference with the surface using the parameter MLE_DENSITY_DIFF. -MLE_MLD_DECAY_TIME = 0.0 ! [s] default = 0.0 - ! The time-scale for a running-mean filter applied to the mixed-layer depth used - ! in the MLE restratification parameterization. When the MLD deepens below the - ! current running-mean the running-mean is instantaneously set to the current - ! MLD. -MLE_MLD_DECAY_TIME2 = 0.0 ! [s] default = 0.0 - ! The time-scale for a running-mean filter applied to the filtered mixed-layer - ! depth used in a second MLE restratification parameterization. When the MLD - ! deepens below the current running-mean the running-mean is instantaneously set - ! to the current MLD. -MLE_DENSITY_DIFF = 0.03 ! [kg/m3] default = 0.03 - ! Density difference used to detect the mixed-layer depth used for the - ! mixed-layer eddy parameterization by Fox-Kemper et al. (2010) -MLE_TAIL_DH = 0.0 ! [nondim] default = 0.0 - ! Fraction by which to extend the mixed-layer restratification depth used for a - ! smoother stream function at the base of the mixed-layer. -MLE_MLD_STRETCH = 1.0 ! [nondim] default = 1.0 - ! A scaling coefficient for stretching/shrinking the MLD used in the MLE scheme. - ! This simply multiplies MLD wherever used. -DIAG_EBT_MONO_N2_COLUMN_FRACTION = 0.0 ! [nondim] default = 0.0 - ! The lower fraction of water column over which N2 is limited as monotonic for - ! the purposes of calculating the equivalent barotropic wave speed. -DIAG_EBT_MONO_N2_DEPTH = -1.0 ! [m] default = -1.0 - ! The depth below which N2 is limited as monotonic for the purposes of - ! calculating the equivalent barotropic wave speed. - -! === module MOM_diabatic_driver === -! The following parameters are used for diabatic processes. -USE_LEGACY_DIABATIC_DRIVER = True ! [Boolean] default = True - ! If true, use a legacy version of the diabatic subroutine. This is temporary - ! and is needed to avoid change in answers. -ENERGETICS_SFC_PBL = True ! [Boolean] default = False - ! If true, use an implied energetics planetary boundary layer scheme to - ! determine the diffusivity and viscosity in the surface boundary layer. -EPBL_IS_ADDITIVE = True ! [Boolean] default = True - ! If true, the diffusivity from ePBL is added to all other diffusivities. - ! Otherwise, the larger of kappa-shear and ePBL diffusivities are used. -INTERNAL_TIDES = False ! [Boolean] default = False - ! If true, use the code that advances a separate set of equations for the - ! internal tide energy density. -MASSLESS_MATCH_TARGETS = True ! [Boolean] default = True - ! If true, the temperature and salinity of massless layers are kept consistent - ! with their target densities. Otherwise the properties of massless layers - ! evolve diffusively to match massive neighboring layers. -AGGREGATE_FW_FORCING = True ! [Boolean] default = True - ! If true, the net incoming and outgoing fresh water fluxes are combined and - ! applied as either incoming or outgoing depending on the sign of the net. If - ! false, the net incoming fresh water flux is added to the model and thereafter - ! the net outgoing is removed from the topmost non-vanished layers of the - ! updated state. -MIX_BOUNDARY_TRACERS = True ! [Boolean] default = True - ! If true, mix the passive tracers in massless layers at the bottom into the - ! interior as though a diffusivity of KD_MIN_TR were operating. -KD_MIN_TR = 2.0E-06 ! [m2 s-1] default = 2.0E-06 - ! A minimal diffusivity that should always be applied to tracers, especially in - ! massless layers near the bottom. The default is 0.1*KD. -KD_BBL_TR = 0.0 ! [m2 s-1] default = 0.0 - ! A bottom boundary layer tracer diffusivity that will allow for explicitly - ! specified bottom fluxes. The entrainment at the bottom is at least - ! sqrt(Kd_BBL_tr*dt) over the same distance. -TRACER_TRIDIAG = False ! [Boolean] default = False - ! If true, use the passive tracer tridiagonal solver for T and S -MINIMUM_FORCING_DEPTH = 0.001 ! [m] default = 0.001 - ! The smallest depth over which forcing can be applied. This only takes effect - ! when near-surface layers become thin relative to this scale, in which case the - ! forcing tendencies scaled down by distributing the forcing over this depth - ! scale. -EVAP_CFL_LIMIT = 0.8 ! [nondim] default = 0.8 - ! The largest fraction of a layer than can be lost to forcing (e.g. evaporation, - ! sea-ice formation) in one time-step. The unused mass loss is passed down - ! through the column. -DIAG_MLD_DENSITY_DIFF = 0.1 ! [kg/m3] default = 0.1 - ! The density difference used to determine a diagnostic mixed layer depth, - ! MLD_user, following the definition of Levitus 1982. The MLD is the depth at - ! which the density is larger than the surface density by the specified amount. -DIAG_DEPTH_SUBML_N2 = 50.0 ! [m] default = 50.0 - ! The distance over which to calculate a diagnostic of the stratification at the - ! base of the mixed layer. - -! === module MOM_CVMix_KPP === -! This is the MOM wrapper to CVMix:KPP -! See http://cvmix.github.io/ -USE_KPP = False ! [Boolean] default = False - ! If true, turns on the [CVMix] KPP scheme of Large et al., 1994, to calculate - ! diffusivities and non-local transport in the OBL. - -! === module MOM_tidal_mixing === -! Vertical Tidal Mixing Parameterization -USE_CVMix_TIDAL = False ! [Boolean] default = False - ! If true, turns on tidal mixing via CVMix -INT_TIDE_DISSIPATION = True ! [Boolean] default = False - ! If true, use an internal tidal dissipation scheme to drive diapycnal mixing, - ! along the lines of St. Laurent et al. (2002) and Simmons et al. (2004). -TIDAL_MIXING_2018_ANSWERS = False ! [Boolean] default = False - ! If true, use the order of arithmetic and expressions that recover the answers - ! from the end of 2018. Otherwise, use updated and more robust forms of the - ! same expressions. -INT_TIDE_PROFILE = "STLAURENT_02" ! default = "STLAURENT_02" - ! INT_TIDE_PROFILE selects the vertical profile of energy dissipation with - ! INT_TIDE_DISSIPATION. Valid values are: - ! STLAURENT_02 - Use the St. Laurent et al exponential - ! decay profile. - ! POLZIN_09 - Use the Polzin WKB-stretched algebraic - ! decay profile. -LEE_WAVE_DISSIPATION = False ! [Boolean] default = False - ! If true, use an lee wave driven dissipation scheme to drive diapycnal mixing, - ! along the lines of Nikurashin (2010) and using the St. Laurent et al. (2002) - ! and Simmons et al. (2004) vertical profile -INT_TIDE_LOWMODE_DISSIPATION = False ! [Boolean] default = False - ! If true, consider mixing due to breaking low modes that have been remotely - ! generated; as with itidal drag on the barotropic tide, use an internal tidal - ! dissipation scheme to drive diapycnal mixing, along the lines of St. Laurent - ! et al. (2002) and Simmons et al. (2004). -INT_TIDE_DECAY_SCALE = 300.3003003003003 ! [m] default = 500.0 - ! The decay scale away from the bottom for tidal TKE with the new coding when - ! INT_TIDE_DISSIPATION is used. -MU_ITIDES = 0.2 ! [nondim] default = 0.2 - ! A dimensionless turbulent mixing efficiency used with INT_TIDE_DISSIPATION, - ! often 0.2. -GAMMA_ITIDES = 0.3333 ! [nondim] default = 0.3333 - ! The fraction of the internal tidal energy that is dissipated locally with - ! INT_TIDE_DISSIPATION. THIS NAME COULD BE BETTER. -MIN_ZBOT_ITIDES = 0.0 ! [m] default = 0.0 - ! Turn off internal tidal dissipation when the total ocean depth is less than - ! this value. -KAPPA_ITIDES = 6.28319E-04 ! [m-1] default = 6.283185307179586E-04 - ! A topographic wavenumber used with INT_TIDE_DISSIPATION. The default is 2pi/10 - ! km, as in St.Laurent et al. 2002. -UTIDE = 0.0 ! [m s-1] default = 0.0 - ! The constant tidal amplitude used with INT_TIDE_DISSIPATION. -KAPPA_H2_FACTOR = 0.75 ! [nondim] default = 1.0 - ! A scaling factor for the roughness amplitude with INT_TIDE_DISSIPATION. -TKE_ITIDE_MAX = 0.1 ! [W m-2] default = 1000.0 - ! The maximum internal tide energy source available to mix above the bottom - ! boundary layer with INT_TIDE_DISSIPATION. -READ_TIDEAMP = True ! [Boolean] default = False - ! If true, read a file (given by TIDEAMP_FILE) containing the tidal amplitude - ! with INT_TIDE_DISSIPATION. -TIDEAMP_FILE = "tideamp.nc" ! default = "tideamp.nc" - ! The path to the file containing the spatially varying tidal amplitudes with - ! INT_TIDE_DISSIPATION. -H2_FILE = "sgs_h2.nc" ! - ! The path to the file containing the sub-grid-scale topographic roughness - ! amplitude with INT_TIDE_DISSIPATION. -FRACTIONAL_ROUGHNESS_MAX = 0.1 ! [nondim] default = 0.1 - ! The maximum topographic roughness amplitude as a fraction of the mean depth, - ! or a negative value for no limitations on roughness. - -! === module MOM_CVMix_conv === -! Parameterization of enhanced mixing due to convection via CVMix -USE_CVMix_CONVECTION = False ! [Boolean] default = False - ! If true, turns on the enhanced mixing due to convection via CVMix. This scheme - ! increases diapycnal diffs./viscs. at statically unstable interfaces. Relevant - ! parameters are contained in the CVMix_CONVECTION% parameter block. - -! === module MOM_geothermal === -GEOTHERMAL_SCALE = 0.001 ! [W m-2 or various] default = 0.0 - ! The constant geothermal heat flux, a rescaling factor for the heat flux read - ! from GEOTHERMAL_FILE, or 0 to disable the geothermal heating. -GEOTHERMAL_FILE = "geothermal_heating_cm2g.nc" ! default = "" - ! The file from which the geothermal heating is to be read, or blank to use a - ! constant heating rate. -GEOTHERMAL_THICKNESS = 0.1 ! [m] default = 0.1 - ! The thickness over which to apply geothermal heating. -GEOTHERMAL_DRHO_DT_INPLACE = -0.01 ! [kg m-3 K-1] default = -0.01 - ! The value of drho_dT above which geothermal heating simply heats water in - ! place instead of moving it between isopycnal layers. This must be negative. -GEOTHERMAL_VARNAME = "geo_heat" ! default = "geo_heat" - ! The name of the geothermal heating variable in GEOTHERMAL_FILE. - -! === module MOM_set_diffusivity === -FLUX_RI_MAX = 0.2 ! [nondim] default = 0.2 - ! The flux Richardson number where the stratification is large enough that N2 > - ! omega2. The full expression for the Flux Richardson number is usually - ! FLUX_RI_MAX*N2/(N2+OMEGA2). -SET_DIFF_2018_ANSWERS = False ! [Boolean] default = False - ! If true, use the order of arithmetic and expressions that recover the answers - ! from the end of 2018. Otherwise, use updated and more robust forms of the - ! same expressions. -ML_RADIATION = False ! [Boolean] default = False - ! If true, allow a fraction of TKE available from wind work to penetrate below - ! the base of the mixed layer with a vertical decay scale determined by the - ! minimum of: (1) The depth of the mixed layer, (2) an Ekman length scale. -BBL_EFFIC = 0.2 ! [nondim] default = 0.2 - ! The efficiency with which the energy extracted by bottom drag drives BBL - ! diffusion. This is only used if BOTTOMDRAGLAW is true. -BBL_MIXING_MAX_DECAY = 200.0 ! [m] default = 200.0 - ! The maximum decay scale for the BBL diffusion, or 0 to allow the mixing to - ! penetrate as far as stratification and rotation permit. The default for now - ! is 200 m. This is only used if BOTTOMDRAGLAW is true. -BBL_MIXING_AS_MAX = False ! [Boolean] default = True - ! If true, take the maximum of the diffusivity from the BBL mixing and the other - ! diffusivities. Otherwise, diffusivity from the BBL_mixing is simply added. -USE_LOTW_BBL_DIFFUSIVITY = True ! [Boolean] default = False - ! If true, uses a simple, imprecise but non-coordinate dependent, model of BBL - ! mixing diffusivity based on Law of the Wall. Otherwise, uses the original BBL - ! scheme. -LOTW_BBL_USE_OMEGA = True ! [Boolean] default = True - ! If true, use the maximum of Omega and N for the TKE to diffusion calculation. - ! Otherwise, N is N. -SIMPLE_TKE_TO_KD = True ! [Boolean] default = False - ! If true, uses a simple estimate of Kd/TKE that will work for arbitrary - ! vertical coordinates. If false, calculates Kd/TKE and bounds based on exact - ! energetics for an isopycnal layer-formulation. - -! === module MOM_bkgnd_mixing === -! Adding static vertical background mixing coefficients -KD = 2.0E-05 ! [m2 s-1] default = 0.0 - ! The background diapycnal diffusivity of density in the interior. Zero or the - ! molecular value, ~1e-7 m2 s-1, may be used. -KD_MIN = 2.0E-06 ! [m2 s-1] default = 2.0E-07 - ! The minimum diapycnal diffusivity. -KDML = 2.0E-05 ! [m2 s-1] default = 2.0E-05 - ! If BULKMIXEDLAYER is false, KDML is the elevated diapycnal diffusivity in the - ! topmost HMIX of fluid. KDML is only used if BULKMIXEDLAYER is false. -BRYAN_LEWIS_DIFFUSIVITY = False ! [Boolean] default = False - ! If true, use a Bryan & Lewis (JGR 1979) like tanh profile of background - ! diapycnal diffusivity with depth. This is done via CVMix. -HORIZ_VARYING_BACKGROUND = False ! [Boolean] default = False - ! If true, apply vertically uniform, latitude-dependent background diffusivity, - ! as described in Danabasoglu et al., 2012 -PRANDTL_BKGND = 1.0 ! [nondim] default = 1.0 - ! Turbulent Prandtl number used to convert vertical background diffusivities - ! into viscosities. -HENYEY_IGW_BACKGROUND = True ! [Boolean] default = False - ! If true, use a latitude-dependent scaling for the near surface background - ! diffusivity, as described in Harrison & Hallberg, JPO 2008. -HENYEY_IGW_BACKGROUND_NEW = False ! [Boolean] default = False - ! If true, use a better latitude-dependent scaling for the background - ! diffusivity, as described in Harrison & Hallberg, JPO 2008. -HENYEY_N0_2OMEGA = 20.0 ! [nondim] default = 20.0 - ! The ratio of the typical Buoyancy frequency to twice the Earth's rotation - ! period, used with the Henyey scaling from the mixing. -KD_TANH_LAT_FN = False ! [Boolean] default = False - ! If true, use a tanh dependence of Kd_sfc on latitude, like CM2.1/CM2M. There - ! is no physical justification for this form, and it can not be used with - ! HENYEY_IGW_BACKGROUND. -KD_MAX = 0.1 ! [m2 s-1] default = -1.0 - ! The maximum permitted increment for the diapycnal diffusivity from TKE-based - ! parameterizations, or a negative value for no limit. -KD_ADD = 0.0 ! [m2 s-1] default = 0.0 - ! A uniform diapycnal diffusivity that is added everywhere without any filtering - ! or scaling. -USER_CHANGE_DIFFUSIVITY = False ! [Boolean] default = False - ! If true, call user-defined code to change the diffusivity. -DISSIPATION_MIN = 0.0 ! [W m-3] default = 0.0 - ! The minimum dissipation by which to determine a lower bound of Kd (a floor). -DISSIPATION_N0 = 0.0 ! [W m-3] default = 0.0 - ! The intercept when N=0 of the N-dependent expression used to set a minimum - ! dissipation by which to determine a lower bound of Kd (a floor): A in eps_min - ! = A + B*N. -DISSIPATION_N1 = 0.0 ! [J m-3] default = 0.0 - ! The coefficient multiplying N, following Gargett, used to set a minimum - ! dissipation by which to determine a lower bound of Kd (a floor): B in eps_min - ! = A + B*N -DISSIPATION_KD_MIN = 0.0 ! [m2 s-1] default = 0.0 - ! The minimum vertical diffusivity applied as a floor. - -! === module MOM_kappa_shear === -! Parameterization of shear-driven turbulence following Jackson, Hallberg and Legg, JPO 2008 -USE_JACKSON_PARAM = True ! [Boolean] default = False - ! If true, use the Jackson-Hallberg-Legg (JPO 2008) shear mixing - ! parameterization. -VERTEX_SHEAR = False ! [Boolean] default = False - ! If true, do the calculations of the shear-driven mixing at the cell vertices - ! (i.e., the vorticity points). -RINO_CRIT = 0.25 ! [nondim] default = 0.25 - ! The critical Richardson number for shear mixing. -SHEARMIX_RATE = 0.089 ! [nondim] default = 0.089 - ! A nondimensional rate scale for shear-driven entrainment. Jackson et al find - ! values in the range of 0.085-0.089. -MAX_RINO_IT = 25 ! [nondim] default = 50 - ! The maximum number of iterations that may be used to estimate the Richardson - ! number driven mixing. -KD_KAPPA_SHEAR_0 = 2.0E-05 ! [m2 s-1] default = 2.0E-05 - ! The background diffusivity that is used to smooth the density and shear - ! profiles before solving for the diffusivities. The default is the greater of - ! KD and 1e-7 m2 s-1. -KD_TRUNC_KAPPA_SHEAR = 2.0E-07 ! [m2 s-1] default = 2.0E-07 - ! The value of shear-driven diffusivity that is considered negligible and is - ! rounded down to 0. The default is 1% of KD_KAPPA_SHEAR_0. -FRI_CURVATURE = -0.97 ! [nondim] default = -0.97 - ! The nondimensional curvature of the function of the Richardson number in the - ! kappa source term in the Jackson et al. scheme. -TKE_N_DECAY_CONST = 0.24 ! [nondim] default = 0.24 - ! The coefficient for the decay of TKE due to stratification (i.e. proportional - ! to N*tke). The values found by Jackson et al. are 0.24-0.28. -TKE_SHEAR_DECAY_CONST = 0.14 ! [nondim] default = 0.14 - ! The coefficient for the decay of TKE due to shear (i.e. proportional to - ! |S|*tke). The values found by Jackson et al. are 0.14-0.12. -KAPPA_BUOY_SCALE_COEF = 0.82 ! [nondim] default = 0.82 - ! The coefficient for the buoyancy length scale in the kappa equation. The - ! values found by Jackson et al. are in the range of 0.81-0.86. -KAPPA_N_OVER_S_SCALE_COEF2 = 0.0 ! [nondim] default = 0.0 - ! The square of the ratio of the coefficients of the buoyancy and shear scales - ! in the diffusivity equation, Set this to 0 (the default) to eliminate the - ! shear scale. This is only used if USE_JACKSON_PARAM is true. -KAPPA_SHEAR_TOL_ERR = 0.1 ! [nondim] default = 0.1 - ! The fractional error in kappa that is tolerated. Iteration stops when changes - ! between subsequent iterations are smaller than this everywhere in a column. - ! The peak diffusivities usually converge most rapidly, and have much smaller - ! errors than this. -TKE_BACKGROUND = 0.0 ! [m2 s-2] default = 0.0 - ! A background level of TKE used in the first iteration of the kappa equation. - ! TKE_BACKGROUND could be 0. -KAPPA_SHEAR_ELIM_MASSLESS = True ! [Boolean] default = True - ! If true, massless layers are merged with neighboring massive layers in this - ! calculation. The default is true and I can think of no good reason why it - ! should be false. This is only used if USE_JACKSON_PARAM is true. -MAX_KAPPA_SHEAR_IT = 13 ! [nondim] default = 13 - ! The maximum number of iterations that may be used to estimate the - ! time-averaged diffusivity. -KAPPA_SHEAR_MAX_KAP_SRC_CHG = 10.0 ! [nondim] default = 10.0 - ! The maximum permitted increase in the kappa source within an iteration - ! relative to the local source; this must be greater than 1. The lower limit - ! for the permitted fractional decrease is (1 - 0.5/kappa_src_max_chg). These - ! limits could perhaps be made dynamic with an improved iterative solver. -KAPPA_SHEAR_ITER_BUG = False ! [Boolean] default = False - ! If true, use an older, dimensionally inconsistent estimate of the derivative - ! of diffusivity with energy in the Newton's method iteration. The bug causes - ! undercorrections when dz > 1 m. -KAPPA_SHEAR_ALL_LAYER_TKE_BUG = False ! [Boolean] default = False - ! If true, report back the latest estimate of TKE instead of the time average - ! TKE when there is mass in all layers. Otherwise always report the time - ! averaged TKE, as is currently done when there are some massless layers. - -! === module MOM_CVMix_shear === -! Parameterization of shear-driven turbulence via CVMix (various options) -USE_LMD94 = False ! [Boolean] default = False - ! If true, use the Large-McWilliams-Doney (JGR 1994) shear mixing - ! parameterization. -USE_PP81 = False ! [Boolean] default = False - ! If true, use the Pacanowski and Philander (JPO 1981) shear mixing - ! parameterization. - -! === module MOM_CVMix_ddiff === -! Parameterization of mixing due to double diffusion processes via CVMix -USE_CVMIX_DDIFF = False ! [Boolean] default = False - ! If true, turns on double diffusive processes via CVMix. Note that double - ! diffusive processes on viscosity are ignored in CVMix, see - ! http://cvmix.github.io/ for justification. - -! === module MOM_diabatic_aux === -! The following parameters are used for auxiliary diabatic processes. -RECLAIM_FRAZIL = True ! [Boolean] default = True - ! If true, try to use any frazil heat deficit to cool any overlying layers down - ! to the freezing point, thereby avoiding the creation of thin ice when the SST - ! is above the freezing point. -PRESSURE_DEPENDENT_FRAZIL = False ! [Boolean] default = False - ! If true, use a pressure dependent freezing temperature when making frazil. The - ! default is false, which will be faster but is inappropriate with ice-shelf - ! cavities. -IGNORE_FLUXES_OVER_LAND = False ! [Boolean] default = False - ! If true, the model does not check if fluxes are being applied over land - ! points. This is needed when the ocean is coupled with ice shelves and sea ice, - ! since the sea ice mask needs to be different than the ocean mask to avoid sea - ! ice formation under ice shelves. This flag only works when use_ePBL = True. -DO_RIVERMIX = False ! [Boolean] default = False - ! If true, apply additional mixing wherever there is runoff, so that it is mixed - ! down to RIVERMIX_DEPTH if the ocean is that deep. -USE_RIVER_HEAT_CONTENT = False ! [Boolean] default = False - ! If true, use the fluxes%runoff_Hflx field to set the heat carried by runoff, - ! instead of using SST*CP*liq_runoff. -USE_CALVING_HEAT_CONTENT = False ! [Boolean] default = False - ! If true, use the fluxes%calving_Hflx field to set the heat carried by runoff, - ! instead of using SST*CP*froz_runoff. -VAR_PEN_SW = True ! [Boolean] default = False - ! If true, use one of the CHL_A schemes specified by OPACITY_SCHEME to determine - ! the e-folding depth of incoming short wave radiation. -CHL_FROM_FILE = True ! [Boolean] default = True - ! If true, chl_a is read from a file. -CHL_FILE = "seawifs_1998-2006_GOLD_smoothed_2X.nc" ! - ! CHL_FILE is the file containing chl_a concentrations in the variable CHL_A. It - ! is used when VAR_PEN_SW and CHL_FROM_FILE are true. -CHL_VARNAME = "CHL_A" ! default = "CHL_A" - ! Name of CHL_A variable in CHL_FILE. - -! === module MOM_energetic_PBL === -ML_OMEGA_FRAC = 0.0 ! [nondim] default = 0.0 - ! When setting the decay scale for turbulence, use this fraction of the absolute - ! rotation rate blended with the local value of f, as sqrt((1-of)*f^2 + - ! of*4*omega^2). -EKMAN_SCALE_COEF = 1.0 ! [nondim] default = 1.0 - ! A nondimensional scaling factor controlling the inhibition of the diffusive - ! length scale by rotation. Making this larger decreases the PBL diffusivity. -EPBL_2018_ANSWERS = False ! [Boolean] default = False - ! If true, use the order of arithmetic and expressions that recover the answers - ! from the end of 2018. Otherwise, use updated and more robust forms of the - ! same expressions. -EPBL_ORIGINAL_PE_CALC = True ! [Boolean] default = True - ! If true, the ePBL code uses the original form of the potential energy change - ! code. Otherwise, the newer version that can work with successive increments - ! to the diffusivity in upward or downward passes is used. -MKE_TO_TKE_EFFIC = 0.0 ! [nondim] default = 0.0 - ! The efficiency with which mean kinetic energy released by mechanically forced - ! entrainment of the mixed layer is converted to turbulent kinetic energy. -TKE_DECAY = 2.5 ! [nondim] default = 2.5 - ! TKE_DECAY relates the vertical rate of decay of the TKE available for - ! mechanical entrainment to the natural Ekman depth. -EPBL_MSTAR_SCHEME = "CONSTANT" ! default = "CONSTANT" - ! EPBL_MSTAR_SCHEME selects the method for setting mstar. Valid values are: - ! CONSTANT - Use a fixed mstar given by MSTAR - ! OM4 - Use L_Ekman/L_Obukhov in the sabilizing limit, as in OM4 - ! REICHL_H18 - Use the scheme documented in Reichl & Hallberg, 2018. -MSTAR = 1.2 ! [nondim] default = 1.2 - ! The ratio of the friction velocity cubed to the TKE input to the mixed layer. - ! This option is used if EPBL_MSTAR_SCHEME = CONSTANT. -NSTAR = 0.2 ! [nondim] default = 0.2 - ! The portion of the buoyant potential energy imparted by surface fluxes that is - ! available to drive entrainment at the base of mixed layer when that energy is - ! positive. -MSTAR_CONV_ADJ = 0.0 ! [nondim] default = 0.0 - ! Coefficient used for reducing mstar during convection due to reduction of - ! stable density gradient. -USE_MLD_ITERATION = True ! [Boolean] default = True - ! A logical that specifies whether or not to use the distance to the bottom of - ! the actively turbulent boundary layer to help set the EPBL length scale. -EPBL_TRANSITION_SCALE = 0.1 ! [nondim] default = 0.1 - ! A scale for the mixing length in the transition layer at the edge of the - ! boundary layer as a fraction of the boundary layer thickness. -MLD_ITERATION_GUESS = False ! [Boolean] default = False - ! If true, use the previous timestep MLD as a first guess in the MLD iteration, - ! otherwise use half the ocean depth as the first guess of the boundary layer - ! depth. The default is false to facilitate reproducibility. -EPBL_MLD_TOLERANCE = 1.0 ! [meter] default = 1.0 - ! The tolerance for the iteratively determined mixed layer depth. This is only - ! used with USE_MLD_ITERATION. -EPBL_MLD_BISECTION = True ! [Boolean] default = True - ! If true, use bisection with the iterative determination of the self-consistent - ! mixed layer depth. Otherwise use the false position after a maximum and - ! minimum bound have been evaluated and the returned value or bisection before - ! this. -EPBL_MLD_MAX_ITS = 20 ! default = 20 - ! The maximum number of iterations that can be used to find a self-consistent - ! mixed layer depth. If EPBL_MLD_BISECTION is true, the maximum number - ! iteractions needed is set by Depth/2^MAX_ITS < EPBL_MLD_TOLERANCE. -EPBL_MIN_MIX_LEN = 0.0 ! [meter] default = 0.0 - ! The minimum mixing length scale that will be used by ePBL. The default (0) - ! does not set a minimum. -MIX_LEN_EXPONENT = 2.0 ! [nondim] default = 2.0 - ! The exponent applied to the ratio of the distance to the MLD and the MLD depth - ! which determines the shape of the mixing length. This is only used if - ! USE_MLD_ITERATION is True. -EPBL_VEL_SCALE_SCHEME = "CUBE_ROOT_TKE" ! default = "CUBE_ROOT_TKE" - ! Selects the method for translating TKE into turbulent velocities. Valid values - ! are: - ! CUBE_ROOT_TKE - A constant times the cube root of remaining TKE. - ! REICHL_H18 - Use the scheme based on a combination of w* and v* as - ! documented in Reichl & Hallberg, 2018. -WSTAR_USTAR_COEF = 1.0 ! [nondim] default = 1.0 - ! A ratio relating the efficiency with which convectively released energy is - ! converted to a turbulent velocity, relative to mechanically forced TKE. Making - ! this larger increases the BL diffusivity -EPBL_VEL_SCALE_FACTOR = 1.0 ! [nondim] default = 1.0 - ! An overall nondimensional scaling factor for wT. Making this larger increases - ! the PBL diffusivity. -VSTAR_SURF_FAC = 1.2 ! [nondim] default = 1.2 - ! The proportionality times ustar to set vstar at the surface. -USE_LA_LI2016 = False ! [nondim] default = False - ! A logical to use the Li et al. 2016 (submitted) formula to determine the - ! Langmuir number. -EPBL_LT = False ! [nondim] default = False - ! A logical to use a LT parameterization. -EPBL_USTAR_MIN = 1.45842E-18 ! [m s-1] - ! The (tiny) minimum friction velocity used within the ePBL code, derived from - ! OMEGA and ANGSTROM. - -! === module MOM_regularize_layers === -REGULARIZE_SURFACE_LAYERS = False ! [Boolean] default = False - ! If defined, vertically restructure the near-surface layers when they have too - ! much lateral variations to allow for sensible lateral barotropic transports. -HMIX_MIN = 2.0 ! [m] default = 0.0 - ! The minimum mixed layer depth if the mixed layer depth is determined - ! dynamically. -REG_SFC_DEFICIT_TOLERANCE = 0.5 ! [nondim] default = 0.5 - ! The value of the relative thickness deficit at which to start modifying the - ! layer structure when REGULARIZE_SURFACE_LAYERS is true. -ALLOW_CLOCKS_IN_OMP_LOOPS = True ! [Boolean] default = True - ! If true, clocks can be called from inside loops that can be threaded. To run - ! with multiple threads, set to False. - -! === module MOM_opacity === -OPACITY_SCHEME = "MANIZZA_05" ! default = "MANIZZA_05" - ! This character string specifies how chlorophyll concentrations are translated - ! into opacities. Currently valid options include: - ! MANIZZA_05 - Use Manizza et al., GRL, 2005. - ! MOREL_88 - Use Morel, JGR, 1988. -BLUE_FRAC_SW = 0.5 ! [nondim] default = 0.5 - ! The fraction of the penetrating shortwave radiation that is in the blue band. -PEN_SW_NBANDS = 3 ! default = 1 - ! The number of bands of penetrating shortwave radiation. -OPTICS_2018_ANSWERS = False ! [Boolean] default = False - ! If true, use the order of arithmetic and expressions that recover the answers - ! from the end of 2018. Otherwise, use updated expressions for handling the - ! absorption of small remaining shortwave fluxes. -PEN_SW_FLUX_ABSORB = 2.5E-11 ! [degC m s-1] default = 2.5E-11 - ! A minimum remaining shortwave heating rate that will be simply absorbed in the - ! next sufficiently thick layers for computational efficiency, instead of - ! continuing to penetrate. The default, 2.5e-11 degC m s-1, is about 1e-4 W m-2 - ! or 0.08 degC m century-1, but 0 is also a valid value. -PEN_SW_ABSORB_MINTHICK = 1.0 ! [m] default = 1.0 - ! A thickness that is used to absorb the remaining penetrating shortwave heat - ! flux when it drops below PEN_SW_FLUX_ABSORB. -OPACITY_LAND_VALUE = 10.0 ! [m-1] default = 10.0 - ! The value to use for opacity over land. The default is 10 m-1 - a value for - ! muddy water. - -! === module MOM_tracer_advect === -TRACER_ADVECTION_SCHEME = "PPM:H3" ! default = "PLM" - ! The horizontal transport scheme for tracers: - ! PLM - Piecewise Linear Method - ! PPM:H3 - Piecewise Parabolic Method (Huyhn 3rd order) - ! PPM - Piecewise Parabolic Method (Colella-Woodward) - -! === module MOM_tracer_hor_diff === -KHTR = 600.0 ! [m2 s-1] default = 0.0 - ! The background along-isopycnal tracer diffusivity. -KHTR_MIN = 50.0 ! [m2 s-1] default = 0.0 - ! The minimum along-isopycnal tracer diffusivity. -KHTR_MAX = 900.0 ! [m2 s-1] default = 0.0 - ! The maximum along-isopycnal tracer diffusivity. -KHTR_PASSIVITY_COEFF = 0.0 ! [nondim] default = 0.0 - ! The coefficient that scales deformation radius over grid-spacing in passivity, - ! where passivity is the ratio between along isopycnal mixing of tracers to - ! thickness mixing. A non-zero value enables this parameterization. -KHTR_PASSIVITY_MIN = 0.5 ! [nondim] default = 0.5 - ! The minimum passivity which is the ratio between along isopycnal mixing of - ! tracers to thickness mixing. -DIFFUSE_ML_TO_INTERIOR = False ! [Boolean] default = False - ! If true, enable epipycnal mixing between the surface boundary layer and the - ! interior. -CHECK_DIFFUSIVE_CFL = False ! [Boolean] default = False - ! If true, use enough iterations the diffusion to ensure that the diffusive - ! equivalent of the CFL limit is not violated. If false, always use the greater - ! of 1 or MAX_TR_DIFFUSION_CFL iteration. -MAX_TR_DIFFUSION_CFL = -1.0 ! [nondim] default = -1.0 - ! If positive, locally limit the along-isopycnal tracer diffusivity to keep the - ! diffusive CFL locally at or below this value. The number of diffusive - ! iterations is often this value or the next greater integer. -RECALC_NEUTRAL_SURF = False ! [Boolean] default = False - ! If true, then recalculate the neutral surfaces if the - ! diffusive CFL is exceeded. If false, assume that the - ! positions of the surfaces do not change - -! === module MOM_neutral_diffusion === -! This module implements neutral diffusion of tracers -USE_NEUTRAL_DIFFUSION = True ! [Boolean] default = False - ! If true, enables the neutral diffusion module. -NDIFF_CONTINUOUS = True ! [Boolean] default = True - ! If true, uses a continuous reconstruction of T and S when finding neutral - ! surfaces along which diffusion will happen. If false, a PPM discontinuous - ! reconstruction of T and S is done which results in a higher order routine but - ! exacts a higher computational cost. -NDIFF_REF_PRES = -1.0 ! [Pa] default = -1.0 - ! The reference pressure (Pa) used for the derivatives of the equation of state. - ! If negative (default), local pressure is used. -NDIFF_INTERIOR_ONLY = False ! [Boolean] default = False - ! If true, only applies neutral diffusion in the ocean interior.That is, the - ! algorithm will exclude the surface and bottomboundary layers. - -! === module MOM_lateral_boundary_diffusion === -! This module implements lateral diffusion of tracers near boundaries -USE_LATERAL_BOUNDARY_DIFFUSION = False ! [Boolean] default = False - ! If true, enables the lateral boundary tracer's diffusion module. -OBSOLETE_DIAGNOSTIC_IS_FATAL = True ! [Boolean] default = True - ! If an obsolete diagnostic variable appears in the diag_table, cause a FATAL - ! error rather than issue a WARNING. - -! === module MOM_sum_output === -CALCULATE_APE = True ! [Boolean] default = True - ! If true, calculate the available potential energy of the interfaces. Setting - ! this to false reduces the memory footprint of high-PE-count models - ! dramatically. -WRITE_STOCKS = True ! [Boolean] default = True - ! If true, write the integrated tracer amounts to stdout when the energy files - ! are written. -MAXTRUNC = 5000 ! [truncations save_interval-1] default = 0 - ! The run will be stopped, and the day set to a very large value if the velocity - ! is truncated more than MAXTRUNC times between energy saves. Set MAXTRUNC to 0 - ! to stop if there is any truncation of velocities. -MAX_ENERGY = 0.0 ! [m2 s-2] default = 0.0 - ! The maximum permitted average energy per unit mass; the model will be stopped - ! if there is more energy than this. If zero or negative, this is set to - ! 10*MAXVEL^2. -ENERGYFILE = "ocean.stats" ! default = "ocean.stats" - ! The file to use to write the energies and globally summed diagnostics. -DATE_STAMPED_STDOUT = True ! [Boolean] default = True - ! If true, use dates (not times) in messages to stdout -TIMEUNIT = 8.64E+04 ! [s] default = 8.64E+04 - ! The time unit in seconds a number of input fields -READ_DEPTH_LIST = False ! [Boolean] default = False - ! Read the depth list from a file if it exists or create that file otherwise. -DEPTH_LIST_MIN_INC = 1.0E-10 ! [m] default = 1.0E-10 - ! The minimum increment between the depths of the entries in the depth-list - ! file. -ENERGYSAVEDAYS = 0.5 ! [days] default = 1.0 - ! The interval in units of TIMEUNIT between saves of the energies of the run and - ! other globally summed diagnostics. -ENERGYSAVEDAYS_GEOMETRIC = 0.0 ! [days] default = 0.0 - ! The starting interval in units of TIMEUNIT for the first call to save the - ! energies of the run and other globally summed diagnostics. The interval - ! increases by a factor of 2. after each call to write_energy. - -! === module ocean_model_init === -SINGLE_STEPPING_CALL = True ! [Boolean] default = True - ! If true, advance the state of MOM with a single step including both dynamics - ! and thermodynamics. If false, the two phases are advanced with separate - ! calls. -RESTART_CONTROL = 3 ! default = 1 - ! An integer whose bits encode which restart files are written. Add 2 (bit 1) - ! for a time-stamped file, and odd (bit 0) for a non-time-stamped file. A - ! restart file will be saved at the end of the run segment for any non-negative - ! value. -OCEAN_SURFACE_STAGGER = "C" ! default = "C" - ! A case-insensitive character string to indicate the staggering of the surface - ! velocity field that is returned to the coupler. Valid values include 'A', - ! 'B', or 'C'. -ICE_SHELF = False ! [Boolean] default = False - ! If true, enables the ice shelf model. -ICEBERGS_APPLY_RIGID_BOUNDARY = False ! [Boolean] default = False - ! If true, allows icebergs to change boundary condition felt by ocean - -! === module MOM_surface_forcing === -LATENT_HEAT_FUSION = 3.337E+05 ! [J/kg] default = 3.337E+05 - ! The latent heat of fusion. -LATENT_HEAT_VAPORIZATION = 2.4665E+06 ! [J/kg] default = 2.4665E+06 - ! The latent heat of fusion. -MAX_P_SURF = -1.0 ! [Pa] default = -1.0 - ! The maximum surface pressure that can be exerted by the atmosphere and - ! floating sea-ice or ice shelves. This is needed because the FMS coupling - ! structure does not limit the water that can be frozen out of the ocean and the - ! ice-ocean heat fluxes are treated explicitly. No limit is applied if a - ! negative value is used. -RESTORE_SALINITY = False ! [Boolean] default = False - ! If true, the coupled driver will add a globally-balanced fresh-water flux that - ! drives sea-surface salinity toward specified values. -RESTORE_TEMPERATURE = False ! [Boolean] default = False - ! If true, the coupled driver will add a heat flux that drives sea-surface - ! temperature toward specified values. -ADJUST_NET_SRESTORE_TO_ZERO = False ! [Boolean] default = False - ! If true, adjusts the salinity restoring seen to zero whether restoring is via - ! a salt flux or virtual precip. -ADJUST_NET_SRESTORE_BY_SCALING = False ! [Boolean] default = False - ! If true, adjustments to salt restoring to achieve zero net are made by scaling - ! values without moving the zero contour. -ADJUST_NET_FRESH_WATER_TO_ZERO = False ! [Boolean] default = False - ! If true, adjusts the net fresh-water forcing seen by the ocean (including - ! restoring) to zero. -ADJUST_NET_FRESH_WATER_BY_SCALING = False ! [Boolean] default = False - ! If true, adjustments to net fresh water to achieve zero net are made by - ! scaling values without moving the zero contour. -ICE_SALT_CONCENTRATION = 0.005 ! [kg/kg] default = 0.005 - ! The assumed sea-ice salinity needed to reverse engineer the melt flux (or - ! ice-ocean fresh-water flux). -USE_LIMITED_PATM_SSH = True ! [Boolean] default = True - ! If true, return the sea surface height with the correction for the atmospheric - ! (and sea-ice) pressure limited by max_p_surf instead of the full atmospheric - ! pressure. -APPROX_NET_MASS_SRC = False ! [Boolean] default = False - ! If true, use the net mass sources from the ice-ocean boundary type without any - ! further adjustments to drive the ocean dynamics. The actual net mass source - ! may differ due to internal corrections. -WIND_STAGGER = "AGRID" ! - ! The staggering of the input wind stress field from the coupler that is - ! actually used. -WIND_STRESS_MULTIPLIER = 1.0 ! [nondim] default = 1.0 - ! A factor multiplying the wind-stress given to the ocean by the coupler. This - ! is used for testing and should be =1.0 for any production runs. -CD_TIDES = 1.0E-04 ! [nondim] default = 1.0E-04 - ! The drag coefficient that applies to the tides. -READ_GUST_2D = True ! [Boolean] default = False - ! If true, use a 2-dimensional gustiness supplied from an input file -GUST_CONST = 0.0 ! [Pa] default = 0.0 - ! The background gustiness in the winds. -GUST_2D_FILE = "gustiness_qscat.nc" ! - ! The file in which the wind gustiness is found in variable gustiness. -SURFACE_FORCING_2018_ANSWERS = False ! [Boolean] default = False - ! If true, use the order of arithmetic and expressions that recover the answers - ! from the end of 2018. Otherwise, use a simpler expression to calculate - ! gustiness. -FIX_USTAR_GUSTLESS_BUG = True ! [Boolean] default = True - ! If true correct a bug in the time-averaging of the gustless wind friction - ! velocity -USE_RIGID_SEA_ICE = False ! [Boolean] default = False - ! If true, sea-ice is rigid enough to exert a nonhydrostatic pressure that - ! resist vertical motion. -ALLOW_ICEBERG_FLUX_DIAGNOSTICS = False ! [Boolean] default = False - ! If true, makes available diagnostics of fluxes from icebergs as seen by MOM6. -ALLOW_FLUX_ADJUSTMENTS = False ! [Boolean] default = False - ! If true, allows flux adjustments to specified via the data_table using the - ! component name 'OCN'. - -! === module MOM_restart === -USE_WAVES = False ! [Boolean] default = False - ! If true, enables surface wave modules. -LA_DEPTH_RATIO = 0.04 ! [nondim] default = 0.04 - ! The depth (normalized by BLD) to average Stokes drift over in Langmuir number - ! calculation, where La = sqrt(ust/Stokes). - -! === module MOM_file_parser === -SEND_LOG_TO_STDOUT = False ! [Boolean] default = False - ! If true, all log messages are also sent to stdout. -DOCUMENT_FILE = "MOM_parameter_doc" ! default = "MOM_parameter_doc" - ! The basename for files where run-time parameters, their settings, units and - ! defaults are documented. Blank will disable all parameter documentation. -COMPLETE_DOCUMENTATION = True ! [Boolean] default = True - ! If true, all run-time parameters are documented in MOM_parameter_doc.all . -MINIMAL_DOCUMENTATION = True ! [Boolean] default = True - ! If true, non-default run-time parameters are documented in - ! MOM_parameter_doc.short . diff --git a/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/360x210/README.md b/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/360x210/README.md deleted file mode 100644 index fba56b91a..000000000 --- a/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/360x210/README.md +++ /dev/null @@ -1 +0,0 @@ -This configuration was adapted from https://github.com/NOAA-GFDL/MOM6-examples/tree/dev/gfdl/ocean_only/global_ALE/z. diff --git a/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/360x210/data_table b/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/360x210/data_table deleted file mode 100644 index e69de29bb..000000000 diff --git a/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/360x210/diag_table b/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/360x210/diag_table deleted file mode 100644 index 114fe4594..000000000 --- a/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/360x210/diag_table +++ /dev/null @@ -1,494 +0,0 @@ -"Global ALE Experiment" -1900 1 1 0 0 0 -#"scalar", 1,"days",1,"days","Time", -#"layer", 1,"days",1,"days","Time", -#"prog", 1,"days",1,"days","Time", -"prog_z", 1,"months",1,"days","Time", -#"ave_prog", 1,"days",1,"days","Time", -#"tracer", 1,"days",1,"days","Time", -#"cont", 1,"days",1,"days","Time", -##"mom", 5,"days",1,"days","Time", -##"bt_mom", 5,"days",1,"days","Time", -#"visc", 1,"days",1,"days","Time", -##"energy", 5,"days",1,"days","Time", -"forcing", 1,"months",1,"days","Time", -#"surface", 1,"months",1,"days","Time", -"sfc_ave", 1,"months",1,"days","Time", -#"ocean_static", -1,"days",1,"days","time", -# -#"cmor", 1,"days",1,"days","Time", -#"cmor2", 1,"days",1,"days","Time", -#"cmor_z", 1,"days",1,"days","Time", -#"cmor_scalar", 1,"days",1,"days","Time", -#"ocean_static_cmor", -1,"days",1,"days","time", -# -##This is the field section of the diag_table. -# -## Layer-Average Diagnostics: -##=========================== -#"ocean_model","temp_layer_ave","temp_layer_ave","layer","all",.true.,"none",2 -#"ocean_model","salt_layer_ave","salt_layer_ave","layer","all",.true.,"none",2 -# -## Prognostic Ocean fields: -##========================= -# -#"ocean_model","u","u","prog","all",.false.,"none",2 -#"ocean_model","v","v","prog","all",.false.,"none",2 -#"ocean_model","h","h","prog","all",.false.,"none",1 -#"ocean_model","e","e","prog","all",.false.,"none",2 -#"ocean_model","temp","temp","prog","all",.false.,"none",2 -#"ocean_model","salt","salt","prog","all",.false.,"none",2 -##"ocean_model","Rml","Rml","prog","all",.false.,"none",2 -# -##"ocean_model","RV","RV","prog","all",.false.,"none",2 -##"ocean_model","PV","PV","prog","all",.false.,"none",2 -##"ocean_model","e_D","e_D","prog","all",.false.,"none",2 -# -#"ocean_model","u","u","ave_prog","all",.true.,"none",2 -#"ocean_model","v","v","ave_prog","all",.true.,"none",2 -#"ocean_model","h","h","ave_prog","all",.true.,"none",1 -#"ocean_model","e","e","ave_prog","all",.true.,"none",2 -##"ocean_model","temp","temp","ave_prog","all",.true.,"none",2 -##"ocean_model","salt","salt","ave_prog","all",.true.,"none",2 -##"ocean_model","Rml","Rml","ave_prog","all",.true.,"none",2 -# -#"ocean_model","mass_wt","mass_wt","surface","all",.false.,"none",1 -#"ocean_model","opottempmint","opottempmint","surface","all",.false.,"none",1 # GFDL name: temp_int -#"ocean_model","somint","somint","surface","all",.false.,"none",1 # GFDL name: salt_int -#"ocean_model","SSH","SSH","surface","all",.false.,"none",2 -#"ocean_model","SST","SST","surface","all",.false.,"none",1 -#"ocean_model","SSS","SSS","surface","all",.false.,"none",2 -#"ocean_model","speed","speed","surface","all",.false.,"none",2 -#"ocean_model","SSU","SSU","surface","all",.false.,"none",2 -#"ocean_model","SSV","SSV","surface","all",.false.,"none",2 -# -"ocean_model","SSH","SSH","sfc_ave","all",.true.,"none",2 -"ocean_model","SST","SST","sfc_ave","all",.true.,"none",2 -"ocean_model","SSS","SSS","sfc_ave","all",.true.,"none",2 -"ocean_model","speed","speed","sfc_ave","all",.true.,"none",2 -"ocean_model","SSU","SSU","sfc_ave","all",.true.,"none",2 -"ocean_model","SSV","SSV","sfc_ave","all",.true.,"none",2 -# -# -## Z-space fields: -##================== -"ocean_model_z","u","u","prog_z","all",.true.,"none",2 -"ocean_model_z","v","v","prog_z","all",.true.,"none",2 -"ocean_model_z","temp","temp","prog_z","all",.true.,"none",2 -"ocean_model_z","temp_xyave","temp_xyave","prog_z","all",.true.,"none",2 -"ocean_model_z","salt","salt","prog_z","all",.true.,"none",2 -"ocean_model_z","thkcello","thkcello","prog_z","all",.true.,"none",2 -# -## Auxilary Tracers: -##================== -##"ocean_model","vintage","vintage","prog","all",.false.,"none",2 -##"ocean_model","agescc","agescc","prog","all",.false.,"none",2 -# -## Continuity Equation Terms: -##=========================== -##"ocean_model","dhdt","dhdt","cont","all",.true.,"none",2 -#"ocean_model","wd","wd","cont","all",.true.,"none",2 -#"ocean_model","uh","uh","cont","all",.true.,"none",2 -#"ocean_model","vh","vh","cont","all",.true.,"none",2 -##"ocean_model","uhGM","uhGM","cont","all",.true.,"none",2 -##"ocean_model","vhGM","vhGM","cont","all",.true.,"none",2 -##"ocean_model","uhbt","uhbt","cont","all",.true.,"none",2 -##"ocean_model","vhbt","vhbt","cont","all",.true.,"none",2 -#"ocean_model","h_rho","h_rho","cont","all",.true.,"none",2 -#"ocean_model","uh_rho","uh_rho","cont","all",.true.,"none",2 -#"ocean_model","vh_rho","vh_rho","cont","all",.true.,"none",2 -#"ocean_model","uhGM_rho","uhGM_rho","cont","all",.true.,"none",2 -#"ocean_model","vhGM_rho","vhGM_rho","cont","all",.true.,"none",2 -#"ocean_model","KHth_u","KHth_u","cont","all",.true.,"none",2 -#"ocean_model","KHth_v","KHth_v","cont","all",.true.,"none",2 -#"ocean_model","diftrblo","diftrblo","cont","all",.true.,"none",2 -#"ocean_model","diftrelo","difteblo","cont","all",.true.,"none",2 -#"ocean_model","KHTR_u","KHTR_u","cont","all",.true.,"none",2 -#"ocean_model","KHTR_v","KHTR_v","cont","all",.true.,"none",2 -#"ocean_model","GMwork","GMwork","cont","all",.true.,"none",2 -#"ocean_model","umo","umo","cont","all",.true.,"none",2 -#"ocean_model","vmo","vmo","cont","all",.true.,"none",2 -#"ocean_model","umo_2d","umo_2d","cont","all",.true.,"none",2 -#"ocean_model","vmo_2d","vmo_2d","cont","all",.true.,"none",2 -# -## Continuity Equation Terms In Pure Potential Density Coordiantes: -##================================================================= -##"ocean_model","h_rho","h_rho","cont","all",.true.,"none",2 -##"ocean_model","uh_rho","uh_rho","cont","all",.true.,"none",2 -##"ocean_model","vh_rho","vh_rho","cont","all",.true.,"none",2 -##"ocean_model","uhGM_rho","uhGM_rho","cont","all",.true.,"none",2 -##"ocean_model","vhGM_rho","vhGM_rho","cont","all",.true.,"none",2 -# -## -## Tracer Fluxes: -##================== -#"ocean_model","T_adx", "T_adx", "tracer","all",.true.,"none",2 -#"ocean_model","T_ady", "T_ady", "tracer","all",.true.,"none",2 -#"ocean_model","T_diffx","T_diffx","tracer","all",.true.,"none",2 -#"ocean_model","T_diffy","T_diffy","tracer","all",.true.,"none",2 -#"ocean_model","S_adx", "S_adx", "tracer","all",.true.,"none",2 -#"ocean_model","S_ady", "S_ady", "tracer","all",.true.,"none",2 -#"ocean_model","S_diffx","S_diffx","tracer","all",.true.,"none",2 -#"ocean_model","S_diffy","S_diffy","tracer","all",.true.,"none",2 -# -## T/S net tendency, lateral advection, and vertical remapping budget terms -##================== -## hfds-hfsifrazil = boundary_forcing_heat_tendency_2d -##"ocean_model","rsdoabsorb" ,"rsdoabsorb", "tracer","all",.true.,"none",2 -##"ocean_model","boundary_forcing_temp_tendency" ,"boundary_forcing_temp_tendency", "tracer","all",.true.,"none",2 -##"ocean_model","boundary_forcing_saln_tendency" ,"boundary_forcing_saln_tendency", "tracer","all",.true.,"none",2 -##"ocean_model","boundary_forcing_heat_tendency" ,"boundary_forcing_heat_tendency", "tracer","all",.true.,"none",2 -##"ocean_model","boundary_forcing_salt_tendency" ,"boundary_forcing_salt_tendency", "tracer","all",.true.,"none",2 -##"ocean_model","boundary_forcing_heat_tendency_2d" ,"boundary_forcing_heat_tendency_2d", "tracer","all",.true.,"none",2 -##"ocean_model","boundary_forcing_salt_tendency_2d" ,"boundary_forcing_salt_tendency_2d", "tracer","all",.true.,"none",2 -# -## opottemptend_2d = T_advection_xy_2d + hfds + hfgeo + opottemppmdiff_2d -## note: Th_tendency_vert_remap_2d = 0 -#"ocean_model","T_tendency" ,"T_tendency", "tracer","all",.true.,"none",2 -#"ocean_model","S_tendency" ,"S_tendency", "tracer","all",.true.,"none",2 -#"ocean_model","opottemptend" ,"opottemptend", "tracer","all",.true.,"none",2 -#"ocean_model","osalttend" ,"osalttend", "tracer","all",.true.,"none",2 -#"ocean_model","opottemptend_2d" ,"opottemptend_2d", "tracer","all",.true.,"none",2 -#"ocean_model","osalttend_2d" ,"osalttend_2d", "tracer","all",.true.,"none",2 -#"ocean_model","T_advection_xy" ,"T_advection_xy", "tracer","all",.true.,"none",2 -#"ocean_model","S_advection_xy" ,"S_advection_xy", "tracer","all",.true.,"none",2 -#"ocean_model","T_advection_xy_2d" ,"T_advection_xy_2d", "tracer","all",.true.,"none",2 -#"ocean_model","S_advection_xy_2d" ,"S_advection_xy_2d", "tracer","all",.true.,"none",2 -##"ocean_model","T_tendency_vert_remap","T_tendency_vert_remap", "tracer","all",.true.,"none",2 -##"ocean_model","S_tendency_vert_remap","S_tendency_vert_remap", "tracer","all",.true.,"none",2 -##"ocean_model","Th_tendency_vert_remap","Th_tendency_vert_remap", "tracer","all",.true.,"none",2 -##"ocean_model","Sh_tendency_vert_remap","Sh_tendency_vert_remap", "tracer","all",.true.,"none",2 -##"ocean_model","Th_tendency_vert_remap_2d","Th_tendency_vert_remap_2d", "tracer","all",.true.,"none",2 -##"ocean_model","Sh_tendency_vert_remap_2d","Sh_tendency_vert_remap_2d", "tracer","all",.true.,"none",2 -#"ocean_model","frazil_heat_tendency","frazil_heat_tendency", "tracer","all",.true.,"none",2 -#"ocean_model","frazil_heat_tendency_2d","frazil_heat_tendency_2d", "tracer","all",.true.,"none",2 -#"ocean_model","frazil_temp_tendency","frazil_temp_tendency", "tracer","all",.true.,"none",2 -# -## neutral diffusion tendencies for T and S -##================== -##"ocean_model","opottemppmdiff","opottemppmdiff", "tracer","all",.true.,"none",2 -##"ocean_model","osaltpmdiff","osaltpmdiff", "tracer","all",.true.,"none",2 -##"ocean_model","opottemppmdiff_2d","opottemppmdiff_2d", "tracer","all",.true.,"none",2 -##"ocean_model","osaltpmdiff_2d","osaltpmdiff_2d", "tracer","all",.true.,"none",2 -##"ocean_model","ndiff_tracer_conc_tendency_T","ndiff_tracer_conc_tendency_T","tracer","all",.true.,"none",2 -##"ocean_model","ndiff_tracer_conc_tendency_S","ndiff_tracer_conc_tendency_S","tracer","all",.true.,"none",2 -# -## diabatic diffusion tendencies for T and S -## note: opottempdiff_2d = 0 -##================== -##"ocean_model","opottempdiff" ,"opottempdiff", "tracer","all",.true.,"none",2 -##"ocean_model","osaltdiff" ,"osaltdiff", "tracer","all",.true.,"none",2 -##"ocean_model","opottempdiff_2d" ,"opottempdiff_2d", "tracer","all",.true.,"none",2 -##"ocean_model","osaltdiff_2d" ,"osaltdiff_2d", "tracer","all",.true.,"none",2 -##"ocean_model","diabatic_diff_temp_tendency","diabatic_diff_temp_tendency","tracer","all",.true.,"none",2 -##"ocean_model","diabatic_diff_saln_tendency","diabatic_diff_saln_tendency","tracer","all",.true.,"none",2 -# -# -# -## Momentum Balance Terms: -##======================= -##"ocean_model","dudt","dudt","mom","all",.true.,"none",2 -##"ocean_model","dvdt","dvdt","mom","all",.true.,"none",2 -##"ocean_model","CAu","CAu","mom","all",.true.,"none",2 -##"ocean_model","CAv","CAv","mom","all",.true.,"none",2 -##"ocean_model","PFu","PFu","mom","all",.true.,"none",2 -##"ocean_model","PFv","PFv","mom","all",.true.,"none",2 -##"ocean_model","du_dt_visc","du_dt_visc","mom","all",.true.,"none",2 -##"ocean_model","dv_dt_visc","dv_dt_visc","mom","all",.true.,"none",2 -##"ocean_model","diffu","diffu","mom","all",.true.,"none",2 -##"ocean_model","diffv","diffv","mom","all",.true.,"none",2 -##"ocean_model","dudt_dia","dudt_dia","mom","all",.true.,"none",2 -##"ocean_model","dvdt_dia","dvdt_dia","mom","all",.true.,"none",2 -## Subterms that should not be added to a closed budget. -##"ocean_model","gKEu","gKEu","mom","all",.true.,"none",2 -##"ocean_model","gKEv","gKEv","mom","all",.true.,"none",2 -##"ocean_model","rvxu","rvxu","mom","all",.true.,"none",2 -##"ocean_model","rvxv","rvxv","mom","all",.true.,"none",2 -##"ocean_model","PFu_bc","PFu_bc","mom","all",.true.,"none",2 -##"ocean_model","PFv_bc","PFv_bc","mom","all",.true.,"none",2 -# -## Barotropic Momentum Balance Terms: -## (only available with split time stepping.) -##=========================================== -##"ocean_model","PFuBT","PFuBT","bt_mom","all",.true.,"none",2 -##"ocean_model","PFvBT","PFvBT","bt_mom","all",.true.,"none",2 -##"ocean_model","CoruBT","CoruBT","bt_mom","all",.true.,"none",2 -##"ocean_model","CorvBT","CorvBT","bt_mom","all",.true.,"none",2 -##"ocean_model","NluBT","NluBT","bt_mom","all",.true.,"none",2 -##"ocean_model","NlvBT","NlvBT","bt_mom","all",.true.,"none",2 -##"ocean_model","ubtforce","ubtforce","bt_mom","all",.true.,"none",2 -##"ocean_model","vbtforce","vbtforce","bt_mom","all",.true.,"none",2 -##"ocean_model","u_accel_bt","u_accel_bt","bt_mom","all",.true.,"none",2 -##"ocean_model","v_accel_bt","v_accel_bt","bt_mom","all",.true.,"none",2 -## -## Viscosities and diffusivities: -##=============================== -#"ocean_model","Kd_interface","Kd_interface","visc","all",.true.,"none",2 -#"ocean_model","Kd_layer","Kd_layer","visc","all",.true.,"none",2 -#"ocean_model","Kd_effective","Kd_effective","visc","all",.true.,"none",2 -#"ocean_model","Kd_itides","Kd_itides","visc","all",.true.,"none",2 -#"ocean_model","Kd_shear","Kd_shear","visc","all",.true.,"none",2 -#"ocean_model","Kd_BBL","Kd_BBL","visc","all",.true.,"none",2 -##"ocean_model","Ahh","Ahh","visc","all",.true.,"none",2 -##"ocean_model","Ahq","Ahq","visc","all",.true.,"none",2 -##"ocean_model","Khh","Khh","visc","all",.true.,"none",2 -##"ocean_model","Khq","Khq","visc","all",.true.,"none",2 -##"ocean_model","bbl_thick_u","bbl_thick_u","visc","all",.true.,"none",2 -##"ocean_model","kv_bbl_u","kv_bbl_u","visc","all",.true.,"none",2 -##"ocean_model","bbl_thick_v","bbl_thick_v","visc","all",.true.,"none",2 -##"ocean_model","kv_bbl_v","kv_bbl_v","visc","all",.true.,"none",2 -##"ocean_model","av_visc","av_visc","visc","all",.true.,"none",2 -##"ocean_model","au_visc","au_visc","visc","all",.true.,"none",2 -##"ocean_model","FrictWork","FrictWork","visc","all",.true.,"none",2 -#"ocean_model","MLD_003","MLD_003","visc","all",.true.,"none",2 -#"ocean_model","subML_N2","subML_N2","visc","all",.true.,"none",2 -#"ocean_model","MEKE","MEKE","visc","all",.true.,"none",2 -#"ocean_model","MEKE_KH","MEKE_KH","visc","all",.true.,"none",2 -#"ocean_model","SN_u","SN_u","visc","all",.true.,"none",2 -# -## -## Kinetic Energy Balance Terms: -##============================= -##"ocean_model","KE","KE","energy","all",.true.,"none",2 -##"ocean_model","dKE_dt","dKE_dt","energy","all",.true.,"none",2 -##"ocean_model","PE_to_KE","PE_to_KE","energy","all",.true.,"none",2 -##"ocean_model","KE_Coradv","KE_Coradv","energy","all",.true.,"none",2 -##"ocean_model","KE_adv","KE_adv","energy","all",.true.,"none",2 -##"ocean_model","KE_visc","KE_visc","energy","all",.true.,"none",2 -##"ocean_model","KE_horvisc","KE_horvisc","energy","all",.true.,"none",2 -##"ocean_model","KE_dia","KE_dia","energy","all",.true.,"none",2 -# -## Surface Forcing: -##================= -#"ocean_model","taux","taux", "forcing","all",.true.,"none",2 -#"ocean_model","tauy","tauy", "forcing","all",.true.,"none",2 -#"ocean_model","ustar","ustar", "forcing","all",.true.,"none",2 -#"ocean_model","p_surf","p_surf", "forcing","all",.true.,"none",2 -## -#"ocean_model","PRCmE","PRCmE", "forcing","all",.true.,"none",1 -#"ocean_model","net_massin","net_massin", "forcing","all",.true.,"none",1 -#"ocean_model","net_massout","net_massout", "forcing","all",.true.,"none",1 -#"ocean_model","lrunoff","lrunoff", "forcing","all",.true.,"none",1 -#"ocean_model","frunoff","frunoff", "forcing","all",.true.,"none",1 -#"ocean_model","lprec","lprec", "forcing","all",.true.,"none",1 -#"ocean_model","fprec","fprec", "forcing","all",.true.,"none",1 -#"ocean_model","vprec","vprec", "forcing","all",.true.,"none",1 -#"ocean_model","evap","evap", "forcing","all",.true.,"none",1 -## -#"ocean_model","net_heat_coupler","net_heat_coupler", "forcing","all",.true.,"none",1 -#"ocean_model","net_heat_surface","net_heat_surface", "forcing","all",.true.,"none",1 -#"ocean_model","SW","SW", "forcing","all",.true.,"none",1 -#"ocean_model","LW","LW", "forcing","all",.true.,"none",1 -#"ocean_model","LwLatSens","LwLatSens", "forcing","all",.true.,"none",1 -#"ocean_model","salt_flux","salt_flux", "forcing","all",.true.,"none",1 -#"ocean_model","Heat_PmE","Heat_PmE", "forcing","all",.true.,"none",1 -"ocean_model","frazil","frazil", "forcing","all",.true.,"none",1 -#"ocean_model","internal_heat","internal_heat", "forcing","all",.true.,"none",1 -#"ocean_model","heat_added","heat_added", "forcing","all",.true.,"none",1 -## -#"ocean_model","heat_content_cond","heat_content_cond", "forcing","all",.true.,"none",1 -#"ocean_model","heat_content_lprec","heat_content_lprec", "forcing","all",.true.,"none",1 -#"ocean_model","heat_content_fprec","heat_content_fprec", "forcing","all",.true.,"none",1 -#"ocean_model","heat_content_vprec","heat_content_vprec", "forcing","all",.true.,"none",1 -#"ocean_model","heat_content_lrunoff","heat_content_lrunoff", "forcing","all",.true.,"none",1 -#"ocean_model","heat_content_frunoff","heat_content_frunoff", "forcing","all",.true.,"none",1 -#"ocean_model","heat_content_surfwater","heat_content_surfwater","forcing","all",.true.,"none",1 -#"ocean_model","heat_content_massout","heat_content_massout", "forcing","all",.true.,"none",1 -#"ocean_model","heat_content_massin","heat_content_massin", "forcing","all",.true.,"none",1 -## -#"ocean_model","total_prcme","total_prcme", "forcing","all",.true.,"none",2 -#"ocean_model","total_evap","total_evap", "forcing","all",.true.,"none",2 -#"ocean_model","total_lprec","total_lprec", "forcing","all",.true.,"none",2 -#"ocean_model","total_fprec","total_fprec", "forcing","all",.true.,"none",2 -#"ocean_model","total_vprec","total_vprec", "forcing","all",.true.,"none",2 -#"ocean_model","total_precip","total_precip", "forcing","all",.true.,"none",2 -#"ocean_model","total_lrunoff","total_lrunoff", "forcing","all",.true.,"none",2 -#"ocean_model","total_frunoff","total_frunoff", "forcing","all",.true.,"none",2 -#"ocean_model","total_net_massin","total_net_massin" , "forcing","all",.true.,"none",2 -#"ocean_model","total_net_massout","total_net_massout", "forcing","all",.true.,"none",2 -## -#"ocean_model","total_heat_content_frunoff" ,"total_heat_content_frunoff", "forcing","all",.true.,"none",2 -#"ocean_model","total_heat_content_lrunoff" ,"total_heat_content_lrunoff", "forcing","all",.true.,"none",2 -#"ocean_model","total_heat_content_lprec" ,"total_heat_content_lprec", "forcing","all",.true.,"none",2 -#"ocean_model","total_heat_content_fprec" ,"total_heat_content_fprec", "forcing","all",.true.,"none",2 -#"ocean_model","total_heat_content_vprec" ,"total_heat_content_vprec", "forcing","all",.true.,"none",2 -#"ocean_model","total_heat_content_cond" ,"total_heat_content_cond", "forcing","all",.true.,"none",2 -#"ocean_model","total_heat_content_surfwater" ,"total_heat_content_surfwater", "forcing","all",.true.,"none",2 -#"ocean_model","total_heat_content_massin" ,"total_heat_content_massin", "forcing","all",.true.,"none",2 -#"ocean_model","total_heat_content_massout" ,"total_heat_content_massout", "forcing","all",.true.,"none",2 -#"ocean_model","total_net_heat_coupler" ,"total_net_heat_coupler", "forcing","all",.true.,"none",2 -#"ocean_model","total_net_heat_surface" ,"total_net_heat_surface", "forcing","all",.true.,"none",2 -#"ocean_model","total_sw" ,"total_sw", "forcing","all",.true.,"none",2 -#"ocean_model","total_LwLatSens" ,"total_LwLatSens", "forcing","all",.true.,"none",2 -#"ocean_model","total_lw" ,"total_lw", "forcing","all",.true.,"none",2 -#"ocean_model","total_lat" ,"total_lat", "forcing","all",.true.,"none",2 -#"ocean_model","total_lat_evap" ,"total_lat_evap", "forcing","all",.true.,"none",2 -#"ocean_model","total_lat_fprec" ,"total_lat_fprec", "forcing","all",.true.,"none",2 -#"ocean_model","total_lat_frunoff" ,"total_lat_frunoff", "forcing","all",.true.,"none",2 -#"ocean_model","total_sens" ,"total_sens", "forcing","all",.true.,"none",2 -##"ocean_model","total_heat_added" ,"total_heat_added", "forcing","all",.true.,"none",2 -#"ocean_model","total_salt_flux" ,"total_salt_flux", "forcing","all",.true.,"none",2 -#"ocean_model","total_salt_flux_in" ,"total_salt_flux_in", "forcing","all",.true.,"none",2 -##"ocean_model","total_salt_flux_added" ,"total_salt_flux_added", "forcing","all",.true.,"none",2 -## -## -# "ocean_model", "hfgeou", "hfgeou", "cmor2", "all", "none", "none",2 # geothermal heat flux -# "ocean_model", "hfrainds", "hfrainds", "cmor2", "all", "mean", "none",2 -# "ocean_model", "hfevapds", "hfevapds", "cmor2", "all", "mean", "none",2 -# "ocean_model", "hfrunoffds", "hfrunoffds", "cmor2", "all", "mean", "none",2 -# "ocean_model", "hfsnthermds", "hfsnthermds", "cmor2", "all", "mean", "none",2 -# "ocean_model", "hfsifrazil", "hfsifrazil", "cmor2", "all", "mean", "none",2 -##"ocean_model", "hfsithermds", "hfsithermds", "cmor2", "all", "mean", "none",2 # computed in SIS2 -# "ocean_model", "hfibthermds", "hfibthermds", "cmor2", "all", "mean", "none",2 -##"ocean_model", "hfsolidrunoffds", "hfsolidrunoffds", "cmor2", "all", "mean", "none",2 # =0 if ice = 0C -# "ocean_model", "rlntds", "rlntds", "cmor2", "all", "mean", "none",2 -# "ocean_model", "hflso", "hflso", "cmor2", "all", "mean", "none",2 -# "ocean_model", "hfsso", "hfsso", "cmor2", "all", "mean", "none",2 -# "ocean_model", "rsntds", "rsntds" "cmor2", "all", "mean", "none",2 -##"ocean_model", "rsdoabsorb", "rsdoabsorb" "cmor2", "all", "mean", "none",2 -##"ocean_model", "rsdo", "rsdo" "cmor2", "all", "mean", "none",2 -# "ocean_model", "hfds", "hfds" "cmor2", "all", "mean", "none",2 -## -## -## Fields for CMIP6 (CMOR Names): -##======================================= -#"ocean_model","pso","pso" ,"cmor","all",.true.,"none",2 # GFDL Name: p_surf -#"ocean_model","tauuo","tauuo" ,"cmor","all",.true.,"none",2 # surface i-stress -#"ocean_model","tauvo","tauvo" ,"cmor","all",.true.,"none",2 # surface j-stress -#"ocean_model","wfo","wfo" ,"cmor","all",.true.,"none",2 # GFDL Name: PRCmE -#"ocean_model","rsntds","rsntds" ,"cmor","all",.true.,"none",2 # GFDL Name: SW -#"ocean_model","rlntds","rlntds" ,"cmor","all",.true.,"none",2 # GFDL Name: SW -#"ocean_model","hfibthermds","hfibthermds" ,"cmor","all",.true.,"none",2 # GFDL Name: heat_content_frunoff -#"ocean_model","hfrunoffds","hfrunoffds" ,"cmor","all",.true.,"none",2 # GFDL Name: runoff_heat_content -#"ocean_model","hfsifrazil","hfsifrazil" ,"cmor","all",.true.,"none",2 # GFDL Name: frazil -#"ocean_model","evs","evs" ,"cmor","all",.true.,"none",2 # GFDL Name: evap -#"ocean_model","prlq","prlq" ,"cmor","all",.true.,"none",2 # GFDL Name: fprec -#"ocean_model","prsn","prsn" ,"cmor","all",.true.,"none",2 # GFDL Name: fprec -#"ocean_model","hflso","hflso" ,"cmor","all",.true.,"none",2 # GFDL Name: latent -#"ocean_model","friver","friver" ,"cmor","all",.true.,"none",2 # GFDL Name: lrunoff -##"ocean_model","rlds","rlds" ,"cmor","all",.true.,"none",2 # GFDL Name: LW -##"ocean_model","hfss","hfss" ,"cmor","all",.true.,"none",2 # GFDL Name: sensible -#"ocean_model","hfds","hfds" ,"cmor","all",.true.,"none",2 # GFDL Name: net_heat_surface -#"ocean_model","sfdsi","sfdsi" ,"cmor","all",.true.,"none",2 # GFDL Name: salt_flux -#"ocean_model","uo","uo" ,"cmor","all",.true.,"none",2 # GFDL Name: u -#"ocean_model","vo","vo" ,"cmor","all",.true.,"none",2 # GFDL Name: v -#"ocean_model","so","so" ,"cmor","all",.true.,"none",2 # GFDL Name: salinity -#"ocean_model","masscello","masscello" ,"cmor","all",.true.,"none",2 # mass of ocean cells -#"ocean_model","pbo","pbo" ,"cmor","all",.true.,"none",2 # GFDL Name: n/a -#"ocean_model","mlotst","mlotst" ,"cmor","all",.true.,"none",2 # GFDL Name: MLD_003 -#"ocean_model","mlotstsq","mlotstsq" ,"cmor","all",.true.,"none",2 # GFDL Name: n/a -#"ocean_model","zos","zos" ,"cmor","all",.true.,"none",2 # dynamic sealevel -#"ocean_model","zossq","zossq" ,"cmor","all",.true.,"none",2 # squared zos -#"ocean_model","hfgeou","hfgeou" ,"cmor","all",.false.,"none",2 # GFDL name: geo_heat -#"ocean_model","thkcello","thkcello" ,"cmor","all",.true.,"none",2 # GFDL name: h if Bouss -#"ocean_model","opottempmint","opottempmint" ,"cmor","all",.true.,"none",2 # GFDL name: temp_int -#"ocean_model","somint","somint" ,"cmor","all",.true.,"none",2 # GFDL name: salt_int -#"ocean_model","obvfsq","obvfsq" ,"cmor","all",.true.,"none",2 # GFDL name: N2 -#"ocean_model","difvho","difvho" ,"cmor","all",.true.,"none",2 # GFDL name: N2 -#"ocean_model","difvso","difvso" ,"cmor","all",.true.,"none",2 # GFDL name: N2 -#"ocean_model","difmxylo","difmxylo" ,"cmor","all",.true.,"none",2 # GFDL name: N2 -#"ocean_model","difmxybo","difmxybo" ,"cmor","all",.true.,"none",2 # GFDL name: N2 -#"ocean_model","dispkexyfo","dispkexyfo" ,"cmor","all",.true.,"none",2 # GFDL name: N2 -## -## -## Z-Space Fields Provided for CMIP6 (CMOR Names): -##=============================================== -#"ocean_model_z","uo", "uo", "cmor_z","all",.true.,"none",2 #GFDL Name: u_z -#"ocean_model_z","vo", "vo", "cmor_z","all",.true.,"none",2 #GFDL Name: v_z -#"ocean_model_z","so", "so", "cmor_z","all",.true.,"none",2 #GFDL Name: salt_z -#"ocean_model_z","thetao","thetao","cmor_z","all",.true.,"none",2 #GFDL Name: temp_z -#"ocean_model_z","umo", "umo", "cmor_z","all",.true.,"none",2 #GFDL Name: uh_z -#"ocean_model_z","vmo", "vmo", "cmor_z","all",.true.,"none",2 #GFDL Name: vh_z -## -## Scalar ocean fields for CMIP6 (CMOR Names): -##===================== -#"ocean_model", "masso", "masso", "cmor_scalar", "all", .true., "none",2 # global mean masscello -#"ocean_model", "thetaoga", "thetaoga", "cmor_scalar", "all", .true., "none",2 # global mean theta -#"ocean_model", "soga", "soga", "cmor_scalar", "all", .true., "none",2 # global mean saln -#"ocean_model", "tosga", "tosga", "cmor_scalar", "all", .true., "none",2 # area mean SST -#"ocean_model", "sosga", "sosga", "cmor_scalar", "all", .true., "none",2 # area mean SSS -#"ocean_model", "volo", "volo", "cmor_scalar", "all", .true., "none",2 # ocean volume -# -## Scalar fields for run-time monitoring: -##======================================= -#"ocean_model", "masso", "masso", "scalar", "all", .true., "none",2 # global mean masscello -#"ocean_model", "thetaoga", "thetaoga", "scalar", "all", .true., "none",2 # global mean theta -#"ocean_model", "soga", "soga", "scalar", "all", .true., "none",2 # global mean salinity -#"ocean_model", "tosga", "tosga", "scalar", "all", .true., "none",2 # area mean SST -#"ocean_model", "sosga", "sosga", "scalar", "all", .true., "none",2 # area mean SSS -#"ocean_model", "volo", "volo", "scalar", "all", .true., "none",2 # ocean volume -#"ocean_model", "ssh_ga", "ssh_ga", "scalar", "all", .true., "none",2 # global mean ssh -#"ocean_model", "prcme_ga", "prcme_ga", "scalar", "all", .true., "none",2 # global mean prcme -#"ocean_model", "precip_ga", "precip_ga", "scalar", "all", .true., "none",2 # global mean precip -#"ocean_model", "evap_ga", "evap_ga", "scalar", "all", .true., "none",2 # global mean evaporation -#"ocean_model", "net_heat_coupler_ga", "net_heat_coupler_ga", "scalar", "all", .true., "none",2 # global mean net heat coupler -#"ocean_model", "net_heat_surface_ga", "net_heat_surface_ga", "scalar", "all", .true., "none",2 # global mean net heat surface -#"ocean_model", "sens_ga", "sens_ga", "scalar", "all", .true., "none",2 # global mean sensible heat -#"ocean_model", "LwLatSens_ga", "LwLatSens_ga", "scalar", "all", .true., "none",2 # global mean LW + latent + sensible -#"ocean_model", "sw_ga", "sw_ga", "scalar", "all", .true., "none",2 # global mean SW -#"ocean_model", "lw_ga", "lw_ga", "scalar", "all", .true., "none",2 # global mean LW -#"ocean_model", "lat_ga", "lat_ga", "scalar", "all", .true., "none",2 # global mean latent -# -## Static ocean fields: -##===================== -#"ocean_model", "geolon", "geolon", "ocean_static", "all", .false., "none", 1 -#"ocean_model", "geolat", "geolat", "ocean_static", "all", .false., "none", 1 -#"ocean_model", "geolon_c", "geolon_c", "ocean_static", "all", .false., "none", 2 -#"ocean_model", "geolat_c", "geolat_c", "ocean_static", "all", .false., "none", 2 -#"ocean_model", "geolon_u", "geolon_u", "ocean_static", "all", .false., "none", 2 -#"ocean_model", "geolat_u", "geolat_u", "ocean_static", "all", .false., "none", 2 -#"ocean_model", "geolon_v", "geolon_v", "ocean_static", "all", .false., "none", 2 -#"ocean_model", "geolat_v", "geolat_v", "ocean_static", "all", .false., "none", 2 -#"ocean_model", "area_t", "area_t", "ocean_static", "all", .false., "none", 1 -#"ocean_model", "depth_ocean", "depth_ocean", "ocean_static", "all", .false., "none", 2 -#"ocean_model", "wet", "wet", "ocean_static", "all", .false., "none", 1 -#"ocean_model", "wet_c", "wet_c", "ocean_static", "all", .false., "none", 2 -#"ocean_model", "wet_u", "wet_u", "ocean_static", "all", .false., "none", 2 -#"ocean_model", "wet_v", "wet_v", "ocean_static", "all", .false., "none", 2 -#"ocean_model", "Coriolis", "Coriolis", "ocean_static", "all", .false., "none", 2 -#"ocean_model", "dxt", "dxt", "ocean_static", "all", .false., "none", 2 -#"ocean_model", "dyt", "dyt", "ocean_static", "all", .false., "none", 2 -#"ocean_model", "dxCu", "dxCu", "ocean_static", "all", .false., "none", 2 -#"ocean_model", "dyCu", "dyCu", "ocean_static", "all", .false., "none", 2 -#"ocean_model", "dxCv", "dxCv", "ocean_static", "all", .false., "none", 2 -#"ocean_model", "dyCv", "dyCv", "ocean_static", "all", .false., "none", 2 - -# -## Static ocean fields: -##===================== -#"ocean_model", "areacello", "areacello", "ocean_static_cmor", "all", .false., "none", 2 - -#============================================================================================= -# -#====> This file can be used with diag_manager/v2.0a (or higher) <==== -# -# -# FORMATS FOR FILE ENTRIES (not all input values are used) -# ------------------------ -# -#"file_name", output_freq, "output_units", format, "time_units", "time_long_name", ... -# (opt) new_file_frequecy, (opt) "new_file_freq_units", "new_file_start_date" -# -# -#output_freq: > 0 output frequency in "output_units" -# = 0 output frequency every time step -# =-1 output frequency at end of run -# -#output_units = units used for output frequency -# (years, months, days, minutes, hours, seconds) -# -#time_units = units used to label the time axis -# (days, minutes, hours, seconds) -# -# -# FORMAT FOR FIELD ENTRIES (not all input values are used) -# ------------------------ -# -#"module_name", "field_name", "output_name", "file_name" "time_sampling", time_avg, "other_opts", packing -# -#time_avg = .true. or .false. -# -#packing = 1 double precision -# = 2 float -# = 4 packed 16-bit integers -# = 8 packed 1-byte (not tested?) diff --git a/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/360x210/input.nml b/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/360x210/input.nml deleted file mode 100644 index 6521406ed..000000000 --- a/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/360x210/input.nml +++ /dev/null @@ -1,11 +0,0 @@ - &MOM_input_nml - output_directory = './', - input_filename = 'r' - restart_input_dir = 'INPUT/', - restart_output_dir = 'RESTART/', - parameter_filename = 'MOM_input', - 'MOM_override' / - - &diag_manager_nml - / - diff --git a/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/360x320/MOM_input b/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/360x320/MOM_input deleted file mode 120000 index 913524842..000000000 --- a/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/360x320/MOM_input +++ /dev/null @@ -1 +0,0 @@ -soca/MOM_input \ No newline at end of file diff --git a/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/360x320/MOM_override b/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/360x320/MOM_override deleted file mode 120000 index 6ace3cd7a..000000000 --- a/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/360x320/MOM_override +++ /dev/null @@ -1 +0,0 @@ -soca/MOM_override \ No newline at end of file diff --git a/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/360x320/data_table b/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/360x320/data_table deleted file mode 100644 index e69de29bb..000000000 diff --git a/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/360x320/diag_table b/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/360x320/diag_table deleted file mode 100644 index 114fe4594..000000000 --- a/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/360x320/diag_table +++ /dev/null @@ -1,494 +0,0 @@ -"Global ALE Experiment" -1900 1 1 0 0 0 -#"scalar", 1,"days",1,"days","Time", -#"layer", 1,"days",1,"days","Time", -#"prog", 1,"days",1,"days","Time", -"prog_z", 1,"months",1,"days","Time", -#"ave_prog", 1,"days",1,"days","Time", -#"tracer", 1,"days",1,"days","Time", -#"cont", 1,"days",1,"days","Time", -##"mom", 5,"days",1,"days","Time", -##"bt_mom", 5,"days",1,"days","Time", -#"visc", 1,"days",1,"days","Time", -##"energy", 5,"days",1,"days","Time", -"forcing", 1,"months",1,"days","Time", -#"surface", 1,"months",1,"days","Time", -"sfc_ave", 1,"months",1,"days","Time", -#"ocean_static", -1,"days",1,"days","time", -# -#"cmor", 1,"days",1,"days","Time", -#"cmor2", 1,"days",1,"days","Time", -#"cmor_z", 1,"days",1,"days","Time", -#"cmor_scalar", 1,"days",1,"days","Time", -#"ocean_static_cmor", -1,"days",1,"days","time", -# -##This is the field section of the diag_table. -# -## Layer-Average Diagnostics: -##=========================== -#"ocean_model","temp_layer_ave","temp_layer_ave","layer","all",.true.,"none",2 -#"ocean_model","salt_layer_ave","salt_layer_ave","layer","all",.true.,"none",2 -# -## Prognostic Ocean fields: -##========================= -# -#"ocean_model","u","u","prog","all",.false.,"none",2 -#"ocean_model","v","v","prog","all",.false.,"none",2 -#"ocean_model","h","h","prog","all",.false.,"none",1 -#"ocean_model","e","e","prog","all",.false.,"none",2 -#"ocean_model","temp","temp","prog","all",.false.,"none",2 -#"ocean_model","salt","salt","prog","all",.false.,"none",2 -##"ocean_model","Rml","Rml","prog","all",.false.,"none",2 -# -##"ocean_model","RV","RV","prog","all",.false.,"none",2 -##"ocean_model","PV","PV","prog","all",.false.,"none",2 -##"ocean_model","e_D","e_D","prog","all",.false.,"none",2 -# -#"ocean_model","u","u","ave_prog","all",.true.,"none",2 -#"ocean_model","v","v","ave_prog","all",.true.,"none",2 -#"ocean_model","h","h","ave_prog","all",.true.,"none",1 -#"ocean_model","e","e","ave_prog","all",.true.,"none",2 -##"ocean_model","temp","temp","ave_prog","all",.true.,"none",2 -##"ocean_model","salt","salt","ave_prog","all",.true.,"none",2 -##"ocean_model","Rml","Rml","ave_prog","all",.true.,"none",2 -# -#"ocean_model","mass_wt","mass_wt","surface","all",.false.,"none",1 -#"ocean_model","opottempmint","opottempmint","surface","all",.false.,"none",1 # GFDL name: temp_int -#"ocean_model","somint","somint","surface","all",.false.,"none",1 # GFDL name: salt_int -#"ocean_model","SSH","SSH","surface","all",.false.,"none",2 -#"ocean_model","SST","SST","surface","all",.false.,"none",1 -#"ocean_model","SSS","SSS","surface","all",.false.,"none",2 -#"ocean_model","speed","speed","surface","all",.false.,"none",2 -#"ocean_model","SSU","SSU","surface","all",.false.,"none",2 -#"ocean_model","SSV","SSV","surface","all",.false.,"none",2 -# -"ocean_model","SSH","SSH","sfc_ave","all",.true.,"none",2 -"ocean_model","SST","SST","sfc_ave","all",.true.,"none",2 -"ocean_model","SSS","SSS","sfc_ave","all",.true.,"none",2 -"ocean_model","speed","speed","sfc_ave","all",.true.,"none",2 -"ocean_model","SSU","SSU","sfc_ave","all",.true.,"none",2 -"ocean_model","SSV","SSV","sfc_ave","all",.true.,"none",2 -# -# -## Z-space fields: -##================== -"ocean_model_z","u","u","prog_z","all",.true.,"none",2 -"ocean_model_z","v","v","prog_z","all",.true.,"none",2 -"ocean_model_z","temp","temp","prog_z","all",.true.,"none",2 -"ocean_model_z","temp_xyave","temp_xyave","prog_z","all",.true.,"none",2 -"ocean_model_z","salt","salt","prog_z","all",.true.,"none",2 -"ocean_model_z","thkcello","thkcello","prog_z","all",.true.,"none",2 -# -## Auxilary Tracers: -##================== -##"ocean_model","vintage","vintage","prog","all",.false.,"none",2 -##"ocean_model","agescc","agescc","prog","all",.false.,"none",2 -# -## Continuity Equation Terms: -##=========================== -##"ocean_model","dhdt","dhdt","cont","all",.true.,"none",2 -#"ocean_model","wd","wd","cont","all",.true.,"none",2 -#"ocean_model","uh","uh","cont","all",.true.,"none",2 -#"ocean_model","vh","vh","cont","all",.true.,"none",2 -##"ocean_model","uhGM","uhGM","cont","all",.true.,"none",2 -##"ocean_model","vhGM","vhGM","cont","all",.true.,"none",2 -##"ocean_model","uhbt","uhbt","cont","all",.true.,"none",2 -##"ocean_model","vhbt","vhbt","cont","all",.true.,"none",2 -#"ocean_model","h_rho","h_rho","cont","all",.true.,"none",2 -#"ocean_model","uh_rho","uh_rho","cont","all",.true.,"none",2 -#"ocean_model","vh_rho","vh_rho","cont","all",.true.,"none",2 -#"ocean_model","uhGM_rho","uhGM_rho","cont","all",.true.,"none",2 -#"ocean_model","vhGM_rho","vhGM_rho","cont","all",.true.,"none",2 -#"ocean_model","KHth_u","KHth_u","cont","all",.true.,"none",2 -#"ocean_model","KHth_v","KHth_v","cont","all",.true.,"none",2 -#"ocean_model","diftrblo","diftrblo","cont","all",.true.,"none",2 -#"ocean_model","diftrelo","difteblo","cont","all",.true.,"none",2 -#"ocean_model","KHTR_u","KHTR_u","cont","all",.true.,"none",2 -#"ocean_model","KHTR_v","KHTR_v","cont","all",.true.,"none",2 -#"ocean_model","GMwork","GMwork","cont","all",.true.,"none",2 -#"ocean_model","umo","umo","cont","all",.true.,"none",2 -#"ocean_model","vmo","vmo","cont","all",.true.,"none",2 -#"ocean_model","umo_2d","umo_2d","cont","all",.true.,"none",2 -#"ocean_model","vmo_2d","vmo_2d","cont","all",.true.,"none",2 -# -## Continuity Equation Terms In Pure Potential Density Coordiantes: -##================================================================= -##"ocean_model","h_rho","h_rho","cont","all",.true.,"none",2 -##"ocean_model","uh_rho","uh_rho","cont","all",.true.,"none",2 -##"ocean_model","vh_rho","vh_rho","cont","all",.true.,"none",2 -##"ocean_model","uhGM_rho","uhGM_rho","cont","all",.true.,"none",2 -##"ocean_model","vhGM_rho","vhGM_rho","cont","all",.true.,"none",2 -# -## -## Tracer Fluxes: -##================== -#"ocean_model","T_adx", "T_adx", "tracer","all",.true.,"none",2 -#"ocean_model","T_ady", "T_ady", "tracer","all",.true.,"none",2 -#"ocean_model","T_diffx","T_diffx","tracer","all",.true.,"none",2 -#"ocean_model","T_diffy","T_diffy","tracer","all",.true.,"none",2 -#"ocean_model","S_adx", "S_adx", "tracer","all",.true.,"none",2 -#"ocean_model","S_ady", "S_ady", "tracer","all",.true.,"none",2 -#"ocean_model","S_diffx","S_diffx","tracer","all",.true.,"none",2 -#"ocean_model","S_diffy","S_diffy","tracer","all",.true.,"none",2 -# -## T/S net tendency, lateral advection, and vertical remapping budget terms -##================== -## hfds-hfsifrazil = boundary_forcing_heat_tendency_2d -##"ocean_model","rsdoabsorb" ,"rsdoabsorb", "tracer","all",.true.,"none",2 -##"ocean_model","boundary_forcing_temp_tendency" ,"boundary_forcing_temp_tendency", "tracer","all",.true.,"none",2 -##"ocean_model","boundary_forcing_saln_tendency" ,"boundary_forcing_saln_tendency", "tracer","all",.true.,"none",2 -##"ocean_model","boundary_forcing_heat_tendency" ,"boundary_forcing_heat_tendency", "tracer","all",.true.,"none",2 -##"ocean_model","boundary_forcing_salt_tendency" ,"boundary_forcing_salt_tendency", "tracer","all",.true.,"none",2 -##"ocean_model","boundary_forcing_heat_tendency_2d" ,"boundary_forcing_heat_tendency_2d", "tracer","all",.true.,"none",2 -##"ocean_model","boundary_forcing_salt_tendency_2d" ,"boundary_forcing_salt_tendency_2d", "tracer","all",.true.,"none",2 -# -## opottemptend_2d = T_advection_xy_2d + hfds + hfgeo + opottemppmdiff_2d -## note: Th_tendency_vert_remap_2d = 0 -#"ocean_model","T_tendency" ,"T_tendency", "tracer","all",.true.,"none",2 -#"ocean_model","S_tendency" ,"S_tendency", "tracer","all",.true.,"none",2 -#"ocean_model","opottemptend" ,"opottemptend", "tracer","all",.true.,"none",2 -#"ocean_model","osalttend" ,"osalttend", "tracer","all",.true.,"none",2 -#"ocean_model","opottemptend_2d" ,"opottemptend_2d", "tracer","all",.true.,"none",2 -#"ocean_model","osalttend_2d" ,"osalttend_2d", "tracer","all",.true.,"none",2 -#"ocean_model","T_advection_xy" ,"T_advection_xy", "tracer","all",.true.,"none",2 -#"ocean_model","S_advection_xy" ,"S_advection_xy", "tracer","all",.true.,"none",2 -#"ocean_model","T_advection_xy_2d" ,"T_advection_xy_2d", "tracer","all",.true.,"none",2 -#"ocean_model","S_advection_xy_2d" ,"S_advection_xy_2d", "tracer","all",.true.,"none",2 -##"ocean_model","T_tendency_vert_remap","T_tendency_vert_remap", "tracer","all",.true.,"none",2 -##"ocean_model","S_tendency_vert_remap","S_tendency_vert_remap", "tracer","all",.true.,"none",2 -##"ocean_model","Th_tendency_vert_remap","Th_tendency_vert_remap", "tracer","all",.true.,"none",2 -##"ocean_model","Sh_tendency_vert_remap","Sh_tendency_vert_remap", "tracer","all",.true.,"none",2 -##"ocean_model","Th_tendency_vert_remap_2d","Th_tendency_vert_remap_2d", "tracer","all",.true.,"none",2 -##"ocean_model","Sh_tendency_vert_remap_2d","Sh_tendency_vert_remap_2d", "tracer","all",.true.,"none",2 -#"ocean_model","frazil_heat_tendency","frazil_heat_tendency", "tracer","all",.true.,"none",2 -#"ocean_model","frazil_heat_tendency_2d","frazil_heat_tendency_2d", "tracer","all",.true.,"none",2 -#"ocean_model","frazil_temp_tendency","frazil_temp_tendency", "tracer","all",.true.,"none",2 -# -## neutral diffusion tendencies for T and S -##================== -##"ocean_model","opottemppmdiff","opottemppmdiff", "tracer","all",.true.,"none",2 -##"ocean_model","osaltpmdiff","osaltpmdiff", "tracer","all",.true.,"none",2 -##"ocean_model","opottemppmdiff_2d","opottemppmdiff_2d", "tracer","all",.true.,"none",2 -##"ocean_model","osaltpmdiff_2d","osaltpmdiff_2d", "tracer","all",.true.,"none",2 -##"ocean_model","ndiff_tracer_conc_tendency_T","ndiff_tracer_conc_tendency_T","tracer","all",.true.,"none",2 -##"ocean_model","ndiff_tracer_conc_tendency_S","ndiff_tracer_conc_tendency_S","tracer","all",.true.,"none",2 -# -## diabatic diffusion tendencies for T and S -## note: opottempdiff_2d = 0 -##================== -##"ocean_model","opottempdiff" ,"opottempdiff", "tracer","all",.true.,"none",2 -##"ocean_model","osaltdiff" ,"osaltdiff", "tracer","all",.true.,"none",2 -##"ocean_model","opottempdiff_2d" ,"opottempdiff_2d", "tracer","all",.true.,"none",2 -##"ocean_model","osaltdiff_2d" ,"osaltdiff_2d", "tracer","all",.true.,"none",2 -##"ocean_model","diabatic_diff_temp_tendency","diabatic_diff_temp_tendency","tracer","all",.true.,"none",2 -##"ocean_model","diabatic_diff_saln_tendency","diabatic_diff_saln_tendency","tracer","all",.true.,"none",2 -# -# -# -## Momentum Balance Terms: -##======================= -##"ocean_model","dudt","dudt","mom","all",.true.,"none",2 -##"ocean_model","dvdt","dvdt","mom","all",.true.,"none",2 -##"ocean_model","CAu","CAu","mom","all",.true.,"none",2 -##"ocean_model","CAv","CAv","mom","all",.true.,"none",2 -##"ocean_model","PFu","PFu","mom","all",.true.,"none",2 -##"ocean_model","PFv","PFv","mom","all",.true.,"none",2 -##"ocean_model","du_dt_visc","du_dt_visc","mom","all",.true.,"none",2 -##"ocean_model","dv_dt_visc","dv_dt_visc","mom","all",.true.,"none",2 -##"ocean_model","diffu","diffu","mom","all",.true.,"none",2 -##"ocean_model","diffv","diffv","mom","all",.true.,"none",2 -##"ocean_model","dudt_dia","dudt_dia","mom","all",.true.,"none",2 -##"ocean_model","dvdt_dia","dvdt_dia","mom","all",.true.,"none",2 -## Subterms that should not be added to a closed budget. -##"ocean_model","gKEu","gKEu","mom","all",.true.,"none",2 -##"ocean_model","gKEv","gKEv","mom","all",.true.,"none",2 -##"ocean_model","rvxu","rvxu","mom","all",.true.,"none",2 -##"ocean_model","rvxv","rvxv","mom","all",.true.,"none",2 -##"ocean_model","PFu_bc","PFu_bc","mom","all",.true.,"none",2 -##"ocean_model","PFv_bc","PFv_bc","mom","all",.true.,"none",2 -# -## Barotropic Momentum Balance Terms: -## (only available with split time stepping.) -##=========================================== -##"ocean_model","PFuBT","PFuBT","bt_mom","all",.true.,"none",2 -##"ocean_model","PFvBT","PFvBT","bt_mom","all",.true.,"none",2 -##"ocean_model","CoruBT","CoruBT","bt_mom","all",.true.,"none",2 -##"ocean_model","CorvBT","CorvBT","bt_mom","all",.true.,"none",2 -##"ocean_model","NluBT","NluBT","bt_mom","all",.true.,"none",2 -##"ocean_model","NlvBT","NlvBT","bt_mom","all",.true.,"none",2 -##"ocean_model","ubtforce","ubtforce","bt_mom","all",.true.,"none",2 -##"ocean_model","vbtforce","vbtforce","bt_mom","all",.true.,"none",2 -##"ocean_model","u_accel_bt","u_accel_bt","bt_mom","all",.true.,"none",2 -##"ocean_model","v_accel_bt","v_accel_bt","bt_mom","all",.true.,"none",2 -## -## Viscosities and diffusivities: -##=============================== -#"ocean_model","Kd_interface","Kd_interface","visc","all",.true.,"none",2 -#"ocean_model","Kd_layer","Kd_layer","visc","all",.true.,"none",2 -#"ocean_model","Kd_effective","Kd_effective","visc","all",.true.,"none",2 -#"ocean_model","Kd_itides","Kd_itides","visc","all",.true.,"none",2 -#"ocean_model","Kd_shear","Kd_shear","visc","all",.true.,"none",2 -#"ocean_model","Kd_BBL","Kd_BBL","visc","all",.true.,"none",2 -##"ocean_model","Ahh","Ahh","visc","all",.true.,"none",2 -##"ocean_model","Ahq","Ahq","visc","all",.true.,"none",2 -##"ocean_model","Khh","Khh","visc","all",.true.,"none",2 -##"ocean_model","Khq","Khq","visc","all",.true.,"none",2 -##"ocean_model","bbl_thick_u","bbl_thick_u","visc","all",.true.,"none",2 -##"ocean_model","kv_bbl_u","kv_bbl_u","visc","all",.true.,"none",2 -##"ocean_model","bbl_thick_v","bbl_thick_v","visc","all",.true.,"none",2 -##"ocean_model","kv_bbl_v","kv_bbl_v","visc","all",.true.,"none",2 -##"ocean_model","av_visc","av_visc","visc","all",.true.,"none",2 -##"ocean_model","au_visc","au_visc","visc","all",.true.,"none",2 -##"ocean_model","FrictWork","FrictWork","visc","all",.true.,"none",2 -#"ocean_model","MLD_003","MLD_003","visc","all",.true.,"none",2 -#"ocean_model","subML_N2","subML_N2","visc","all",.true.,"none",2 -#"ocean_model","MEKE","MEKE","visc","all",.true.,"none",2 -#"ocean_model","MEKE_KH","MEKE_KH","visc","all",.true.,"none",2 -#"ocean_model","SN_u","SN_u","visc","all",.true.,"none",2 -# -## -## Kinetic Energy Balance Terms: -##============================= -##"ocean_model","KE","KE","energy","all",.true.,"none",2 -##"ocean_model","dKE_dt","dKE_dt","energy","all",.true.,"none",2 -##"ocean_model","PE_to_KE","PE_to_KE","energy","all",.true.,"none",2 -##"ocean_model","KE_Coradv","KE_Coradv","energy","all",.true.,"none",2 -##"ocean_model","KE_adv","KE_adv","energy","all",.true.,"none",2 -##"ocean_model","KE_visc","KE_visc","energy","all",.true.,"none",2 -##"ocean_model","KE_horvisc","KE_horvisc","energy","all",.true.,"none",2 -##"ocean_model","KE_dia","KE_dia","energy","all",.true.,"none",2 -# -## Surface Forcing: -##================= -#"ocean_model","taux","taux", "forcing","all",.true.,"none",2 -#"ocean_model","tauy","tauy", "forcing","all",.true.,"none",2 -#"ocean_model","ustar","ustar", "forcing","all",.true.,"none",2 -#"ocean_model","p_surf","p_surf", "forcing","all",.true.,"none",2 -## -#"ocean_model","PRCmE","PRCmE", "forcing","all",.true.,"none",1 -#"ocean_model","net_massin","net_massin", "forcing","all",.true.,"none",1 -#"ocean_model","net_massout","net_massout", "forcing","all",.true.,"none",1 -#"ocean_model","lrunoff","lrunoff", "forcing","all",.true.,"none",1 -#"ocean_model","frunoff","frunoff", "forcing","all",.true.,"none",1 -#"ocean_model","lprec","lprec", "forcing","all",.true.,"none",1 -#"ocean_model","fprec","fprec", "forcing","all",.true.,"none",1 -#"ocean_model","vprec","vprec", "forcing","all",.true.,"none",1 -#"ocean_model","evap","evap", "forcing","all",.true.,"none",1 -## -#"ocean_model","net_heat_coupler","net_heat_coupler", "forcing","all",.true.,"none",1 -#"ocean_model","net_heat_surface","net_heat_surface", "forcing","all",.true.,"none",1 -#"ocean_model","SW","SW", "forcing","all",.true.,"none",1 -#"ocean_model","LW","LW", "forcing","all",.true.,"none",1 -#"ocean_model","LwLatSens","LwLatSens", "forcing","all",.true.,"none",1 -#"ocean_model","salt_flux","salt_flux", "forcing","all",.true.,"none",1 -#"ocean_model","Heat_PmE","Heat_PmE", "forcing","all",.true.,"none",1 -"ocean_model","frazil","frazil", "forcing","all",.true.,"none",1 -#"ocean_model","internal_heat","internal_heat", "forcing","all",.true.,"none",1 -#"ocean_model","heat_added","heat_added", "forcing","all",.true.,"none",1 -## -#"ocean_model","heat_content_cond","heat_content_cond", "forcing","all",.true.,"none",1 -#"ocean_model","heat_content_lprec","heat_content_lprec", "forcing","all",.true.,"none",1 -#"ocean_model","heat_content_fprec","heat_content_fprec", "forcing","all",.true.,"none",1 -#"ocean_model","heat_content_vprec","heat_content_vprec", "forcing","all",.true.,"none",1 -#"ocean_model","heat_content_lrunoff","heat_content_lrunoff", "forcing","all",.true.,"none",1 -#"ocean_model","heat_content_frunoff","heat_content_frunoff", "forcing","all",.true.,"none",1 -#"ocean_model","heat_content_surfwater","heat_content_surfwater","forcing","all",.true.,"none",1 -#"ocean_model","heat_content_massout","heat_content_massout", "forcing","all",.true.,"none",1 -#"ocean_model","heat_content_massin","heat_content_massin", "forcing","all",.true.,"none",1 -## -#"ocean_model","total_prcme","total_prcme", "forcing","all",.true.,"none",2 -#"ocean_model","total_evap","total_evap", "forcing","all",.true.,"none",2 -#"ocean_model","total_lprec","total_lprec", "forcing","all",.true.,"none",2 -#"ocean_model","total_fprec","total_fprec", "forcing","all",.true.,"none",2 -#"ocean_model","total_vprec","total_vprec", "forcing","all",.true.,"none",2 -#"ocean_model","total_precip","total_precip", "forcing","all",.true.,"none",2 -#"ocean_model","total_lrunoff","total_lrunoff", "forcing","all",.true.,"none",2 -#"ocean_model","total_frunoff","total_frunoff", "forcing","all",.true.,"none",2 -#"ocean_model","total_net_massin","total_net_massin" , "forcing","all",.true.,"none",2 -#"ocean_model","total_net_massout","total_net_massout", "forcing","all",.true.,"none",2 -## -#"ocean_model","total_heat_content_frunoff" ,"total_heat_content_frunoff", "forcing","all",.true.,"none",2 -#"ocean_model","total_heat_content_lrunoff" ,"total_heat_content_lrunoff", "forcing","all",.true.,"none",2 -#"ocean_model","total_heat_content_lprec" ,"total_heat_content_lprec", "forcing","all",.true.,"none",2 -#"ocean_model","total_heat_content_fprec" ,"total_heat_content_fprec", "forcing","all",.true.,"none",2 -#"ocean_model","total_heat_content_vprec" ,"total_heat_content_vprec", "forcing","all",.true.,"none",2 -#"ocean_model","total_heat_content_cond" ,"total_heat_content_cond", "forcing","all",.true.,"none",2 -#"ocean_model","total_heat_content_surfwater" ,"total_heat_content_surfwater", "forcing","all",.true.,"none",2 -#"ocean_model","total_heat_content_massin" ,"total_heat_content_massin", "forcing","all",.true.,"none",2 -#"ocean_model","total_heat_content_massout" ,"total_heat_content_massout", "forcing","all",.true.,"none",2 -#"ocean_model","total_net_heat_coupler" ,"total_net_heat_coupler", "forcing","all",.true.,"none",2 -#"ocean_model","total_net_heat_surface" ,"total_net_heat_surface", "forcing","all",.true.,"none",2 -#"ocean_model","total_sw" ,"total_sw", "forcing","all",.true.,"none",2 -#"ocean_model","total_LwLatSens" ,"total_LwLatSens", "forcing","all",.true.,"none",2 -#"ocean_model","total_lw" ,"total_lw", "forcing","all",.true.,"none",2 -#"ocean_model","total_lat" ,"total_lat", "forcing","all",.true.,"none",2 -#"ocean_model","total_lat_evap" ,"total_lat_evap", "forcing","all",.true.,"none",2 -#"ocean_model","total_lat_fprec" ,"total_lat_fprec", "forcing","all",.true.,"none",2 -#"ocean_model","total_lat_frunoff" ,"total_lat_frunoff", "forcing","all",.true.,"none",2 -#"ocean_model","total_sens" ,"total_sens", "forcing","all",.true.,"none",2 -##"ocean_model","total_heat_added" ,"total_heat_added", "forcing","all",.true.,"none",2 -#"ocean_model","total_salt_flux" ,"total_salt_flux", "forcing","all",.true.,"none",2 -#"ocean_model","total_salt_flux_in" ,"total_salt_flux_in", "forcing","all",.true.,"none",2 -##"ocean_model","total_salt_flux_added" ,"total_salt_flux_added", "forcing","all",.true.,"none",2 -## -## -# "ocean_model", "hfgeou", "hfgeou", "cmor2", "all", "none", "none",2 # geothermal heat flux -# "ocean_model", "hfrainds", "hfrainds", "cmor2", "all", "mean", "none",2 -# "ocean_model", "hfevapds", "hfevapds", "cmor2", "all", "mean", "none",2 -# "ocean_model", "hfrunoffds", "hfrunoffds", "cmor2", "all", "mean", "none",2 -# "ocean_model", "hfsnthermds", "hfsnthermds", "cmor2", "all", "mean", "none",2 -# "ocean_model", "hfsifrazil", "hfsifrazil", "cmor2", "all", "mean", "none",2 -##"ocean_model", "hfsithermds", "hfsithermds", "cmor2", "all", "mean", "none",2 # computed in SIS2 -# "ocean_model", "hfibthermds", "hfibthermds", "cmor2", "all", "mean", "none",2 -##"ocean_model", "hfsolidrunoffds", "hfsolidrunoffds", "cmor2", "all", "mean", "none",2 # =0 if ice = 0C -# "ocean_model", "rlntds", "rlntds", "cmor2", "all", "mean", "none",2 -# "ocean_model", "hflso", "hflso", "cmor2", "all", "mean", "none",2 -# "ocean_model", "hfsso", "hfsso", "cmor2", "all", "mean", "none",2 -# "ocean_model", "rsntds", "rsntds" "cmor2", "all", "mean", "none",2 -##"ocean_model", "rsdoabsorb", "rsdoabsorb" "cmor2", "all", "mean", "none",2 -##"ocean_model", "rsdo", "rsdo" "cmor2", "all", "mean", "none",2 -# "ocean_model", "hfds", "hfds" "cmor2", "all", "mean", "none",2 -## -## -## Fields for CMIP6 (CMOR Names): -##======================================= -#"ocean_model","pso","pso" ,"cmor","all",.true.,"none",2 # GFDL Name: p_surf -#"ocean_model","tauuo","tauuo" ,"cmor","all",.true.,"none",2 # surface i-stress -#"ocean_model","tauvo","tauvo" ,"cmor","all",.true.,"none",2 # surface j-stress -#"ocean_model","wfo","wfo" ,"cmor","all",.true.,"none",2 # GFDL Name: PRCmE -#"ocean_model","rsntds","rsntds" ,"cmor","all",.true.,"none",2 # GFDL Name: SW -#"ocean_model","rlntds","rlntds" ,"cmor","all",.true.,"none",2 # GFDL Name: SW -#"ocean_model","hfibthermds","hfibthermds" ,"cmor","all",.true.,"none",2 # GFDL Name: heat_content_frunoff -#"ocean_model","hfrunoffds","hfrunoffds" ,"cmor","all",.true.,"none",2 # GFDL Name: runoff_heat_content -#"ocean_model","hfsifrazil","hfsifrazil" ,"cmor","all",.true.,"none",2 # GFDL Name: frazil -#"ocean_model","evs","evs" ,"cmor","all",.true.,"none",2 # GFDL Name: evap -#"ocean_model","prlq","prlq" ,"cmor","all",.true.,"none",2 # GFDL Name: fprec -#"ocean_model","prsn","prsn" ,"cmor","all",.true.,"none",2 # GFDL Name: fprec -#"ocean_model","hflso","hflso" ,"cmor","all",.true.,"none",2 # GFDL Name: latent -#"ocean_model","friver","friver" ,"cmor","all",.true.,"none",2 # GFDL Name: lrunoff -##"ocean_model","rlds","rlds" ,"cmor","all",.true.,"none",2 # GFDL Name: LW -##"ocean_model","hfss","hfss" ,"cmor","all",.true.,"none",2 # GFDL Name: sensible -#"ocean_model","hfds","hfds" ,"cmor","all",.true.,"none",2 # GFDL Name: net_heat_surface -#"ocean_model","sfdsi","sfdsi" ,"cmor","all",.true.,"none",2 # GFDL Name: salt_flux -#"ocean_model","uo","uo" ,"cmor","all",.true.,"none",2 # GFDL Name: u -#"ocean_model","vo","vo" ,"cmor","all",.true.,"none",2 # GFDL Name: v -#"ocean_model","so","so" ,"cmor","all",.true.,"none",2 # GFDL Name: salinity -#"ocean_model","masscello","masscello" ,"cmor","all",.true.,"none",2 # mass of ocean cells -#"ocean_model","pbo","pbo" ,"cmor","all",.true.,"none",2 # GFDL Name: n/a -#"ocean_model","mlotst","mlotst" ,"cmor","all",.true.,"none",2 # GFDL Name: MLD_003 -#"ocean_model","mlotstsq","mlotstsq" ,"cmor","all",.true.,"none",2 # GFDL Name: n/a -#"ocean_model","zos","zos" ,"cmor","all",.true.,"none",2 # dynamic sealevel -#"ocean_model","zossq","zossq" ,"cmor","all",.true.,"none",2 # squared zos -#"ocean_model","hfgeou","hfgeou" ,"cmor","all",.false.,"none",2 # GFDL name: geo_heat -#"ocean_model","thkcello","thkcello" ,"cmor","all",.true.,"none",2 # GFDL name: h if Bouss -#"ocean_model","opottempmint","opottempmint" ,"cmor","all",.true.,"none",2 # GFDL name: temp_int -#"ocean_model","somint","somint" ,"cmor","all",.true.,"none",2 # GFDL name: salt_int -#"ocean_model","obvfsq","obvfsq" ,"cmor","all",.true.,"none",2 # GFDL name: N2 -#"ocean_model","difvho","difvho" ,"cmor","all",.true.,"none",2 # GFDL name: N2 -#"ocean_model","difvso","difvso" ,"cmor","all",.true.,"none",2 # GFDL name: N2 -#"ocean_model","difmxylo","difmxylo" ,"cmor","all",.true.,"none",2 # GFDL name: N2 -#"ocean_model","difmxybo","difmxybo" ,"cmor","all",.true.,"none",2 # GFDL name: N2 -#"ocean_model","dispkexyfo","dispkexyfo" ,"cmor","all",.true.,"none",2 # GFDL name: N2 -## -## -## Z-Space Fields Provided for CMIP6 (CMOR Names): -##=============================================== -#"ocean_model_z","uo", "uo", "cmor_z","all",.true.,"none",2 #GFDL Name: u_z -#"ocean_model_z","vo", "vo", "cmor_z","all",.true.,"none",2 #GFDL Name: v_z -#"ocean_model_z","so", "so", "cmor_z","all",.true.,"none",2 #GFDL Name: salt_z -#"ocean_model_z","thetao","thetao","cmor_z","all",.true.,"none",2 #GFDL Name: temp_z -#"ocean_model_z","umo", "umo", "cmor_z","all",.true.,"none",2 #GFDL Name: uh_z -#"ocean_model_z","vmo", "vmo", "cmor_z","all",.true.,"none",2 #GFDL Name: vh_z -## -## Scalar ocean fields for CMIP6 (CMOR Names): -##===================== -#"ocean_model", "masso", "masso", "cmor_scalar", "all", .true., "none",2 # global mean masscello -#"ocean_model", "thetaoga", "thetaoga", "cmor_scalar", "all", .true., "none",2 # global mean theta -#"ocean_model", "soga", "soga", "cmor_scalar", "all", .true., "none",2 # global mean saln -#"ocean_model", "tosga", "tosga", "cmor_scalar", "all", .true., "none",2 # area mean SST -#"ocean_model", "sosga", "sosga", "cmor_scalar", "all", .true., "none",2 # area mean SSS -#"ocean_model", "volo", "volo", "cmor_scalar", "all", .true., "none",2 # ocean volume -# -## Scalar fields for run-time monitoring: -##======================================= -#"ocean_model", "masso", "masso", "scalar", "all", .true., "none",2 # global mean masscello -#"ocean_model", "thetaoga", "thetaoga", "scalar", "all", .true., "none",2 # global mean theta -#"ocean_model", "soga", "soga", "scalar", "all", .true., "none",2 # global mean salinity -#"ocean_model", "tosga", "tosga", "scalar", "all", .true., "none",2 # area mean SST -#"ocean_model", "sosga", "sosga", "scalar", "all", .true., "none",2 # area mean SSS -#"ocean_model", "volo", "volo", "scalar", "all", .true., "none",2 # ocean volume -#"ocean_model", "ssh_ga", "ssh_ga", "scalar", "all", .true., "none",2 # global mean ssh -#"ocean_model", "prcme_ga", "prcme_ga", "scalar", "all", .true., "none",2 # global mean prcme -#"ocean_model", "precip_ga", "precip_ga", "scalar", "all", .true., "none",2 # global mean precip -#"ocean_model", "evap_ga", "evap_ga", "scalar", "all", .true., "none",2 # global mean evaporation -#"ocean_model", "net_heat_coupler_ga", "net_heat_coupler_ga", "scalar", "all", .true., "none",2 # global mean net heat coupler -#"ocean_model", "net_heat_surface_ga", "net_heat_surface_ga", "scalar", "all", .true., "none",2 # global mean net heat surface -#"ocean_model", "sens_ga", "sens_ga", "scalar", "all", .true., "none",2 # global mean sensible heat -#"ocean_model", "LwLatSens_ga", "LwLatSens_ga", "scalar", "all", .true., "none",2 # global mean LW + latent + sensible -#"ocean_model", "sw_ga", "sw_ga", "scalar", "all", .true., "none",2 # global mean SW -#"ocean_model", "lw_ga", "lw_ga", "scalar", "all", .true., "none",2 # global mean LW -#"ocean_model", "lat_ga", "lat_ga", "scalar", "all", .true., "none",2 # global mean latent -# -## Static ocean fields: -##===================== -#"ocean_model", "geolon", "geolon", "ocean_static", "all", .false., "none", 1 -#"ocean_model", "geolat", "geolat", "ocean_static", "all", .false., "none", 1 -#"ocean_model", "geolon_c", "geolon_c", "ocean_static", "all", .false., "none", 2 -#"ocean_model", "geolat_c", "geolat_c", "ocean_static", "all", .false., "none", 2 -#"ocean_model", "geolon_u", "geolon_u", "ocean_static", "all", .false., "none", 2 -#"ocean_model", "geolat_u", "geolat_u", "ocean_static", "all", .false., "none", 2 -#"ocean_model", "geolon_v", "geolon_v", "ocean_static", "all", .false., "none", 2 -#"ocean_model", "geolat_v", "geolat_v", "ocean_static", "all", .false., "none", 2 -#"ocean_model", "area_t", "area_t", "ocean_static", "all", .false., "none", 1 -#"ocean_model", "depth_ocean", "depth_ocean", "ocean_static", "all", .false., "none", 2 -#"ocean_model", "wet", "wet", "ocean_static", "all", .false., "none", 1 -#"ocean_model", "wet_c", "wet_c", "ocean_static", "all", .false., "none", 2 -#"ocean_model", "wet_u", "wet_u", "ocean_static", "all", .false., "none", 2 -#"ocean_model", "wet_v", "wet_v", "ocean_static", "all", .false., "none", 2 -#"ocean_model", "Coriolis", "Coriolis", "ocean_static", "all", .false., "none", 2 -#"ocean_model", "dxt", "dxt", "ocean_static", "all", .false., "none", 2 -#"ocean_model", "dyt", "dyt", "ocean_static", "all", .false., "none", 2 -#"ocean_model", "dxCu", "dxCu", "ocean_static", "all", .false., "none", 2 -#"ocean_model", "dyCu", "dyCu", "ocean_static", "all", .false., "none", 2 -#"ocean_model", "dxCv", "dxCv", "ocean_static", "all", .false., "none", 2 -#"ocean_model", "dyCv", "dyCv", "ocean_static", "all", .false., "none", 2 - -# -## Static ocean fields: -##===================== -#"ocean_model", "areacello", "areacello", "ocean_static_cmor", "all", .false., "none", 2 - -#============================================================================================= -# -#====> This file can be used with diag_manager/v2.0a (or higher) <==== -# -# -# FORMATS FOR FILE ENTRIES (not all input values are used) -# ------------------------ -# -#"file_name", output_freq, "output_units", format, "time_units", "time_long_name", ... -# (opt) new_file_frequecy, (opt) "new_file_freq_units", "new_file_start_date" -# -# -#output_freq: > 0 output frequency in "output_units" -# = 0 output frequency every time step -# =-1 output frequency at end of run -# -#output_units = units used for output frequency -# (years, months, days, minutes, hours, seconds) -# -#time_units = units used to label the time axis -# (days, minutes, hours, seconds) -# -# -# FORMAT FOR FIELD ENTRIES (not all input values are used) -# ------------------------ -# -#"module_name", "field_name", "output_name", "file_name" "time_sampling", time_avg, "other_opts", packing -# -#time_avg = .true. or .false. -# -#packing = 1 double precision -# = 2 float -# = 4 packed 16-bit integers -# = 8 packed 1-byte (not tested?) diff --git a/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/360x320/geos/MOM_input b/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/360x320/geos/MOM_input deleted file mode 100644 index d2d832dc2..000000000 --- a/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/360x320/geos/MOM_input +++ /dev/null @@ -1,652 +0,0 @@ -/* This input file provides the adjustable run-time parameters for version 6 of - the Modular Ocean Model (MOM6), a numerical ocean model developed at NOAA-GFDL. - Where appropriate, parameters use usually given in MKS units. - - This particular file is for the example in global_ALE. - - This MOM_input file typically contains only the non-default values that are - needed to reproduce this example. A full list of parameters for this example - can be found in the corresponding MOM_parameter_doc.all file which is - generated by the model at run-time. */ - -TRIPOLAR_N = True ! [Boolean] default = False - ! Use tripolar connectivity at the northern edge of the - ! domain. With TRIPOLAR_N, NIGLOBAL must be even. -!SYMMETRIC_MEMORY_ = False ! [Boolean] - ! If defined, the velocity point data domain includes - ! every face of the thickness points. In other words, - ! some arrays are larger than others, depending on where - ! they are on the staggered grid. Also, the starting - ! index of the velocity-point arrays is usually 0, not 1. - ! This can only be set at compile time. -!STATIC_MEMORY_ = False ! [Boolean] - ! If STATIC_MEMORY_ is defined, the principle variables - ! will have sizes that are statically determined at - ! compile time. Otherwise the sizes are not determined - ! until run time. The STATIC option is substantially - ! faster, but does not allow the PE count to be changed - ! at run time. This can only be set at compile time. -NIHALO = 4 ! default = 2 - ! The number of halo points on each side in the - ! x-direction. With STATIC_MEMORY_ this is set as NIHALO_ - ! in MOM_memory.h at compile time; without STATIC_MEMORY_ - ! the default is NIHALO_ in MOM_memory.h (if defined) or 2. -NJHALO = 4 ! default = 2 - ! The number of halo points on each side in the - ! y-direction. With STATIC_MEMORY_ this is set as NJHALO_ - ! in MOM_memory.h at compile time; without STATIC_MEMORY_ - ! the default is NJHALO_ in MOM_memory.h (if defined) or 2. -NIGLOBAL = 360 ! - ! The total number of thickness grid points in the - ! x-direction in the physical domain. With STATIC_MEMORY_ - ! this is set in MOM_memory.h at compile time. -NJGLOBAL = 320 ! - ! The total number of thickness grid points in the - ! y-direction in the physical domain. With STATIC_MEMORY_ - ! this is set in MOM_memory.h at compile time. -!NIPROC = 8 ! - ! The number of processors in the x-direction. With - ! STATIC_MEMORY_ this is set in MOM_memory.h at compile time. -!NJPROC = 8 ! - ! The number of processors in the x-direction. With - ! STATIC_MEMORY_ this is set in MOM_memory.h at compile time. -LAYOUT = 36, 10 ! - ! The processor layout that was acutally used. -IO_LAYOUT = 1, 1 ! default = 0 - ! The processor layout to be used, or 0,0 to automatically - ! set the io_layout to be the same as the layout. - -! === module MOM_grid === -! Parameters providing information about the vertical grid. - -! === module MOM_verticalGrid === -! Parameters providing information about the vertical grid. - -! === module MOM === -DIABATIC_FIRST = True ! [Boolean] default = False - ! If true, apply diabatic and thermodynamic processes, - ! including buoyancy forcing and mass gain or loss, - ! before stepping the dynamics forward. -THICKNESSDIFFUSE = True ! [Boolean] default = False - ! If true, interfaces or isopycnal surfaces are diffused, - ! depending on the value of FULL_THICKNESSDIFFUSE. -THICKNESSDIFFUSE_FIRST = True ! [Boolean] default = False - ! If true, do thickness diffusion before dynamics. - ! This is only used if THICKNESSDIFFUSE is true. -DT = 450.0 ! [s] - ! The (baroclinic) dynamics time step. The time-step that - ! is actually used will be an integer fraction of the - ! forcing time-step (DT_FORCING in ocean-only mode or the - ! coupling timestep in coupled mode.) -DT_THERM = 7200.0 ! [s] default = 3600.0 - ! The thermodynamic and tracer advection time step. - ! Ideally DT_THERM should be an integer multiple of DT - ! and less than the forcing or coupling time-step. - ! By default DT_THERM is set to DT. -DTBT_RESET_PERIOD = 0.0 ! [s] default = 7200.0 - ! The period between recalculations of DTBT (if DTBT <= 0). - ! If DTBT_RESET_PERIOD is negative, DTBT is set based - ! only on information available at initialization. If - ! dynamic, DTBT will be set at least every forcing time - ! step, and if 0, every dynamics time step. The default is - ! set by DT_THERM. This is only used if SPLIT is true. -FRAZIL = True ! [Boolean] default = False - ! If true, water freezes if it gets too cold, and the - ! the accumulated heat deficit is returned in the - ! surface state. FRAZIL is only used if - ! ENABLE_THERMODYNAMICS is true. -BOUND_SALINITY = True ! [Boolean] default = False - ! If true, limit salinity to being positive. (The sea-ice - ! model may ask for more salt than is available and - ! drive the salinity negative otherwise.) -C_P = 3925.0 ! [J kg-1 K-1] default = 3991.86795711963 - ! The heat capacity of sea water, approximated as a - ! constant. This is only used if ENABLE_THERMODYNAMICS is - ! true. The default value is from the TEOS-10 definition - ! of conservative temperature. -CHECK_BAD_SURFACE_VALS = True ! [Boolean] default = False - ! If true, check the surface state for ridiculous values. -SAVE_INITIAL_CONDS = True ! [Boolean] default = False - ! If true, write the initial conditions to a file given - ! by IC_OUTPUT_FILE. -PARALLEL_RESTARTFILES = True ! [Boolean] default = False - ! If true, each processor writes its own restart file, - ! otherwise a single restart file is generated - -! === module MOM_tracer_registry === -TFREEZE_DP = -7.75E-08 ! [deg C Pa-1] default = 0.0 - ! When TFREEZE_FORM=LINEAR, - ! this is the derivative of the freezing potential - ! temperature with pressure. - -! === module MOM_tracer_flow_control === -USE_IDEAL_AGE_TRACER = True ! [Boolean] default = False - ! If true, use the ideal_age_example tracer package. - -! === module ideal_age_example === -INPUTDIR = "INPUT" ! default = "." - ! The directory in which input files are found. -COORD_CONFIG = "file" ! - ! This specifies how layers are to be defined: - ! file - read coordinate information from the file - ! specified by (COORD_FILE). - ! linear - linear based on interfaces not layesrs. - ! ts_ref - use reference temperature and salinity - ! ts_range - use range of temperature and salinity - ! (T_REF and S_REF) to determine surface density - ! and GINT calculate internal densities. - ! gprime - use reference density (RHO_0) for surface - ! density and GINT calculate internal densities. - ! ts_profile - use temperature and salinity profiles - ! (read from COORD_FILE) to set layer densities. - ! USER - call a user modified routine. -COORD_FILE = "Layer_coord.nc" ! - ! The file from which the coordinate densities are read. - -! === module MOM_grid_init === -GRID_CONFIG = "mosaic" ! - ! A character string that determines the method for - ! defining the horizontal grid. Current options are: - ! mosaic - read the grid from a mosaic (supergrid) - ! file set by GRID_FILE. - ! cartesian - use a (flat) Cartesian grid. - ! spherical - use a simple spherical grid. - ! mercator - use a Mercator spherical grid. -GRID_FILE = "ocean_hgrid.nc" ! - ! Name of the file from which to read horizontal grid data. -TOPO_CONFIG = "file" ! - ! This specifies how bathymetry is specified: - ! file - read bathymetric information from the file - ! specified by (TOPO_FILE). - ! flat - flat bottom set to MAXIMUM_DEPTH. - ! bowl - an analytically specified bowl-shaped basin - ! ranging between MAXIMUM_DEPTH and MINIMUM_DEPTH. - ! spoon - a similar shape to 'bowl', but with an vertical - ! wall at the southern face. - ! halfpipe - a zonally uniform channel with a half-sine - ! profile in the meridional direction. - ! benchmark - use the benchmark test case topography. - ! DOME - use a slope and channel configuration for the - ! DOME sill-overflow test case. - ! DOME2D - use a shelf and slope configuration for the - ! DOME2D gravity current/overflow test case. - ! seamount - Gaussian bump for spontaneous motion test case. - ! USER - call a user modified routine. -MAXIMUM_DEPTH = 6500.0 ! [m] - ! The maximum depth of the ocean. -MINIMUM_DEPTH = 0.5 ! [m] default = 0.0 - ! If MASKING_DEPTH is unspecified, then anything shallower than - ! MINIMUM_DEPTH is assumed to be land and all fluxes are masked out. - ! If MASKING_DEPTH is specified, then all depths shallower than - ! MINIMUM_DEPTH but depper than MASKING_DEPTH are rounded to MINIMUM_DEPTH. -CHANNEL_CONFIG = "global_1deg" ! default = "none" - ! A parameter that determines which set of channels are - ! restricted to specific widths. Options are: - ! none - All channels have the grid width. - ! global_1deg - Sets 16 specific channels appropriate - ! for a 1-degree model, as used in CM2G. - ! list - Read the channel locations and widths from a - ! text file, like MOM_channel_list in the MOM_SIS - ! test case. - ! file - Read open face widths everywhere from a - ! NetCDF file on the model grid. -REMAPPING_SCHEME = "PPM_H4" ! default = "PLM" - ! This sets the reconstruction scheme used - ! for vertical remapping for all variables. - ! It can be one of the following schemes: - ! PCM (1st-order accurate) - ! PLM (2nd-order accurate) - ! PPM_H4 (3rd-order accurate) - ! PPM_IH4 (3rd-order accurate) - ! PQM_IH4IH3 (4th-order accurate) - ! PQM_IH6IH5 (5th-order accurate) -INIT_LAYERS_FROM_Z_FILE = True ! [Boolean] default = False - ! If true, intialize the layer thicknesses, temperatures, - ! and salnities from a Z-space file on a latitude- - ! longitude grid. -TEMP_SALT_Z_INIT_FILE = "WOA05_pottemp_salt.nc" ! default = "temp_salt_z.nc" - ! The name of the z-space input file used to initialize - ! the layer thicknesses, temperatures and salinities. -Z_INIT_FILE_PTEMP_VAR = "PTEMP" ! default = "ptemp" - ! The name of the potential temperature variable in - ! TEMP_SALT_Z_INIT_FILE. -Z_INIT_FILE_SALT_VAR = "SALT" ! default = "salt" - ! The name of the salinity variable in - ! TEMP_SALT_Z_INIT_FILE. - -! === module MOM_MEKE === -USE_MEKE = True ! [Boolean] default = False - ! If true, turns on the MEKE scheme which calculates - ! a sub-grid mesoscale eddy kinetic energy budget. -MEKE_GMCOEFF = 1.0 ! [nondim] default = -1.0 - ! The efficiency of the conversion of potential energy - ! into MEKE by the thickness mixing parameterization. - ! If MEKE_GMCOEFF is negative, this conversion is not - ! used or calculated. - -! === module MOM_lateral_mixing_coeffs === -USE_VARIABLE_MIXING = True ! [Boolean] default = False - ! If true, the variable mixing code will be called. This - ! allows diagnostics to be created even if the scheme is - ! not used. If KHTR_SLOPE_CFF>0 or KhTh_Slope_Cff>0, - ! this is set to true regardless of what is in the - ! parameter file. -RESOLN_SCALED_KH = True ! [Boolean] default = False - ! If true, the Laplacian lateral viscosity is scaled away - ! when the first baroclinic deformation radius is well - ! resolved. -RESOLN_SCALED_KHTH = True ! [Boolean] default = False - ! If true, the interface depth diffusivity is scaled away - ! when the first baroclinic deformation radius is well - ! resolved. - -! === module MOM_wave_speed === -TIDES = True ! [Boolean] default = False - ! If true, apply tidal momentum forcing. -ETA_TOLERANCE = 1.0E-06 ! [m] default = 3.15E-09 - ! The tolerance for the differences between the - ! barotropic and baroclinic estimates of the sea surface - ! height due to the fluxes through each face. The total - ! tolerance for SSH is 4 times this value. The default - ! is 0.5*NK*ANGSTROM, and this should not be set less x - ! than about 10^-15*MAXIMUM_DEPTH. -VELOCITY_TOLERANCE = 1.0E-04 ! [m s-1] default = 3.0E+08 - ! The tolerance for barotropic velocity discrepancies - ! between the barotropic solution and the sum of the - ! layer thicknesses. -BOUND_CORIOLIS = True ! [Boolean] default = False - ! If true, the Coriolis terms at u-points are bounded by - ! the four estimates of (f+rv)v from the four neighboring - ! v-points, and similarly at v-points. This option would - ! have no effect on the SADOURNY Coriolis scheme if it - ! were possible to use centered difference thickness fluxes. - -! === module MOM_tidal_forcing === -TIDE_M2 = True ! [Boolean] default = False - ! If true, apply tidal momentum forcing at the M2 - ! frequency. This is only used if TIDES is true. -TIDE_SAL_SCALAR_VALUE = 0.094 ! [m m-1] - ! The constant of proportionality between sea surface - ! height (really it should be bottom pressure) anomalies - ! and bottom geopotential anomalies. This is only used if - ! TIDES and TIDE_USE_SAL_SCALAR are true. -MASS_WEIGHT_IN_PRESSURE_GRADIENT = True ! [Boolean] default = False - ! If true, use mass weighting when interpolation T/S for - ! top/bottom integrals in AFV pressure gradient calculation. - -! === module MOM_hor_visc === -LAPLACIAN = True ! [Boolean] default = False - ! If true, use a Laplacian horizontal viscosity. -KH_VEL_SCALE = 0.01 ! [m s-1] default = 0.0 - ! The velocity scale which is multiplied by the grid - ! spacing to calculate the Laplacian viscosity. - ! The final viscosity is the largest of this scaled - ! viscosity, the Smagorinsky viscosity and KH. -AH_VEL_SCALE = 0.05 ! [m s-1] default = 0.0 - ! The velocity scale which is multiplied by the cube of - ! the grid spacing to calculate the Laplacian viscosity. - ! The final viscosity is the largest of this scaled - ! viscosity, the Smagorinsky viscosity and AH. -SMAGORINSKY_AH = True ! [Boolean] default = False - ! If true, use a biharmonic Smagorinsky nonlinear eddy - ! viscosity. -SMAG_BI_CONST = 0.06 ! [nondim] default = 0.0 - ! The nondimensional biharmonic Smagorinsky constant, - ! typically 0.015 - 0.06. - -! === module MOM_vert_friction === -CHANNEL_DRAG = True ! [Boolean] default = False - ! If true, the bottom drag is exerted directly on each - ! layer proportional to the fraction of the bottom it - ! overlies. -!DYNAMIC_VISCOUS_ML = True ! [Boolean] default = False - ! If true, use a bulk Richardson number criterion to - ! determine the mixed layer thickness for viscosity. -PRANDTL_TURB = 1.0 ! [nondim] default = 0.0 - ! The turbulent Prandtl number applied to shear - ! instability. -U_TRUNC_FILE = "U_velocity_truncations" ! default = "" - ! The absolute path to a file into which the accelerations - ! leading to zonal velocity truncations are written. - ! Undefine this for efficiency if this diagnostic is not - ! needed. -V_TRUNC_FILE = "V_velocity_truncations" ! default = "" - ! The absolute path to a file into which the accelerations - ! leading to meridional velocity truncations are written. - ! Undefine this for efficiency if this diagnostic is not - ! needed. -KV = 1.0E-04 ! [m2 s-1] - ! The background kinematic viscosity in the interior. - ! The molecular value, ~1e-6 m2 s-1, may be used. -HBBL = 10.0 ! [m] - ! The thickness of a bottom boundary layer with a - ! viscosity of KVBBL if BOTTOMDRAGLAW is not defined, or - ! the thickness over which near-bottom velocities are - ! averaged for the drag law if BOTTOMDRAGLAW is defined - ! but LINEAR_DRAG is not. -MAXVEL = 6.0 ! [m s-1] default = 3.0E+08 - ! The maximum velocity allowed before the velocity - ! components are truncated. - -! === module MOM_PointAccel === -INTERPOLATE_RES_FN = False ! [Boolean] default = True - ! If true, interpolate the resolution function to the - ! velocity points from the thickness points; otherwise - ! interpolate the wave speed and calculate the resolution - ! function independently at each point. -GILL_EQUATORIAL_LD = True ! [Boolean] default = False - ! If true, uses Gill's definition of the baroclinic - ! equatorial deformation radius, otherwise, if false, use - ! Pedlosky's definition. These definitions differ by a factor - ! of 2 infront of the beta term in the denominator. Gill'sis the more appropriate definition. - -! === module MOM_set_visc === -DRAG_BG_VEL = 0.1 ! [m s-1] default = 0.0 - ! DRAG_BG_VEL is either the assumed bottom velocity (with - ! LINEAR_DRAG) or an unresolved velocity that is - ! combined with the resolved velocity to estimate the - ! velocity magnitude. DRAG_BG_VEL is only used when - ! BOTTOMDRAGLAW is defined. -BBL_USE_EOS = True ! [Boolean] default = False - ! If true, use the equation of state in determining the - ! properties of the bottom boundary layer. Otherwise use - ! the layer target potential densities. -BBL_THICK_MIN = 0.1 ! [m] default = 0.0 - ! The minimum bottom boundary layer thickness that can be - ! used with BOTTOMDRAGLAW. This might be - ! Kv / (cdrag * drag_bg_vel) to give Kv as the minimum - ! near-bottom viscosity. - -! === module MOM_barotropic === -BOUND_BT_CORRECTION = True ! [Boolean] default = False - ! If true, the corrective pseudo mass-fluxes into the - ! barotropic solver are limited to values that require - ! less than 0.1*MAXVEL to be accommodated. -!BT x-halo = 0 ! - ! The barotropic x-halo size that is actually used. -!BT y-halo = 0 ! - ! The barotropic y-halo size that is actually used. -BT_PROJECT_VELOCITY = True ! [Boolean] default = False - ! If true, step the barotropic velocity first and project - ! out the velocity tendancy by 1+BEBT when calculating the - ! transport. The default (false) is to use a predictor - ! continuity step to find the pressure field, and then - ! to do a corrector continuity step using a weighted - ! average of the old and new velocities, with weights - ! of (1-BEBT) and BEBT. -BT_THICK_SCHEME = "FROM_BT_CONT" ! default = "HYBRID" - ! A string describing the scheme that is used to set the - ! open face areas used for barotropic transport and the - ! relative weights of the accelerations. Valid values are: - ! ARITHMETIC - arithmetic mean layer thicknesses - ! HARMONIC - harmonic mean layer thicknesses - ! HYBRID (the default) - use arithmetic means for - ! layers above the shallowest bottom, the harmonic - ! mean for layers below, and a weighted average for - ! layers that straddle that depth - ! FROM_BT_CONT - use the average thicknesses kept - ! in the h_u and h_v fields of the BT_cont_type -BEBT = 0.2 ! [nondim] default = 0.1 - ! BEBT determines whether the barotropic time stepping - ! uses the forward-backward time-stepping scheme or a - ! backward Euler scheme. BEBT is valid in the range from - ! 0 (for a forward-backward treatment of nonrotating - ! gravity waves) to 1 (for a backward Euler treatment). - ! In practice, BEBT must be greater than about 0.05. -DTBT = -0.95 ! [s or nondim] default = -0.98 - ! The barotropic time step, in s. DTBT is only used with - ! the split explicit time stepping. To set the time step - ! automatically based the maximum stable value use 0, or - ! a negative value gives the fraction of the stable value. - ! Setting DTBT to 0 is the same as setting it to -0.98. - ! The value of DTBT that will actually be used is an - ! integer fraction of DT, rounding down. - -! === module MOM_thickness_diffuse === -KHTH = 600.0 ! [m2 s-1] default = 0.0 - ! The background horizontal thickness diffusivity. -KHTH_MAX = 900.0 ! [m2 s-1] default = 0.0 - ! The maximum horizontal thickness diffusivity. -KHTH_USE_FGNV_STREAMFUNCTION = True ! [Boolean] default = False - ! If true, use the streamfunction formulation of - ! Ferrari et al., 2010, which effectively emphasizes - ! graver vertical modes by smoothing in the vertical. -FGNV_C_MIN = 0.01 ! [m s-1] default = 0.0 - ! A minium wave speed used in the Ferrari et al., 2010, - ! streamfunction formulation. - -! === module MOM_mixed_layer_restrat === -MIXEDLAYER_RESTRAT = True ! [Boolean] default = False - ! If true, a density-gradient dependent re-stratifying - ! flow is imposed in the mixed layer. - ! This is only used if BULKMIXEDLAYER is true. -FOX_KEMPER_ML_RESTRAT_COEF = 20.0 ! [nondim] default = 0.0 - ! A nondimensional coefficient that is proportional to - ! the ratio of the deformation radius to the dominant - ! lengthscale of the submesoscale mixed layer - ! instabilities, times the minimum of the ratio of the - ! mesoscale eddy kinetic energy to the large-scale - ! geostrophic kinetic energy or 1 plus the square of the - ! grid spacing over the deformation radius, as detailed - ! by Fox-Kemper et al. (2010) - -! === module MOM_diabatic_driver === -! The following parameters are used for diabatic processes. -BBL_MIXING_AS_MAX = False ! [Boolean] default = True - ! If true, take the maximum of the diffusivity from the - ! BBL mixing and the other diffusivities. Otherwise, - ! diffusiviy from the BBL_mixing is simply added. -USE_LOTW_BBL_DIFFUSIVITY = True ! [Boolean] default = False - ! If true, uses a simple, imprecise but non-coordinate dependent, model - ! of BBL mixing diffusivity based on Law of the Wall. Otherwise, uses - ! the original BBL scheme. -KD_MAX = 0.1 ! [m2 s-1] default = -1.0 - ! The maximum permitted increment for the diapycnal - ! diffusivity from TKE-based parameterizations, or a - ! negative value for no limit. -HENYEY_IGW_BACKGROUND = True ! [Boolean] default = False - ! If true, use a latitude-dependent scaling for the near - ! surface background diffusivity, as described in - ! Harrison & Hallberg, JPO 2008. -N2_FLOOR_IOMEGA2 = 0.0 ! [nondim] default = 1.0 - ! The floor applied to N2(k) scaled by Omega^2: - ! If =0., N2(k) is simply positive definite. - ! If =1., N2(k) > Omega^2 everywhere. -KD = 2.0E-05 ! [m2 s-1] - ! The background diapycnal diffusivity of density in the - ! interior. Zero or the molecular value, ~1e-7 m2 s-1, - ! may be used. -KD_MIN = 2.0E-06 ! [m2 s-1] default = 2.0E-07 - ! The minimum diapycnal diffusivity. -INT_TIDE_DISSIPATION = True ! [Boolean] default = False - ! If true, use an internal tidal dissipation scheme to - ! drive diapycnal mixing, along the lines of St. Laurent - ! et al. (2002) and Simmons et al. (2004). -INT_TIDE_DECAY_SCALE = 300.3003003003003 ! [m] default = 0.0 - ! The decay scale away from the bottom for tidal TKE with - ! the new coding when INT_TIDE_DISSIPATION is used. -KAPPA_ITIDES = 6.28319E-04 ! [m-1] default = 6.283185307179586E-04 - ! A topographic wavenumber used with INT_TIDE_DISSIPATION. - ! The default is 2pi/10 km, as in St.Laurent et al. 2002. -KAPPA_H2_FACTOR = 0.75 ! [nondim] default = 1.0 - ! A scaling factor for the roughness amplitude with nINT_TIDE_DISSIPATION. -TKE_ITIDE_MAX = 0.1 ! [W m-2] default = 1000.0 - ! The maximum internal tide energy source availble to mix - ! above the bottom boundary layer with INT_TIDE_DISSIPATION. -READ_TIDEAMP = True ! [Boolean] default = False - ! If true, read a file (given by TIDEAMP_FILE) containing - ! the tidal amplitude with INT_TIDE_DISSIPATION. -TIDEAMP_FILE = "tidal_amplitude.nc" ! default = "tideamp.nc" - ! The path to the file containing the spatially varying tidal amplitudes with - ! INT_TIDE_DISSIPATION. -H2_FILE = "topog.nc" ! - ! The path to the file containing the sub-grid-scale - ! topographic roughness amplitude with INT_TIDE_DISSIPATION. - -! === module MOM_kappa_shear === -! Parameterization of shear-driven turbulence following Jackson, Hallberg and Legg, JPO 2008 -USE_JACKSON_PARAM = True ! [Boolean] default = False - ! If true, use the Jackson-Hallberg-Legg (JPO 2008) - ! shear mixing parameterization. -MAX_RINO_IT = 25 ! [nondim] default = 50 - ! The maximum number of iterations that may be used to - ! estimate the Richardson number driven mixing. - -! === module MOM_KPP === -! This is the MOM wrapper to CVmix:KPP -! See http://code.google.com/p/cvmix/ - -! === module MOM_diffConvection === -! This module implements enhanced diffusivity as a -! function of static stability, N^2. -CONVECTION% -%CONVECTION - -! === module MOM_entrain_diffusive === -MAX_ENT_IT = 20 ! default = 5 - ! The maximum number of iterations that may be used to - ! calculate the interior diapycnal entrainment. -TOLERANCE_ENT = 1.0E-05 ! [m] default = 2.683281572999748E-05 - ! The tolerance with which to solve for entrainment values. - -! === module MOM_mixed_layer === -BULK_RI_ML = 0.05 ! [nondim] - ! The efficiency with which mean kinetic energy released - ! by mechanically forced entrainment of the mixed layer - ! is converted to turbulent kinetic energy. -HMIX_MIN = 2.0 ! [m] default = 0.0 - ! The minimum mixed layer depth if the mixed layer depth - ! is determined dynamically. - -! === module MOM_regularize_layers === - -! === module MOM_opacity === -VAR_PEN_SW = True ! [Boolean] default = False - ! If true, use one of the CHL_A schemes specified by - ! OPACITY_SCHEME to determine the e-folding depth of - ! incoming short wave radiation. -CHL_FILE = "seawifs_1998-2006_smoothed_2X.nc" ! - ! CHL_FILE is the file containing chl_a concentrations in - ! the variable CHL_A. It is used when VAR_PEN_SW and - ! CHL_FROM_FILE are true. -PEN_SW_NBANDS = 3 ! default = 1 - ! The number of bands of penetrating shortwave radiation. - -! === module MOM_tracer_advect === -TRACER_ADVECTION_SCHEME = "PPM:H3" ! default = "PLM" - ! The horizontal transport scheme for tracers: - ! PLM - Piecewise Linear Method - ! PPM:H3 - Piecewise Parabolic Method (Huyhn 3rd order) - -! === module MOM_tracer_hor_diff === -KHTR = 600.0 ! [m2 s-1] default = 0.0 - ! The background along-isopycnal tracer diffusivity. -KHTR_MIN = 50.0 ! [m2 s-1] default = 0.0 - ! The minimum along-isopycnal tracer diffusivity. -KHTR_MAX = 900.0 ! [m2 s-1] default = 0.0 - ! The maximum along-isopycnal tracer diffusivity. - -! === module MOM_surface_forcing === -BUOY_CONFIG = "file" ! - ! The character string that indicates how buoyancy forcing - ! is specified. Valid options include (file), (zero), - ! (linear), (USER), and (NONE). -ARCHAIC_OMIP_FORCING_FILE = False ! [Boolean] default = True - ! If true, use the forcing variable decomposition from - ! the old German OMIP prescription that predated CORE. If - ! false, use the variable groupings available from MOM - ! output diagnostics of forcing variables. -LONGWAVE_FILE = "ocean_forcing_daily.nc" ! - ! The file with the longwave heat flux, in the variable - ! given by LONGWAVE_FORCING_VAR. -SHORTWAVE_FILE = "ocean_forcing_daily.nc" ! - ! The file with the shortwave heat flux, in the variable - ! given by SHORTWAVE_FORCING_VAR. -EVAPORATION_FILE = "ocean_forcing_daily.nc" ! - ! The file with the evaporative moisture flux, in the - ! variable given by EVAP_FORCING_VAR. -LATENTHEAT_FILE = "ocean_forcing_daily.nc" ! - ! The file with the latent heat flux, in the variable - ! given by LATENT_FORCING_VAR. -SENSIBLEHEAT_FILE = "ocean_forcing_daily.nc" ! - ! The file with the sensible heat flux, in the variable - ! given by SENSIBLE_FORCING_VAR. -RAIN_FILE = "ocean_precip_monthly.nc" ! - ! The file with the liquid precipitation flux, in the - ! variable given by RAIN_FORCING_VAR. -SNOW_FILE = "ocean_precip_monthly.nc" ! - ! The file with the frozen precipitation flux, in the - ! variable given by SNOW_FORCING_VAR. -RUNOFF_FILE = "ocean_precip_monthly.nc" ! - ! The file with the fresh and frozen runoff/calving - ! fluxes, in variables given by LIQ_RUNOFF_FORCING_VAR - ! and FROZ_RUNOFF_FORCING_VAR. -SSTRESTORE_FILE = "ocean_forcing_daily.nc" ! - ! The file with the SST toward which to restore in the - ! variable given by SST_RESTORE_VAR. -SALINITYRESTORE_FILE = "ocean_forcing_daily.nc" ! - ! The file with the surface salinity toward which to - ! restore in the variable given by SSS_RESTORE_VAR. -WIND_CONFIG = "file" ! - ! The character string that indicates how wind forcing - ! is specified. Valid options include (file), (2gyre), - ! (1gyre), (gyres), (zero), and (USER). -WIND_FILE = "ocean_forcing_daily.nc" ! - ! The file in which the wind stresses are found in - ! variables STRESS_X and STRESS_Y. -WINDSTRESS_X_VAR = "taux" ! default = "STRESS_X" - ! The name of the x-wind stress variable in WIND_FILE. -WINDSTRESS_Y_VAR = "tauy" ! default = "STRESS_Y" - ! The name of the y-wind stress variable in WIND_FILE. -!WINDSTRESS_STAGGER = "C" ! default = "A" - ! A character indicating how the wind stress components - ! are staggered in WIND_FILE. This may be A or C for now. -RESTOREBUOY = True ! [Boolean] default = False - ! If true, the buoyancy fluxes drive the model back - ! toward some specified surface state with a rate - ! given by FLUXCONST. -FLUXCONST = 0.5 ! [m day-1] - ! The constant that relates the restoring surface fluxes - ! to the relative surface anomalies (akin to a piston - ! velocity). Note the non-MKS units. -GUST_CONST = 0.02 ! [Pa] default = 0.0 - ! The background gustiness in the winds. -FIX_USTAR_GUSTLESS_BUG = False ! [Boolean] default = True - ! If true correct a bug in the time-averaging of the gustless wind friction - ! velocity - - -! === module MOM_sum_output === -MAXTRUNC = 5000 ! [truncations save_interval-1] default = 0 - ! The run will be stopped, and the day set to a very - ! large value if the velocity is truncated more than - ! MAXTRUNC times between energy saves. Set MAXTRUNC to 0 - ! to stop if there is any truncation of velocities. -MAXCPU = 2.88E+04 ! [wall-clock seconds] default = -1.0 - ! The maximum amount of cpu time per processor for which - ! MOM should run before saving a restart file and - ! quitting with a return value that indicates that a - ! further run is required to complete the simulation. - ! If automatic restarts are not desired, use a negative - ! value for MAXCPU. MAXCPU has units of wall-clock - ! seconds, so the actual CPU time used is larger by a - ! factor of the number of processors used. - -! === module MOM_main (MOM_driver) === -DT_FORCING = 7200.0 ! [s] default = 3600.0 - ! The time step for changing forcing, coupling with other - ! components, or potentially writing certain diagnostics. - ! The default value is given by DT. -RESTART_CONTROL = 3 ! default = 1 - ! An integer whose bits encode which restart files are - ! written. Add 2 (bit 1) for a time-stamped file, and odd - ! (bit 0) for a non-time-stamped file. A non-time-stamped - ! restart file is saved at the end of the run segment - ! for any non-negative value. -RESTINT = 365.0 ! [days] default = 0.0 - ! The interval between saves of the restart file in units - ! of TIMEUNIT. Use 0 (the default) to not save - ! incremental restart files at all. -ENERGYSAVEDAYS = 0.5 ! [days] default = 7200.0 - ! The interval in units of TIMEUNIT between saves of the - ! energies of the run and other globally summed diagnostics. diff --git a/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/360x320/geos/MOM_override b/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/360x320/geos/MOM_override deleted file mode 100644 index 0885fdcad..000000000 --- a/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/360x320/geos/MOM_override +++ /dev/null @@ -1,26 +0,0 @@ -! Blank file in which we can put "overrides" for parameters -NK = 75 -#override USE_REGRIDDING = True -#override BULKMIXEDLAYER = False -#override COORD_FILE = "layer_coord.nc" -USE_STORED_SLOPES = True -USE_NEUTRAL_DIFFUSION = True -SIMPLE_TKE_TO_KD = True -REGRIDDING_COORDINATE_MODE = "Z*" -ALE_COORDINATE_CONFIG = "FILE:vgrid.nc,dz" -HMIX_FIXED = 0.5 -CFL_TRUNCATE_RAMP_TIME = 7200. -Z_INIT_ALE_REMAPPING = True -ENERGETICS_SFC_PBL = True - -! disable checksums -RESTART_CHECKSUMS_REQUIRED = False - -#override DT_THERM = 450. -BAD_VAL_SST_MIN = -3.0 -BAD_VAL_SSS_MAX = 55.0 -HFREEZE = 10.0 - -!VERBOSITY = 9 -!DEBUG = True -!REPORT_UNUSED_PARAMS = True diff --git a/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/360x320/geos/README.md b/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/360x320/geos/README.md deleted file mode 100644 index 20dbdd2ab..000000000 --- a/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/360x320/geos/README.md +++ /dev/null @@ -1 +0,0 @@ -This configuration was adapted from: https://github.com/NOAA-GFDL/MOM6-examples/tree/dev/gfdl/ice_ocean_SIS2/OM_1deg diff --git a/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/360x320/input.nml b/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/360x320/input.nml deleted file mode 100644 index 6521406ed..000000000 --- a/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/360x320/input.nml +++ /dev/null @@ -1,11 +0,0 @@ - &MOM_input_nml - output_directory = './', - input_filename = 'r' - restart_input_dir = 'INPUT/', - restart_output_dir = 'RESTART/', - parameter_filename = 'MOM_input', - 'MOM_override' / - - &diag_manager_nml - / - diff --git a/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/360x320/soca/MOM_input b/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/360x320/soca/MOM_input deleted file mode 100755 index 028341fdf..000000000 --- a/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/360x320/soca/MOM_input +++ /dev/null @@ -1,785 +0,0 @@ -! This file was written by the model and records all non-layout or debugging parameters used at run-time. - -! === module MOM === - -! === module MOM_unit_scaling === -! Parameters for doing unit scaling of variables. -USE_REGRIDDING = True ! [Boolean] default = False - ! If True, use the ALE algorithm (regridding/remapping). If False, use the - ! layered isopycnal algorithm. -THICKNESSDIFFUSE = True ! [Boolean] default = False - ! If true, interface heights are diffused with a coefficient of KHTH. -THICKNESSDIFFUSE_FIRST = True ! [Boolean] default = False - ! If true, do thickness diffusion before dynamics. This is only used if - ! THICKNESSDIFFUSE is true. -DT = 450.0 ! [s] - ! The (baroclinic) dynamics time step. The time-step that is actually used will - ! be an integer fraction of the forcing time-step (DT_FORCING in ocean-only mode - ! or the coupling timestep in coupled mode.) -DT_THERM = 7200.0 ! [s] default = 1800.0 - ! The thermodynamic and tracer advection time step. Ideally DT_THERM should be - ! an integer multiple of DT and less than the forcing or coupling time-step, - ! unless THERMO_SPANS_COUPLING is true, in which case DT_THERM can be an integer - ! multiple of the coupling timestep. By default DT_THERM is set to DT. -THERMO_SPANS_COUPLING = True ! [Boolean] default = False - ! If true, the MOM will take thermodynamic and tracer timesteps that can be - ! longer than the coupling timestep. The actual thermodynamic timestep that is - ! used in this case is the largest integer multiple of the coupling timestep - ! that is less than or equal to DT_THERM. -DTBT_RESET_PERIOD = -1.0 ! [s] default = 7200.0 - ! The period between recalculations of DTBT (if DTBT <= 0). If DTBT_RESET_PERIOD - ! is negative, DTBT is set based only on information available at - ! initialization. If 0, DTBT will be set every dynamics time step. The default - ! is set by DT_THERM. This is only used if SPLIT is true. -FRAZIL = True ! [Boolean] default = False - ! If true, water freezes if it gets too cold, and the accumulated heat deficit - ! is returned in the surface state. FRAZIL is only used if - ! ENABLE_THERMODYNAMICS is true. -BOUND_SALINITY = True ! [Boolean] default = False - ! If true, limit salinity to being positive. (The sea-ice model may ask for more - ! salt than is available and drive the salinity negative otherwise.) -MIN_SALINITY = 0.01 ! [PPT] default = 0.0 - ! The minimum value of salinity when BOUND_SALINITY=True. -C_P = 3925.0 ! [J kg-1 K-1] default = 3991.86795711963 - ! The heat capacity of sea water, approximated as a constant. This is only used - ! if ENABLE_THERMODYNAMICS is true. The default value is from the TEOS-10 - ! definition of conservative temperature. -USE_PSURF_IN_EOS = False ! [Boolean] default = True - ! If true, always include the surface pressure contributions in equation of - ! state calculations. -CHECK_BAD_SURFACE_VALS = True ! [Boolean] default = False - ! If true, check the surface state for ridiculous values. -BAD_VAL_SSH_MAX = 50.0 ! [m] default = 20.0 - ! The value of SSH above which a bad value message is triggered, if - ! CHECK_BAD_SURFACE_VALS is true. -BAD_VAL_SSS_MAX = 75.0 ! [PPT] default = 45.0 - ! The value of SSS above which a bad value message is triggered, if - ! CHECK_BAD_SURFACE_VALS is true. -BAD_VAL_SST_MAX = 55.0 ! [deg C] default = 45.0 - ! The value of SST above which a bad value message is triggered, if - ! CHECK_BAD_SURFACE_VALS is true. -BAD_VAL_SST_MIN = -3.0 ! [deg C] default = -2.1 - ! The value of SST below which a bad value message is triggered, if - ! CHECK_BAD_SURFACE_VALS is true. -DEFAULT_2018_ANSWERS = True ! [Boolean] default = False - ! This sets the default value for the various _2018_ANSWERS parameters. -WRITE_GEOM = 0 ! default = 1 - ! If =0, never write the geometry and vertical grid files. If =1, write the - ! geometry and vertical grid files only for a new simulation. If =2, always - ! write the geometry and vertical grid files. Other values are invalid. - -! === module MOM_domains === -TRIPOLAR_N = True ! [Boolean] default = False - ! Use tripolar connectivity at the northern edge of the domain. With - ! TRIPOLAR_N, NIGLOBAL must be even. -NIGLOBAL = 360 ! - ! The total number of thickness grid points in the x-direction in the physical - ! domain. With STATIC_MEMORY_ this is set in MOM_memory.h at compile time. -NJGLOBAL = 320 ! - ! The total number of thickness grid points in the y-direction in the physical - ! domain. With STATIC_MEMORY_ this is set in MOM_memory.h at compile time. -LAYOUT = 36, 10 ! - -! === module MOM_hor_index === -! Sets the horizontal array index types. - -! === module MOM_fixed_initialization === -INPUTDIR = "INPUT" ! default = "." - ! The directory in which input files are found. - -! === module MOM_grid_init === -GRID_CONFIG = "mosaic" ! - ! A character string that determines the method for defining the horizontal - ! grid. Current options are: - ! mosaic - read the grid from a mosaic (supergrid) - ! file set by GRID_FILE. - ! cartesian - use a (flat) Cartesian grid. - ! spherical - use a simple spherical grid. - ! mercator - use a Mercator spherical grid. -GRID_FILE = "ocean_hgrid.nc" ! - ! Name of the file from which to read horizontal grid data. -USE_TRIPOLAR_GEOLONB_BUG = True ! [Boolean] default = False - ! If true, use older code that incorrectly sets the longitude in some points - ! along the tripolar fold to be off by 360 degrees. -TOPO_CONFIG = "file" ! - ! This specifies how bathymetry is specified: - ! file - read bathymetric information from the file - ! specified by (TOPO_FILE). - ! flat - flat bottom set to MAXIMUM_DEPTH. - ! bowl - an analytically specified bowl-shaped basin - ! ranging between MAXIMUM_DEPTH and MINIMUM_DEPTH. - ! spoon - a similar shape to 'bowl', but with an vertical - ! wall at the southern face. - ! halfpipe - a zonally uniform channel with a half-sine - ! profile in the meridional direction. - ! bbuilder - build topography from list of functions. - ! benchmark - use the benchmark test case topography. - ! Neverworld - use the Neverworld test case topography. - ! DOME - use a slope and channel configuration for the - ! DOME sill-overflow test case. - ! ISOMIP - use a slope and channel configuration for the - ! ISOMIP test case. - ! DOME2D - use a shelf and slope configuration for the - ! DOME2D gravity current/overflow test case. - ! Kelvin - flat but with rotated land mask. - ! seamount - Gaussian bump for spontaneous motion test case. - ! dumbbell - Sloshing channel with reservoirs on both ends. - ! shelfwave - exponential slope for shelfwave test case. - ! Phillips - ACC-like idealized topography used in the Phillips config. - ! dense - Denmark Strait-like dense water formation and overflow. - ! USER - call a user modified routine. -TOPO_EDITS_FILE = "topo_edits_011818.nc" ! default = "" - ! The file from which to read a list of i,j,z topography overrides. -MAXIMUM_DEPTH = 6500.0 ! [m] - ! The maximum depth of the ocean. -MINIMUM_DEPTH = 9.5 ! [m] default = 0.0 - ! If MASKING_DEPTH is unspecified, then anything shallower than MINIMUM_DEPTH is - ! assumed to be land and all fluxes are masked out. If MASKING_DEPTH is - ! specified, then all depths shallower than MINIMUM_DEPTH but deeper than - ! MASKING_DEPTH are rounded to MINIMUM_DEPTH. - -! === module MOM_open_boundary === -! Controls where open boundaries are located, what kind of boundary condition to impose, and what data to apply, -! if any. -MASKING_DEPTH = 0.0 ! [m] default = -9999.0 - ! The depth below which to mask points as land points, for which all fluxes are - ! zeroed out. MASKING_DEPTH is ignored if negative. -CHANNEL_CONFIG = "list" ! default = "none" - ! A parameter that determines which set of channels are - ! restricted to specific widths. Options are: - ! none - All channels have the grid width. - ! global_1deg - Sets 16 specific channels appropriate - ! for a 1-degree model, as used in CM2G. - ! list - Read the channel locations and widths from a - ! text file, like MOM_channel_list in the MOM_SIS - ! test case. - ! file - Read open face widths everywhere from a - ! NetCDF file on the model grid. -CHANNEL_LIST_FILE = "MOM_channels_SPEAR" ! default = "MOM_channel_list" - ! The file from which the list of narrowed channels is read. -GRID_ROTATION_ANGLE_BUGS = True ! [Boolean] default = False - ! If true, use an older algorithm to calculate the sine and cosines needed - ! rotate between grid-oriented directions and true north and east. Differences - ! arise at the tripolar fold. - -! === module MOM_verticalGrid === -! Parameters providing information about the vertical grid. -NK = 75 ! [nondim] - ! The number of model layers. - -! === module MOM_tracer_registry === - -! === module MOM_EOS === -TFREEZE_FORM = "MILLERO_78" ! default = "LINEAR" - ! TFREEZE_FORM determines which expression should be used for the freezing - ! point. Currently, the valid choices are "LINEAR", "MILLERO_78", "TEOS10" - -! === module MOM_restart === -PARALLEL_RESTARTFILES = True ! [Boolean] default = False - ! If true, each processor writes its own restart file, otherwise a single - ! restart file is generated - -! === module MOM_tracer_flow_control === -USE_IDEAL_AGE_TRACER = True ! [Boolean] default = False - ! If true, use the ideal_age_example tracer package. - -! === module ideal_age_example === - -! === module MOM_coord_initialization === -COORD_CONFIG = "file" ! default = "none" - ! This specifies how layers are to be defined: - ! ALE or none - used to avoid defining layers in ALE mode - ! file - read coordinate information from the file - ! specified by (COORD_FILE). - ! BFB - Custom coords for buoyancy-forced basin case - ! based on SST_S, T_BOT and DRHO_DT. - ! linear - linear based on interfaces not layers - ! layer_ref - linear based on layer densities - ! ts_ref - use reference temperature and salinity - ! ts_range - use range of temperature and salinity - ! (T_REF and S_REF) to determine surface density - ! and GINT calculate internal densities. - ! gprime - use reference density (RHO_0) for surface - ! density and GINT calculate internal densities. - ! ts_profile - use temperature and salinity profiles - ! (read from COORD_FILE) to set layer densities. - ! USER - call a user modified routine. -COORD_FILE = "layer_coord.nc" ! - ! The file from which the coordinate densities are read. -REMAP_UV_USING_OLD_ALG = True ! [Boolean] default = False - ! If true, uses the old remapping-via-a-delta-z method for remapping u and v. If - ! false, uses the new method that remaps between grids described by an old and - ! new thickness. -REGRIDDING_COORDINATE_MODE = "HYCOM1" ! default = "LAYER" - ! Coordinate mode for vertical regridding. Choose among the following - ! possibilities: LAYER - Isopycnal or stacked shallow water layers - ! ZSTAR, Z* - stretched geopotential z* - ! SIGMA_SHELF_ZSTAR - stretched geopotential z* ignoring shelf - ! SIGMA - terrain following coordinates - ! RHO - continuous isopycnal - ! HYCOM1 - HyCOM-like hybrid coordinate - ! SLIGHT - stretched coordinates above continuous isopycnal - ! ADAPTIVE - optimize for smooth neutral density surfaces -BOUNDARY_EXTRAPOLATION = True ! [Boolean] default = False - ! When defined, a proper high-order reconstruction scheme is used within - ! boundary cells rather than PCM. E.g., if PPM is used for remapping, a PPM - ! reconstruction will also be used within boundary cells. -ALE_COORDINATE_CONFIG = "HYBRID:hycom1_75_800m.nc,sigma2,FNC1:2,4000,4.5,.01" ! default = "UNIFORM" - ! Determines how to specify the coordinate resolution. Valid options are: - ! PARAM - use the vector-parameter ALE_RESOLUTION - ! UNIFORM[:N] - uniformly distributed - ! FILE:string - read from a file. The string specifies - ! the filename and variable name, separated - ! by a comma or space, e.g. FILE:lev.nc,dz - ! or FILE:lev.nc,interfaces=zw - ! WOA09[:N] - the WOA09 vertical grid (approximately) - ! FNC1:string - FNC1:dz_min,H_total,power,precision - ! HYBRID:string - read from a file. The string specifies - ! the filename and two variable names, separated - ! by a comma or space, for sigma-2 and dz. e.g. - ! HYBRID:vgrid.nc,sigma2,dz -!ALE_RESOLUTION = 7*2.0, 2*2.01, 2.02, 2.03, 2.05, 2.08, 2.11, 2.15, 2.21, 2.2800000000000002, 2.37, 2.48, 2.61, 2.77, 2.95, 3.17, 3.4299999999999997, 3.74, 4.09, 4.49, 4.95, 5.48, 6.07, 6.74, 7.5, 8.34, 9.280000000000001, 10.33, 11.49, 12.77, 14.19, 15.74, 17.450000000000003, 19.31, 21.35, 23.56, 25.97, 28.580000000000002, 31.41, 34.47, 37.77, 41.32, 45.14, 49.25, 53.65, 58.370000000000005, 63.42, 68.81, 74.56, 80.68, 87.21000000000001, 94.14, 101.51, 109.33, 117.62, 126.4, 135.68, 145.5, 155.87, 166.81, 178.35, 190.51, 203.31, 216.78, 230.93, 245.8, 261.42, 277.83 ! [m] - ! The distribution of vertical resolution for the target - ! grid used for Eulerian-like coordinates. For example, - ! in z-coordinate mode, the parameter is a list of level - ! thicknesses (in m). In sigma-coordinate mode, the list - ! is of non-dimensional fractions of the water column. -!TARGET_DENSITIES = 1010.0, 1014.3034, 1017.8088, 1020.843, 1023.5566, 1025.813, 1027.0275, 1027.9114, 1028.6422, 1029.2795, 1029.852, 1030.3762, 1030.8626, 1031.3183, 1031.7486, 1032.1572, 1032.5471, 1032.9207, 1033.2798, 1033.6261, 1033.9608, 1034.2519, 1034.4817, 1034.6774, 1034.8508, 1035.0082, 1035.1533, 1035.2886, 1035.4159, 1035.5364, 1035.6511, 1035.7608, 1035.8661, 1035.9675, 1036.0645, 1036.1554, 1036.2411, 1036.3223, 1036.3998, 1036.4739, 1036.5451, 1036.6137, 1036.68, 1036.7441, 1036.8062, 1036.8526, 1036.8874, 1036.9164, 1036.9418, 1036.9647, 1036.9857, 1037.0052, 1037.0236, 1037.0409, 1037.0574, 1037.0738, 1037.0902, 1037.1066, 1037.123, 1037.1394, 1037.1558, 1037.1722, 1037.1887, 1037.206, 1037.2241, 1037.2435, 1037.2642, 1037.2866, 1037.3112, 1037.3389, 1037.3713, 1037.4118, 1037.475, 1037.6332, 1037.8104, 1038.0 ! [m] - ! HYBRID target densities for interfaces -MAXIMUM_INT_DEPTH_CONFIG = "FNC1:5,8000.0,1.0,.01" ! default = "NONE" - ! Determines how to specify the maximum interface depths. - ! Valid options are: - ! NONE - there are no maximum interface depths - ! PARAM - use the vector-parameter MAXIMUM_INTERFACE_DEPTHS - ! FILE:string - read from a file. The string specifies - ! the filename and variable name, separated - ! by a comma or space, e.g. FILE:lev.nc,Z - ! FNC1:string - FNC1:dz_min,H_total,power,precision -!MAXIMUM_INT_DEPTHS = 0.0, 5.0, 12.75, 23.25, 36.49, 52.480000000000004, 71.22, 92.71000000000001, 116.94000000000001, 143.92000000000002, 173.65, 206.13, 241.36, 279.33000000000004, 320.05000000000007, 363.5200000000001, 409.7400000000001, 458.7000000000001, 510.4100000000001, 564.8700000000001, 622.0800000000002, 682.0300000000002, 744.7300000000002, 810.1800000000003, 878.3800000000003, 949.3300000000004, 1023.0200000000004, 1099.4600000000005, 1178.6500000000005, 1260.5900000000006, 1345.2700000000007, 1432.7000000000007, 1522.8800000000008, 1615.8100000000009, 1711.490000000001, 1809.910000000001, 1911.080000000001, 2015.0000000000011, 2121.670000000001, 2231.080000000001, 2343.2400000000007, 2458.1500000000005, 2575.8100000000004, 2696.2200000000003, 2819.3700000000003, 2945.2700000000004, 3073.9200000000005, 3205.3200000000006, 3339.4600000000005, 3476.3500000000004, 3615.9900000000002, 3758.38, 3903.52, 4051.4, 4202.03, 4355.41, 4511.54, 4670.41, 4832.03, 4996.4, 5163.5199999999995, 5333.379999999999, 5505.989999999999, 5681.3499999999985, 5859.459999999998, 6040.319999999998, 6223.919999999998, 6410.269999999999, 6599.369999999999, 6791.219999999999, 6985.8099999999995, 7183.15, 7383.24, 7586.08, 7791.67, 8000.0 - ! The list of maximum depths for each interface. -MAX_LAYER_THICKNESS_CONFIG = "FNC1:400,31000.0,0.1,.01" ! default = "NONE" - ! Determines how to specify the maximum layer thicknesses. - ! Valid options are: - ! NONE - there are no maximum layer thicknesses - ! PARAM - use the vector-parameter MAX_LAYER_THICKNESS - ! FILE:string - read from a file. The string specifies - ! the filename and variable name, separated - ! by a comma or space, e.g. FILE:lev.nc,Z - ! FNC1:string - FNC1:dz_min,H_total,power,precision -!MAX_LAYER_THICKNESS = 400.0, 409.63, 410.32, 410.75, 411.07, 411.32, 411.52, 411.7, 411.86, 412.0, 412.13, 412.24, 412.35, 412.45, 412.54, 412.63, 412.71, 412.79, 412.86, 412.93, 413.0, 413.06, 413.12, 413.18, 413.24, 413.29, 413.34, 413.39, 413.44, 413.49, 413.54, 413.58, 413.62, 413.67, 413.71, 413.75, 413.78, 413.82, 413.86, 413.9, 413.93, 413.97, 414.0, 414.03, 414.06, 414.1, 414.13, 414.16, 414.19, 414.22, 414.24, 414.27, 414.3, 414.33, 414.35, 414.38, 414.41, 414.43, 414.46, 414.48, 414.51, 414.53, 414.55, 414.58, 414.6, 414.62, 414.65, 414.67, 414.69, 414.71, 414.73, 414.75, 414.77, 414.79, 414.83 ! [m] - ! The list of maximum thickness for each layer. -REMAPPING_SCHEME = "PPM_H4" ! default = "PLM" - ! This sets the reconstruction scheme used for vertical remapping for all - ! variables. It can be one of the following schemes: PCM (1st-order - ! accurate) - ! PLM (2nd-order accurate) - ! PPM_H4 (3rd-order accurate) - ! PPM_IH4 (3rd-order accurate) - ! PQM_IH4IH3 (4th-order accurate) - ! PQM_IH6IH5 (5th-order accurate) - -! === module MOM_grid === -! Parameters providing information about the lateral grid. - -! === module MOM_state_initialization === -INIT_LAYERS_FROM_Z_FILE = True ! [Boolean] default = False - ! If true, initialize the layer thicknesses, temperatures, and salinities from a - ! Z-space file on a latitude-longitude grid. - -! === module MOM_initialize_layers_from_Z === -TEMP_SALT_Z_INIT_FILE = "" ! default = "temp_salt_z.nc" - ! The name of the z-space input file used to initialize temperatures (T) and - ! salinities (S). If T and S are not in the same file, TEMP_Z_INIT_FILE and - ! SALT_Z_INIT_FILE must be set. -TEMP_Z_INIT_FILE = "woa13_decav_ptemp_monthly_fulldepth_01.nc" ! default = "" - ! The name of the z-space input file used to initialize temperatures, only. -SALT_Z_INIT_FILE = "woa13_decav_s_monthly_fulldepth_01.nc" ! default = "" - ! The name of the z-space input file used to initialize temperatures, only. -Z_INIT_FILE_PTEMP_VAR = "ptemp_an" ! default = "ptemp" - ! The name of the potential temperature variable in TEMP_Z_INIT_FILE. -Z_INIT_FILE_SALT_VAR = "s_an" ! default = "salt" - ! The name of the salinity variable in SALT_Z_INIT_FILE. -Z_INIT_ALE_REMAPPING = True ! [Boolean] default = False - ! If True, then remap straight to model coordinate from file. -Z_INIT_REMAP_OLD_ALG = True ! [Boolean] default = False - ! If false, uses the preferred remapping algorithm for initialization. If true, - ! use an older, less robust algorithm for remapping. - -! === module MOM_diag_mediator === -NUM_DIAG_COORDS = 2 ! default = 1 - ! The number of diagnostic vertical coordinates to use. For each coordinate, an - ! entry in DIAG_COORDS must be provided. -DIAG_COORDS = "z Z ZSTAR", "rho2 RHO2 RHO" ! - ! A list of string tuples associating diag_table modules to a coordinate - ! definition used for diagnostics. Each string is of the form - ! "MODULE_SUFFIX,PARAMETER_SUFFIX,COORDINATE_NAME". -AVAILABLE_DIAGS_FILE = "available_diags.002160" ! default = "available_diags.000000" - ! A file into which to write a list of all available ocean diagnostics that can - ! be included in a diag_table. -DIAG_COORD_DEF_Z = "FILE:vgrid_75_2m.nc,dz" ! default = "WOA09" - ! Determines how to specify the coordinate resolution. Valid options are: - ! PARAM - use the vector-parameter DIAG_COORD_RES_Z - ! UNIFORM[:N] - uniformly distributed - ! FILE:string - read from a file. The string specifies - ! the filename and variable name, separated - ! by a comma or space, e.g. FILE:lev.nc,dz - ! or FILE:lev.nc,interfaces=zw - ! WOA09[:N] - the WOA09 vertical grid (approximately) - ! FNC1:string - FNC1:dz_min,H_total,power,precision - ! HYBRID:string - read from a file. The string specifies - ! the filename and two variable names, separated - ! by a comma or space, for sigma-2 and dz. e.g. - ! HYBRID:vgrid.nc,sigma2,dz -DIAG_COORD_DEF_RHO2 = "RFNC1:35,999.5,1028,1028.5,8.,1038.,0.0078125" ! default = "WOA09" - ! Determines how to specify the coordinate resolution. Valid options are: - ! PARAM - use the vector-parameter DIAG_COORD_RES_RHO2 - ! UNIFORM[:N] - uniformly distributed - ! FILE:string - read from a file. The string specifies - ! the filename and variable name, separated - ! by a comma or space, e.g. FILE:lev.nc,dz - ! or FILE:lev.nc,interfaces=zw - ! WOA09[:N] - the WOA09 vertical grid (approximately) - ! FNC1:string - FNC1:dz_min,H_total,power,precision - ! HYBRID:string - read from a file. The string specifies - ! the filename and two variable names, separated - ! by a comma or space, for sigma-2 and dz. e.g. - ! HYBRID:vgrid.nc,sigma2,dz - -! === module MOM_MEKE === -USE_MEKE = True ! [Boolean] default = False - ! If true, turns on the MEKE scheme which calculates a sub-grid mesoscale eddy - ! kinetic energy budget. -MEKE_GMCOEFF = 1.0 ! [nondim] default = -1.0 - ! The efficiency of the conversion of potential energy into MEKE by the - ! thickness mixing parameterization. If MEKE_GMCOEFF is negative, this - ! conversion is not used or calculated. -MEKE_BGSRC = 1.0E-13 ! [W kg-1] default = 0.0 - ! A background energy source for MEKE. -MEKE_KHTH_FAC = 0.8 ! [nondim] default = 0.0 - ! A factor that maps MEKE%Kh to KhTh. -MEKE_KHTR_FAC = 0.8 ! [nondim] default = 0.0 - ! A factor that maps MEKE%Kh to KhTr. -MEKE_ALPHA_RHINES = 0.05 ! [nondim] default = 0.0 - ! If positive, is a coefficient weighting the Rhines scale in the expression for - ! mixing length used in MEKE-derived diffusivity. -MEKE_ALPHA_EADY = 0.05 ! [nondim] default = 0.0 - ! If positive, is a coefficient weighting the Eady length scale in the - ! expression for mixing length used in MEKE-derived diffusivity. - -! === module MOM_lateral_mixing_coeffs === -USE_VARIABLE_MIXING = True ! [Boolean] default = False - ! If true, the variable mixing code will be called. This allows diagnostics to - ! be created even if the scheme is not used. If KHTR_SLOPE_CFF>0 or - ! KhTh_Slope_Cff>0, this is set to true regardless of what is in the parameter - ! file. -RESOLN_SCALED_KH = True ! [Boolean] default = False - ! If true, the Laplacian lateral viscosity is scaled away when the first - ! baroclinic deformation radius is well resolved. -RESOLN_SCALED_KHTH = True ! [Boolean] default = False - ! If true, the interface depth diffusivity is scaled away when the first - ! baroclinic deformation radius is well resolved. -KHTR_SLOPE_CFF = 0.25 ! [nondim] default = 0.0 - ! The nondimensional coefficient in the Visbeck formula for the epipycnal tracer - ! diffusivity -USE_STORED_SLOPES = True ! [Boolean] default = False - ! If true, the isopycnal slopes are calculated once and stored for re-use. This - ! uses more memory but avoids calling the equation of state more times than - ! should be necessary. -KH_RES_FN_POWER = 100 ! [nondim] default = 2 - ! The power of dx/Ld in the Kh resolution function. Any positive integer may be - ! used, although even integers are more efficient to calculate. Setting this - ! greater than 100 results in a step-function being used. -VISC_RES_FN_POWER = 2 ! [nondim] default = 100 - ! The power of dx/Ld in the Kh resolution function. Any positive integer may be - ! used, although even integers are more efficient to calculate. Setting this - ! greater than 100 results in a step-function being used. This function affects - ! lateral viscosity, Kh, and not KhTh. - -! === module MOM_set_visc === -CHANNEL_DRAG = True ! [Boolean] default = False - ! If true, the bottom drag is exerted directly on each layer proportional to the - ! fraction of the bottom it overlies. -HBBL = 10.0 ! [m] - ! The thickness of a bottom boundary layer with a viscosity of KVBBL if - ! BOTTOMDRAGLAW is not defined, or the thickness over which near-bottom - ! velocities are averaged for the drag law if BOTTOMDRAGLAW is defined but - ! LINEAR_DRAG is not. -DRAG_BG_VEL = 0.1 ! [m s-1] default = 0.0 - ! DRAG_BG_VEL is either the assumed bottom velocity (with LINEAR_DRAG) or an - ! unresolved velocity that is combined with the resolved velocity to estimate - ! the velocity magnitude. DRAG_BG_VEL is only used when BOTTOMDRAGLAW is - ! defined. -BBL_USE_EOS = True ! [Boolean] default = False - ! If true, use the equation of state in determining the properties of the bottom - ! boundary layer. Otherwise use the layer target potential densities. -BBL_THICK_MIN = 0.1 ! [m] default = 0.0 - ! The minimum bottom boundary layer thickness that can be used with - ! BOTTOMDRAGLAW. This might be Kv/(cdrag*drag_bg_vel) to give Kv as the minimum - ! near-bottom viscosity. -KV = 1.0E-04 ! [m2 s-1] - ! The background kinematic viscosity in the interior. The molecular value, ~1e-6 - ! m2 s-1, may be used. -KV_BBL_MIN = 0.0 ! [m2 s-1] default = 1.0E-04 - ! The minimum viscosities in the bottom boundary layer. -KV_TBL_MIN = 0.0 ! [m2 s-1] default = 1.0E-04 - ! The minimum viscosities in the top boundary layer. - -! === module MOM_thickness_diffuse === -USE_GM_WORK_BUG = True ! [Boolean] default = False - ! If true, compute the top-layer work tendency on the u-grid with the incorrect - ! sign, for legacy reproducibility. - -! === module MOM_dynamics_split_RK2 === - -! === module MOM_continuity === - -! === module MOM_continuity_PPM === -ETA_TOLERANCE = 1.0E-06 ! [m] default = 3.75E-09 - ! The tolerance for the differences between the barotropic and baroclinic - ! estimates of the sea surface height due to the fluxes through each face. The - ! total tolerance for SSH is 4 times this value. The default is - ! 0.5*NK*ANGSTROM, and this should not be set less than about - ! 10^-15*MAXIMUM_DEPTH. -ETA_TOLERANCE_AUX = 0.001 ! [m] default = 1.0E-06 - ! The tolerance for free-surface height discrepancies between the barotropic - ! solution and the sum of the layer thicknesses when calculating the auxiliary - ! corrected velocities. By default, this is the same as ETA_TOLERANCE, but can - ! be made larger for efficiency. - -! === module MOM_CoriolisAdv === -CORIOLIS_SCHEME = "SADOURNY75_ENSTRO" ! default = "SADOURNY75_ENERGY" - ! CORIOLIS_SCHEME selects the discretization for the Coriolis terms. Valid - ! values are: - ! SADOURNY75_ENERGY - Sadourny, 1975; energy cons. - ! ARAKAWA_HSU90 - Arakawa & Hsu, 1990 - ! SADOURNY75_ENSTRO - Sadourny, 1975; enstrophy cons. - ! ARAKAWA_LAMB81 - Arakawa & Lamb, 1981; En. + Enst. - ! ARAKAWA_LAMB_BLEND - A blend of Arakawa & Lamb with - ! Arakawa & Hsu and Sadourny energy -BOUND_CORIOLIS = True ! [Boolean] default = False - ! If true, the Coriolis terms at u-points are bounded by the four estimates of - ! (f+rv)v from the four neighboring v-points, and similarly at v-points. This - ! option would have no effect on the SADOURNY Coriolis scheme if it were - ! possible to use centered difference thickness fluxes. - -! === module MOM_PressureForce === - -! === module MOM_PressureForce_AFV === -MASS_WEIGHT_IN_PRESSURE_GRADIENT = True ! [Boolean] default = False - ! If true, use mass weighting when interpolating T/S for integrals near the - ! bathymetry in AFV pressure gradient calculations. - -! === module MOM_hor_visc === -LAPLACIAN = True ! [Boolean] default = False - ! If true, use a Laplacian horizontal viscosity. -SMAGORINSKY_KH = True ! [Boolean] default = False - ! If true, use a Smagorinsky nonlinear eddy viscosity. -SMAG_LAP_CONST = 0.15 ! [nondim] default = 0.0 - ! The nondimensional Laplacian Smagorinsky constant, often 0.15. -AH_VEL_SCALE = 0.05 ! [m s-1] default = 0.0 - ! The velocity scale which is multiplied by the cube of the grid spacing to - ! calculate the biharmonic viscosity. The final viscosity is the largest of this - ! scaled viscosity, the Smagorinsky and Leith viscosities, and AH. -SMAGORINSKY_AH = True ! [Boolean] default = False - ! If true, use a biharmonic Smagorinsky nonlinear eddy viscosity. -SMAG_BI_CONST = 0.06 ! [nondim] default = 0.0 - ! The nondimensional biharmonic Smagorinsky constant, typically 0.015 - 0.06. -USE_KH_BG_2D = True ! [Boolean] default = False - ! If true, read a file containing 2-d background harmonic viscosities. The final - ! viscosity is the maximum of the other terms and this background value. - -! === module MOM_vert_friction === -HMIX_FIXED = 0.5 ! [m] - ! The prescribed depth over which the near-surface viscosity and diffusivity are - ! elevated when the bulk mixed layer is not used. -MAXVEL = 6.0 ! [m s-1] default = 3.0E+08 - ! The maximum velocity allowed before the velocity components are truncated. - -! === module MOM_barotropic === -BOUND_BT_CORRECTION = True ! [Boolean] default = False - ! If true, the corrective pseudo mass-fluxes into the barotropic solver are - ! limited to values that require less than maxCFL_BT_cont to be accommodated. -BT_PROJECT_VELOCITY = True ! [Boolean] default = False - ! If true, step the barotropic velocity first and project out the velocity - ! tendency by 1+BEBT when calculating the transport. The default (false) is to - ! use a predictor continuity step to find the pressure field, and then to do a - ! corrector continuity step using a weighted average of the old and new - ! velocities, with weights of (1-BEBT) and BEBT. -BT_STRONG_DRAG = True ! [Boolean] default = False - ! If true, use a stronger estimate of the retarding effects of strong bottom - ! drag, by making it implicit with the barotropic time-step instead of implicit - ! with the baroclinic time-step and dividing by the number of barotropic steps. -BEBT = 0.2 ! [nondim] default = 0.1 - ! BEBT determines whether the barotropic time stepping uses the forward-backward - ! time-stepping scheme or a backward Euler scheme. BEBT is valid in the range - ! from 0 (for a forward-backward treatment of nonrotating gravity waves) to 1 - ! (for a backward Euler treatment). In practice, BEBT must be greater than about - ! 0.05. -DTBT = -0.9 ! [s or nondim] default = -0.98 - ! The barotropic time step, in s. DTBT is only used with the split explicit time - ! stepping. To set the time step automatically based the maximum stable value - ! use 0, or a negative value gives the fraction of the stable value. Setting - ! DTBT to 0 is the same as setting it to -0.98. The value of DTBT that will - ! actually be used is an integer fraction of DT, rounding down. - -! === module MOM_mixed_layer_restrat === -MIXEDLAYER_RESTRAT = True ! [Boolean] default = False - ! If true, a density-gradient dependent re-stratifying flow is imposed in the - ! mixed layer. Can be used in ALE mode without restriction but in layer mode can - ! only be used if BULKMIXEDLAYER is true. -FOX_KEMPER_ML_RESTRAT_COEF = 60.0 ! [nondim] default = 0.0 - ! A nondimensional coefficient that is proportional to the ratio of the - ! deformation radius to the dominant lengthscale of the submesoscale mixed layer - ! instabilities, times the minimum of the ratio of the mesoscale eddy kinetic - ! energy to the large-scale geostrophic kinetic energy or 1 plus the square of - ! the grid spacing over the deformation radius, as detailed by Fox-Kemper et al. - ! (2010) -MLE_USE_PBL_MLD = True ! [Boolean] default = False - ! If true, the MLE parameterization will use the mixed-layer depth provided by - ! the active PBL parameterization. If false, MLE will estimate a MLD based on a - ! density difference with the surface using the parameter MLE_DENSITY_DIFF. -MLE_MLD_DECAY_TIME = 2.592E+06 ! [s] default = 0.0 - ! The time-scale for a running-mean filter applied to the mixed-layer depth used - ! in the MLE restratification parameterization. When the MLD deepens below the - ! current running-mean the running-mean is instantaneously set to the current - ! MLD. - -! === module MOM_diabatic_driver === -! The following parameters are used for diabatic processes. -ENERGETICS_SFC_PBL = True ! [Boolean] default = False - ! If true, use an implied energetics planetary boundary layer scheme to - ! determine the diffusivity and viscosity in the surface boundary layer. -EPBL_IS_ADDITIVE = False ! [Boolean] default = True - ! If true, the diffusivity from ePBL is added to all other diffusivities. - ! Otherwise, the larger of kappa-shear and ePBL diffusivities are used. -KD_MIN_TR = 2.0E-06 ! [m2 s-1] default = 2.0E-06 - ! A minimal diffusivity that should always be applied to tracers, especially in - ! massless layers near the bottom. The default is 0.1*KD. - -! === module MOM_CVMix_KPP === -! This is the MOM wrapper to CVMix:KPP -! See http://cvmix.github.io/ - -! === module MOM_tidal_mixing === -! Vertical Tidal Mixing Parameterization -INT_TIDE_DISSIPATION = True ! [Boolean] default = False - ! If true, use an internal tidal dissipation scheme to drive diapycnal mixing, - ! along the lines of St. Laurent et al. (2002) and Simmons et al. (2004). -INT_TIDE_PROFILE = "POLZIN_09" ! default = "STLAURENT_02" - ! INT_TIDE_PROFILE selects the vertical profile of energy dissipation with - ! INT_TIDE_DISSIPATION. Valid values are: - ! STLAURENT_02 - Use the St. Laurent et al exponential - ! decay profile. - ! POLZIN_09 - Use the Polzin WKB-stretched algebraic - ! decay profile. -KAPPA_ITIDES = 6.28319E-04 ! [m-1] default = 6.283185307179586E-04 - ! A topographic wavenumber used with INT_TIDE_DISSIPATION. The default is 2pi/10 - ! km, as in St.Laurent et al. 2002. -KAPPA_H2_FACTOR = 0.84 ! [nondim] default = 1.0 - ! A scaling factor for the roughness amplitude with INT_TIDE_DISSIPATION. -TKE_ITIDE_MAX = 0.1 ! [W m-2] default = 1000.0 - ! The maximum internal tide energy source available to mix above the bottom - ! boundary layer with INT_TIDE_DISSIPATION. -READ_TIDEAMP = True ! [Boolean] default = False - ! If true, read a file (given by TIDEAMP_FILE) containing the tidal amplitude - ! with INT_TIDE_DISSIPATION. -TIDEAMP_FILE = "tidal_amplitude.nc" ! default = "tideamp.nc" - ! The path to the file containing the spatially varying tidal amplitudes with - ! INT_TIDE_DISSIPATION. -H2_FILE = "topog.nc" ! - ! The path to the file containing the sub-grid-scale topographic roughness - ! amplitude with INT_TIDE_DISSIPATION. - -! === module MOM_CVMix_conv === -! Parameterization of enhanced mixing due to convection via CVMix - -! === module MOM_set_diffusivity === -BBL_MIXING_AS_MAX = False ! [Boolean] default = True - ! If true, take the maximum of the diffusivity from the BBL mixing and the other - ! diffusivities. Otherwise, diffusivity from the BBL_mixing is simply added. -USE_LOTW_BBL_DIFFUSIVITY = True ! [Boolean] default = False - ! If true, uses a simple, imprecise but non-coordinate dependent, model of BBL - ! mixing diffusivity based on Law of the Wall. Otherwise, uses the original BBL - ! scheme. -SIMPLE_TKE_TO_KD = True ! [Boolean] default = False - ! If true, uses a simple estimate of Kd/TKE that will work for arbitrary - ! vertical coordinates. If false, calculates Kd/TKE and bounds based on exact - ! energetics for an isopycnal layer-formulation. - -! === module MOM_bkgnd_mixing === -! Adding static vertical background mixing coefficients -KD = 2.0E-05 ! [m2 s-1] default = 0.0 - ! The background diapycnal diffusivity of density in the interior. Zero or the - ! molecular value, ~1e-7 m2 s-1, may be used. -KD_MIN = 2.0E-06 ! [m2 s-1] default = 2.0E-07 - ! The minimum diapycnal diffusivity. -HENYEY_IGW_BACKGROUND = True ! [Boolean] default = False - ! If true, use a latitude-dependent scaling for the near surface background - ! diffusivity, as described in Harrison & Hallberg, JPO 2008. -KD_MAX = 0.1 ! [m2 s-1] default = -1.0 - ! The maximum permitted increment for the diapycnal diffusivity from TKE-based - ! parameterizations, or a negative value for no limit. - -! === module MOM_kappa_shear === -! Parameterization of shear-driven turbulence following Jackson, Hallberg and Legg, JPO 2008 -USE_JACKSON_PARAM = True ! [Boolean] default = False - ! If true, use the Jackson-Hallberg-Legg (JPO 2008) shear mixing - ! parameterization. -MAX_RINO_IT = 25 ! [nondim] default = 50 - ! The maximum number of iterations that may be used to estimate the Richardson - ! number driven mixing. -KD_TRUNC_KAPPA_SHEAR = 2.0E-07 ! [m2 s-1] default = 2.0E-07 - ! The value of shear-driven diffusivity that is considered negligible and is - ! rounded down to 0. The default is 1% of KD_KAPPA_SHEAR_0. -KAPPA_SHEAR_ITER_BUG = True ! [Boolean] default = False - ! If true, use an older, dimensionally inconsistent estimate of the derivative - ! of diffusivity with energy in the Newton's method iteration. The bug causes - ! undercorrections when dz > 1 m. -KAPPA_SHEAR_ALL_LAYER_TKE_BUG = True ! [Boolean] default = False - ! If true, report back the latest estimate of TKE instead of the time average - ! TKE when there is mass in all layers. Otherwise always report the time - ! averaged TKE, as is currently done when there are some massless layers. - -! === module MOM_CVMix_shear === -! Parameterization of shear-driven turbulence via CVMix (various options) - -! === module MOM_CVMix_ddiff === -! Parameterization of mixing due to double diffusion processes via CVMix - -! === module MOM_diabatic_aux === -! The following parameters are used for auxiliary diabatic processes. -PRESSURE_DEPENDENT_FRAZIL = True ! [Boolean] default = False - ! If true, use a pressure dependent freezing temperature when making frazil. The - ! default is false, which will be faster but is inappropriate with ice-shelf - ! cavities. -VAR_PEN_SW = True ! [Boolean] default = False - ! If true, use one of the CHL_A schemes specified by OPACITY_SCHEME to determine - ! the e-folding depth of incoming short wave radiation. -CHL_FILE = "seawifs_1998-2006_smoothed_2X.nc" ! - ! CHL_FILE is the file containing chl_a concentrations in the variable CHL_A. It - ! is used when VAR_PEN_SW and CHL_FROM_FILE are true. - -! === module MOM_energetic_PBL === -ML_OMEGA_FRAC = 0.001 ! [nondim] default = 0.0 - ! When setting the decay scale for turbulence, use this fraction of the absolute - ! rotation rate blended with the local value of f, as sqrt((1-of)*f^2 + - ! of*4*omega^2). -TKE_DECAY = 0.01 ! [nondim] default = 2.5 - ! TKE_DECAY relates the vertical rate of decay of the TKE available for - ! mechanical entrainment to the natural Ekman depth. -EPBL_MSTAR_SCHEME = "OM4" ! default = "CONSTANT" - ! EPBL_MSTAR_SCHEME selects the method for setting mstar. Valid values are: - ! CONSTANT - Use a fixed mstar given by MSTAR - ! OM4 - Use L_Ekman/L_Obukhov in the sabilizing limit, as in OM4 - ! REICHL_H18 - Use the scheme documented in Reichl & Hallberg, 2018. -MSTAR_CAP = 10.0 ! [nondim] default = -1.0 - ! If this value is positive, it sets the maximum value of mstar allowed in ePBL. - ! (This is not used if EPBL_MSTAR_SCHEME = CONSTANT). -MSTAR2_COEF1 = 0.29 ! [nondim] default = 0.3 - ! Coefficient in computing mstar when rotation and stabilizing effects are both - ! important (used if EPBL_MSTAR_SCHEME = OM4). -MSTAR2_COEF2 = 0.152 ! [nondim] default = 0.085 - ! Coefficient in computing mstar when only rotation limits the total mixing - ! (used if EPBL_MSTAR_SCHEME = OM4) -NSTAR = 0.06 ! [nondim] default = 0.2 - ! The portion of the buoyant potential energy imparted by surface fluxes that is - ! available to drive entrainment at the base of mixed layer when that energy is - ! positive. -MSTAR_CONV_ADJ = 0.667 ! [nondim] default = 0.0 - ! Coefficient used for reducing mstar during convection due to reduction of - ! stable density gradient. -USE_MLD_ITERATION = False ! [Boolean] default = True - ! A logical that specifies whether or not to use the distance to the bottom of - ! the actively turbulent boundary layer to help set the EPBL length scale. -EPBL_TRANSITION_SCALE = 0.01 ! [nondim] default = 0.1 - ! A scale for the mixing length in the transition layer at the edge of the - ! boundary layer as a fraction of the boundary layer thickness. -MIX_LEN_EXPONENT = 1.0 ! [nondim] default = 2.0 - ! The exponent applied to the ratio of the distance to the MLD and the MLD depth - ! which determines the shape of the mixing length. This is only used if - ! USE_MLD_ITERATION is True. -USE_LA_LI2016 = True ! [nondim] default = False - ! A logical to use the Li et al. 2016 (submitted) formula to determine the - ! Langmuir number. -EPBL_LANGMUIR_SCHEME = "ADDITIVE" ! default = "NONE" - ! EPBL_LANGMUIR_SCHEME selects the method for including Langmuir turbulence. - ! Valid values are: - ! NONE - Do not do any extra mixing due to Langmuir turbulence - ! RESCALE - Use a multiplicative rescaling of mstar to account for Langmuir - ! turbulence - ! ADDITIVE - Add a Langmuir turblence contribution to mstar to other - ! contributions -LT_ENHANCE_COEF = 0.044 ! [nondim] default = 0.447 - ! Coefficient for Langmuir enhancement of mstar -LT_ENHANCE_EXP = -1.5 ! [nondim] default = -1.33 - ! Exponent for Langmuir enhancementt of mstar -LT_MOD_LAC1 = 0.0 ! [nondim] default = -0.87 - ! Coefficient for modification of Langmuir number due to MLD approaching Ekman - ! depth. -LT_MOD_LAC4 = 0.0 ! [nondim] default = 0.95 - ! Coefficient for modification of Langmuir number due to ratio of Ekman to - ! stable Obukhov depth. -LT_MOD_LAC5 = 0.22 ! [nondim] default = 0.95 - ! Coefficient for modification of Langmuir number due to ratio of Ekman to - ! unstable Obukhov depth. - -! === module MOM_regularize_layers === - -! === module MOM_opacity === -PEN_SW_NBANDS = 3 ! default = 1 - ! The number of bands of penetrating shortwave radiation. - -! === module MOM_tracer_advect === -TRACER_ADVECTION_SCHEME = "PPM:H3" ! default = "PLM" - ! The horizontal transport scheme for tracers: - ! PLM - Piecewise Linear Method - ! PPM:H3 - Piecewise Parabolic Method (Huyhn 3rd order) - ! PPM - Piecewise Parabolic Method (Colella-Woodward) - -! === module MOM_tracer_hor_diff === -CHECK_DIFFUSIVE_CFL = True ! [Boolean] default = False - ! If true, use enough iterations the diffusion to ensure that the diffusive - ! equivalent of the CFL limit is not violated. If false, always use the greater - ! of 1 or MAX_TR_DIFFUSION_CFL iteration. - -! === module MOM_neutral_diffusion === -! This module implements neutral diffusion of tracers -USE_NEUTRAL_DIFFUSION = True ! [Boolean] default = False - ! If true, enables the neutral diffusion module. - -! === module MOM_lateral_boundary_diffusion === -! This module implements lateral diffusion of tracers near boundaries - -! === module MOM_sum_output === -CALCULATE_APE = False ! [Boolean] default = True - ! If true, calculate the available potential energy of the interfaces. Setting - ! this to false reduces the memory footprint of high-PE-count models - ! dramatically. -MAXTRUNC = 100000 ! [truncations save_interval-1] default = 0 - ! The run will be stopped, and the day set to a very large value if the velocity - ! is truncated more than MAXTRUNC times between energy saves. Set MAXTRUNC to 0 - ! to stop if there is any truncation of velocities. -ENERGYSAVEDAYS = 0.25 ! [days] default = 1.0 - ! The interval in units of TIMEUNIT between saves of the energies of the run and - ! other globally summed diagnostics. - -! === module ocean_model_init === - -! === module MOM_surface_forcing === -MAX_P_SURF = 0.0 ! [Pa] default = -1.0 - ! The maximum surface pressure that can be exerted by the atmosphere and - ! floating sea-ice or ice shelves. This is needed because the FMS coupling - ! structure does not limit the water that can be frozen out of the ocean and the - ! ice-ocean heat fluxes are treated explicitly. No limit is applied if a - ! negative value is used. -CD_TIDES = 0.0018 ! [nondim] default = 1.0E-04 - ! The drag coefficient that applies to the tides. -GUST_CONST = 0.02 ! [Pa] default = 0.0 - ! The background gustiness in the winds. -FIX_USTAR_GUSTLESS_BUG = False ! [Boolean] default = True - ! If true correct a bug in the time-averaging of the gustless wind friction - ! velocity - -! === module MOM_restart === - -! === module MOM_file_parser === diff --git a/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/360x320/soca/MOM_override b/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/360x320/soca/MOM_override deleted file mode 100755 index 1ed12c6eb..000000000 --- a/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/360x320/soca/MOM_override +++ /dev/null @@ -1,70 +0,0 @@ -! The following are overrides to the default 1deg configuration from -! GFDL (https://github.com/NOAA-GFDL/MOM6-examples/blob/dev/gfdl/ -! ice_ocean_SIS2/OM_1deg/MOM_input) -! that are needed for SOCA -!------------------------------------------------------------------------------- - -! overrides due to change of default values between latest MOM6 code and that -! assumed by the version of MOM_input being used -INTERPOLATE_RES_FN = False - -! disable checksums -RESTART_CHECKSUMS_REQUIRED = False - -! use Z* vertical coordinates instead of hybrid coords -#override REGRIDDING_COORDINATE_MODE = "Z*" -#override ALE_COORDINATE_CONFIG="FILE:vgrid.nc,dz" - -! vertex shear to remove checkerboard patterns that may develop -VERTEX_SHEAR=True - -! diagnostic output coordinates (because I don't care about rho coords, for now) -#override NUM_DIAG_COORDS = 1 -#override DIAG_COORDS = "z Z ZSTAR" - -# input files / var-names for coldstarts are different -!#override TEMP_Z_INIT_FILE = "ocean.T.nc" -!#override SALT_Z_INIT_FILE = "ocean.S.nc" -!#override Z_INIT_FILE_PTEMP_VAR = "ptemp_an" -!#override Z_INIT_FILE_SALT_VAR = "s_an" - -#override TEMP_SALT_Z_INIT_FILE = "WOA05_pottemp_salt.nc" ! default = "temp_salt_z.nc" - ! The name of the z-space input file used to initialize - ! the layer thicknesses, temperatures and salinities. -#override TEMP_Z_INIT_FILE = "" ! default = "" - ! The name of the z-space input file used to initialize temperatures, only. -#override SALT_Z_INIT_FILE = "" ! default = "" - ! The name of the z-space input file used to initialize temperatures, only. -#override Z_INIT_FILE_PTEMP_VAR = "PTEMP" ! default = "ptemp" - ! The name of the potential temperature variable in - ! TEMP_SALT_Z_INIT_FILE. -#override Z_INIT_FILE_SALT_VAR = "SALT" ! default = "salt" - ! The name of the salinity variable in - ! TEMP_SALT_Z_INIT_FILE. - - -! we don't run long enough to care about tracer ages -#override USE_IDEAL_AGE_TRACER = False - -! we don't require reproducibility with old runs... disable all known bugs (eventually) -!#override USE_TRIPOLAR_GEOLONB_BUG = False -!#override GRID_ROTATION_ANGLE_BUGS = False -!#override Z_INIT_REMAP_OLD_ALG = False -!#override REMAP_UV_USING_OLD_ALG = False -!#override USE_GM_WORK_BUG = False -!#override KAPPA_SHEAR_ITER_BUG = False -!#override KAPPA_SHEAR_ALL_LAYER_TKE_BUG = False -!#override FIX_USTAR_GUSTLESS_BUG = True - -! these are not used by the forecast for coupled MOM6SIS2, but are needed -! by SOCA's MOM6 solo (e.g. the checkpoint app) -BUOY_CONFIG='zero' -WIND_CONFIG='zero' - -#override DT_THERM = 450. -HFREEZE = 10.0 - -!VERBOSITY = 9 -!DEBUG = True -!REPORT_UNUSED_PARAMS = True - diff --git a/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/360x320/soca/README.md b/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/360x320/soca/README.md deleted file mode 100644 index 10eff7539..000000000 --- a/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/360x320/soca/README.md +++ /dev/null @@ -1 +0,0 @@ -This configuration was adapted from https://github.com/NOAA-GFDL/MOM6-examples/tree/dev/gfdl/ice_ocean_SIS2/OM_1deg. diff --git a/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/72x36/MOM_input b/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/72x36/MOM_input deleted file mode 100755 index 783bb470a..000000000 --- a/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/72x36/MOM_input +++ /dev/null @@ -1,460 +0,0 @@ -! This input file provides the adjustable run-time parameters for version 6 of the Modular Ocean Model (MOM6). -! Where appropriate, parameters use usually given in MKS units. - -! This particular file is for the example in global_ALE. - -! This MOM_input file typically contains only the non-default values that are needed to reproduce this example. -! A full list of parameters for this example can be found in the corresponding MOM_parameter_doc.all file -! which is generated by the model at run-time. - -! === module MOM_domains === -TRIPOLAR_N = True ! [Boolean] default = False - ! Use tripolar connectivity at the northern edge of the domain. With - ! TRIPOLAR_N, NIGLOBAL must be even. -NIGLOBAL = 72 ! - ! The total number of thickness grid points in the x-direction in the physical - ! domain. With STATIC_MEMORY_ this is set in MOM_memory.h at compile time. -NJGLOBAL = 36 ! - ! The total number of thickness grid points in the y-direction in the physical - ! domain. With STATIC_MEMORY_ this is set in MOM_memory.h at compile time. -! LAYOUT = 8, 8 ! - ! The processor layout that was actually used. - -! === module MOM === -DIABATIC_FIRST = True ! [Boolean] default = False - ! If true, apply diabatic and thermodynamic processes, including buoyancy - ! forcing and mass gain or loss, before stepping the dynamics forward. -THICKNESSDIFFUSE = True ! [Boolean] default = False - ! If true, interface heights are diffused with a coefficient of KHTH. -THICKNESSDIFFUSE_FIRST = True ! [Boolean] default = False - ! If true, do thickness diffusion before dynamics. This is only used if - ! THICKNESSDIFFUSE is true. -DT = 3600.0 ! [s] - ! The (baroclinic) dynamics time step. The time-step that is actually used will - ! be an integer fraction of the forcing time-step (DT_FORCING in ocean-only mode - ! or the coupling timestep in coupled mode.) -DT_THERM = 7200.0 ! [s] default = 3600.0 - ! The thermodynamic and tracer advection time step. Ideally DT_THERM should be - ! an integer multiple of DT and less than the forcing or coupling time-step, - ! unless THERMO_SPANS_COUPLING is true, in which case DT_THERM can be an integer - ! multiple of the coupling timestep. By default DT_THERM is set to DT. -DTBT_RESET_PERIOD = 0.0 ! [s] default = 7200.0 - ! The period between recalculations of DTBT (if DTBT <= 0). If DTBT_RESET_PERIOD - ! is negative, DTBT is set based only on information available at - ! initialization. If 0, DTBT will be set every dynamics time step. The default - ! is set by DT_THERM. This is only used if SPLIT is true. -FRAZIL = True ! [Boolean] default = False - ! If true, water freezes if it gets too cold, and the accumulated heat deficit - ! is returned in the surface state. FRAZIL is only used if - ! ENABLE_THERMODYNAMICS is true. -DO_GEOTHERMAL = False ! [Boolean] default = False - ! If true, apply geothermal heating. -BOUND_SALINITY = True ! [Boolean] default = False - ! If true, limit salinity to being positive. (The sea-ice model may ask for more - ! salt than is available and drive the salinity negative otherwise.) -MIN_SALINITY = 0.01 ! [PPT] default = 0.0 - ! The minimum value of salinity when BOUND_SALINITY=True. -C_P = 3925.0 ! [J kg-1 K-1] default = 3991.86795711963 - ! The heat capacity of sea water, approximated as a constant. This is only used - ! if ENABLE_THERMODYNAMICS is true. The default value is from the TEOS-10 - ! definition of conservative temperature. -CHECK_BAD_SURFACE_VALS = True ! [Boolean] default = False - ! If true, check the surface state for ridiculous values. -SAVE_INITIAL_CONDS = True ! [Boolean] default = False - ! If true, write the initial conditions to a file given by IC_OUTPUT_FILE. - -! === module MOM_fixed_initialization === -INPUTDIR = "INPUT" ! default = "." - ! The directory in which input files are found. - -! === module MOM_grid_init === -GRID_CONFIG = "mosaic" ! - ! A character string that determines the method for defining the horizontal - ! grid. Current options are: - ! mosaic - read the grid from a mosaic (supergrid) - ! file set by GRID_FILE. - ! cartesian - use a (flat) Cartesian grid. - ! spherical - use a simple spherical grid. - ! mercator - use a Mercator spherical grid. -GRID_FILE = "ocean_hgrid.nc" ! - ! Name of the file from which to read horizontal grid data. -TOPO_CONFIG = "file" ! - ! This specifies how bathymetry is specified: - ! file - read bathymetric information from the file - ! specified by (TOPO_FILE). - ! flat - flat bottom set to MAXIMUM_DEPTH. - ! bowl - an analytically specified bowl-shaped basin - ! ranging between MAXIMUM_DEPTH and MINIMUM_DEPTH. - ! spoon - a similar shape to 'bowl', but with an vertical - ! wall at the southern face. - ! halfpipe - a zonally uniform channel with a half-sine - ! profile in the meridional direction. - ! bbuilder - build topography from list of functions. - ! benchmark - use the benchmark test case topography. - ! Neverworld - use the Neverworld test case topography. - ! DOME - use a slope and channel configuration for the - ! DOME sill-overflow test case. - ! ISOMIP - use a slope and channel configuration for the - ! ISOMIP test case. - ! DOME2D - use a shelf and slope configuration for the - ! DOME2D gravity current/overflow test case. - ! Kelvin - flat but with rotated land mask. - ! seamount - Gaussian bump for spontaneous motion test case. - ! dumbbell - Sloshing channel with reservoirs on both ends. - ! shelfwave - exponential slope for shelfwave test case. - ! Phillips - ACC-like idealized topography used in the Phillips config. - ! dense - Denmark Strait-like dense water formation and overflow. - ! USER - call a user modified routine. -MAXIMUM_DEPTH = 6000.0 ! [m] - ! The maximum depth of the ocean. -MINIMUM_DEPTH = 0.5 ! [m] default = 0.0 - ! If MASKING_DEPTH is unspecified, then anything shallower than MINIMUM_DEPTH is - ! assumed to be land and all fluxes are masked out. If MASKING_DEPTH is - ! specified, then all depths shallower than MINIMUM_DEPTH but deeper than - ! MASKING_DEPTH are rounded to MINIMUM_DEPTH. -CHANNEL_CONFIG = "none" ! default = "none" - ! A parameter that determines which set of channels are - ! restricted to specific widths. Options are: - ! none - All channels have the grid width. - ! global_1deg - Sets 16 specific channels appropriate - ! for a 1-degree model, as used in CM2G. - ! list - Read the channel locations and widths from a - ! text file, like MOM_channel_list in the MOM_SIS - ! test case. - ! file - Read open face widths everywhere from a - ! NetCDF file on the model grid. -PARALLEL_RESTARTFILES = True ! [Boolean] default = False - ! If true, each processor writes its own restart file, otherwise a single - ! restart file is generated - -! === module MOM_verticalGrid === -! Parameters providing information about the vertical grid. - -! === module MOM_EOS === - -! === module MOM_tracer_flow_control === -USE_IDEAL_AGE_TRACER = True ! [Boolean] default = False - ! If true, use the ideal_age_example tracer package. - -! === module ideal_age_example === - -! === module MOM_coord_initialization === -COORD_CONFIG = "file" ! default = "none" - ! This specifies how layers are to be defined: - ! ALE or none - used to avoid defining layers in ALE mode - ! file - read coordinate information from the file - ! specified by (COORD_FILE). - ! BFB - Custom coords for buoyancy-forced basin case - ! based on SST_S, T_BOT and DRHO_DT. - ! linear - linear based on interfaces not layers - ! layer_ref - linear based on layer densities - ! ts_ref - use reference temperature and salinity - ! ts_range - use range of temperature and salinity - ! (T_REF and S_REF) to determine surface density - ! and GINT calculate internal densities. - ! gprime - use reference density (RHO_0) for surface - ! density and GINT calculate internal densities. - ! ts_profile - use temperature and salinity profiles - ! (read from COORD_FILE) to set layer densities. - ! USER - call a user modified routine. -! COORD_FILE = "Layer_coord.nc" ! - ! The file from which the coordinate densities are read. - -! === module MOM_state_initialization === -INIT_LAYERS_FROM_Z_FILE = True ! [Boolean] default = False - ! If true, initialize the layer thicknesses, temperatures, and salinities from a - ! Z-space file on a latitude-longitude grid. - -! === module MOM_initialize_layers_from_Z === -TEMP_SALT_Z_INIT_FILE = "WOA05_pottemp_salt.nc" ! default = "temp_salt_z.nc" - ! The name of the z-space input file used to initialize temperatures (T) and - ! salinities (S). If T and S are not in the same file, TEMP_Z_INIT_FILE and - ! SALT_Z_INIT_FILE must be set. -Z_INIT_FILE_PTEMP_VAR = "PTEMP" ! default = "ptemp" - ! The name of the potential temperature variable in TEMP_Z_INIT_FILE. -Z_INIT_FILE_SALT_VAR = "SALT" ! default = "salt" - ! The name of the salinity variable in SALT_Z_INIT_FILE. - -! === module MOM_diag_mediator === - -! === module MOM_MEKE === -USE_MEKE = True ! [Boolean] default = False - ! If true, turns on the MEKE scheme which calculates a sub-grid mesoscale eddy - ! kinetic energy budget. -MEKE_GMCOEFF = 1.0 ! [nondim] default = -1.0 - ! The efficiency of the conversion of potential energy into MEKE by the - ! thickness mixing parameterization. If MEKE_GMCOEFF is negative, this - ! conversion is not used or calculated. - -! === module MOM_lateral_mixing_coeffs === -USE_VARIABLE_MIXING = True ! [Boolean] default = False - ! If true, the variable mixing code will be called. This allows diagnostics to - ! be created even if the scheme is not used. If KHTR_SLOPE_CFF>0 or - ! KhTh_Slope_Cff>0, this is set to true regardless of what is in the parameter - ! file. -RESOLN_SCALED_KH = True ! [Boolean] default = False - ! If true, the Laplacian lateral viscosity is scaled away when the first - ! baroclinic deformation radius is well resolved. -RESOLN_SCALED_KHTH = True ! [Boolean] default = False - ! If true, the interface depth diffusivity is scaled away when the first - ! baroclinic deformation radius is well resolved. - -! === module MOM_set_visc === -CHANNEL_DRAG = True ! [Boolean] default = False - ! If true, the bottom drag is exerted directly on each layer proportional to the - ! fraction of the bottom it overlies. -HBBL = 10.0 ! [m] - ! The thickness of a bottom boundary layer with a viscosity of KVBBL if - ! BOTTOMDRAGLAW is not defined, or the thickness over which near-bottom - ! velocities are averaged for the drag law if BOTTOMDRAGLAW is defined but - ! LINEAR_DRAG is not. -DRAG_BG_VEL = 0.1 ! [m s-1] default = 0.0 - ! DRAG_BG_VEL is either the assumed bottom velocity (with LINEAR_DRAG) or an - ! unresolved velocity that is combined with the resolved velocity to estimate - ! the velocity magnitude. DRAG_BG_VEL is only used when BOTTOMDRAGLAW is - ! defined. -BBL_USE_EOS = True ! [Boolean] default = False - ! If true, use the equation of state in determining the properties of the bottom - ! boundary layer. Otherwise use the layer target potential densities. -BBL_THICK_MIN = 0.1 ! [m] default = 0.0 - ! The minimum bottom boundary layer thickness that can be used with - ! BOTTOMDRAGLAW. This might be Kv/(cdrag*drag_bg_vel) to give Kv as the minimum - ! near-bottom viscosity. -KV = 1.0E-04 ! [m2 s-1] - ! The background kinematic viscosity in the interior. The molecular value, ~1e-6 - ! m2 s-1, may be used. - -! === module MOM_thickness_diffuse === -KHTH = 600.0 ! [m2 s-1] default = 0.0 - ! The background horizontal thickness diffusivity. -KHTH_MAX = 900.0 ! [m2 s-1] default = 0.0 - ! The maximum horizontal thickness diffusivity. -KHTH_USE_FGNV_STREAMFUNCTION = True ! [Boolean] default = False - ! If true, use the streamfunction formulation of Ferrari et al., 2010, which - ! effectively emphasizes graver vertical modes by smoothing in the vertical. -FGNV_C_MIN = 0.01 ! [m s-1] default = 0.0 - ! A minium wave speed used in the Ferrari et al., 2010, streamfunction - ! formulation. - -! === module MOM_dynamics_split_RK2 === -TIDES = True ! [Boolean] default = False - ! If true, apply tidal momentum forcing. - -! === module MOM_continuity === - -! === module MOM_continuity_PPM === -ETA_TOLERANCE = 1.0E-06 ! [m] default = 3.15E-09 - ! The tolerance for the differences between the barotropic and baroclinic - ! estimates of the sea surface height due to the fluxes through each face. The - ! total tolerance for SSH is 4 times this value. The default is - ! 0.5*NK*ANGSTROM, and this should not be set less than about - ! 10^-15*MAXIMUM_DEPTH. -VELOCITY_TOLERANCE = 1.0E-04 ! [m s-1] default = 3.0E+08 - ! The tolerance for barotropic velocity discrepancies between the barotropic - ! solution and the sum of the layer thicknesses. - -! === module MOM_CoriolisAdv === -BOUND_CORIOLIS = True ! [Boolean] default = False - ! If true, the Coriolis terms at u-points are bounded by the four estimates of - ! (f+rv)v from the four neighboring v-points, and similarly at v-points. This - ! option would have no effect on the SADOURNY Coriolis scheme if it were - ! possible to use centered difference thickness fluxes. - -! === module MOM_tidal_forcing === -TIDE_M2 = True ! [Boolean] default = False - ! If true, apply tidal momentum forcing at the M2 frequency. This is only used - ! if TIDES is true. -TIDE_SAL_SCALAR_VALUE = 0.094 ! [m m-1] - ! The constant of proportionality between sea surface height (really it should - ! be bottom pressure) anomalies and bottom geopotential anomalies. This is only - ! used if TIDES and TIDE_USE_SAL_SCALAR are true. - -! === module MOM_PressureForce === - -! === module MOM_PressureForce_AFV === - -! === module MOM_hor_visc === -LAPLACIAN = True ! [Boolean] default = False - ! If true, use a Laplacian horizontal viscosity. -KH_VEL_SCALE = 0.01 ! [m s-1] default = 0.0 - ! The velocity scale which is multiplied by the grid spacing to calculate the - ! Laplacian viscosity. The final viscosity is the largest of this scaled - ! viscosity, the Smagorinsky and Leith viscosities, and KH. -AH_VEL_SCALE = 0.05 ! [m s-1] default = 0.0 - ! The velocity scale which is multiplied by the cube of the grid spacing to - ! calculate the biharmonic viscosity. The final viscosity is the largest of this - ! scaled viscosity, the Smagorinsky and Leith viscosities, and AH. -SMAGORINSKY_AH = True ! [Boolean] default = False - ! If true, use a biharmonic Smagorinsky nonlinear eddy viscosity. -SMAG_BI_CONST = 0.06 ! [nondim] default = 0.0 - ! The nondimensional biharmonic Smagorinsky constant, typically 0.015 - 0.06. - -! === module MOM_vert_friction === -MAXVEL = 6.0 ! [m s-1] default = 3.0E+08 - ! The maximum velocity allowed before the velocity components are truncated. - -! === module MOM_barotropic === -BOUND_BT_CORRECTION = True ! [Boolean] default = False - ! If true, the corrective pseudo mass-fluxes into the barotropic solver are - ! limited to values that require less than maxCFL_BT_cont to be accommodated. -BT_PROJECT_VELOCITY = True ! [Boolean] default = False - ! If true, step the barotropic velocity first and project out the velocity - ! tendency by 1+BEBT when calculating the transport. The default (false) is to - ! use a predictor continuity step to find the pressure field, and then to do a - ! corrector continuity step using a weighted average of the old and new - ! velocities, with weights of (1-BEBT) and BEBT. -BEBT = 0.2 ! [nondim] default = 0.1 - ! BEBT determines whether the barotropic time stepping uses the forward-backward - ! time-stepping scheme or a backward Euler scheme. BEBT is valid in the range - ! from 0 (for a forward-backward treatment of nonrotating gravity waves) to 1 - ! (for a backward Euler treatment). In practice, BEBT must be greater than about - ! 0.05. -DTBT = -0.95 ! [s or nondim] default = -0.98 - ! The barotropic time step, in s. DTBT is only used with the split explicit time - ! stepping. To set the time step automatically based the maximum stable value - ! use 0, or a negative value gives the fraction of the stable value. Setting - ! DTBT to 0 is the same as setting it to -0.98. The value of DTBT that will - ! actually be used is an integer fraction of DT, rounding down. - -! === module MOM_mixed_layer_restrat === -MIXEDLAYER_RESTRAT = False ! [Boolean] default = False - ! If true, a density-gradient dependent re-stratifying flow is imposed in the - ! mixed layer. Can be used in ALE mode without restriction but in layer mode can - ! only be used if BULKMIXEDLAYER is true. -!FOX_KEMPER_ML_RESTRAT_COEF = 20.0 ! [nondim] default = 0.0 - ! A nondimensional coefficient that is proportional to the ratio of the - ! deformation radius to the dominant lengthscale of the submesoscale mixed layer - ! instabilities, times the minimum of the ratio of the mesoscale eddy kinetic - ! energy to the large-scale geostrophic kinetic energy or 1 plus the square of - ! the grid spacing over the deformation radius, as detailed by Fox-Kemper et al. - ! (2010) - -! === module MOM_diagnostics === - -! === module MOM_diabatic_driver === -! The following parameters are used for diabatic processes. -USE_LEGACY_DIABATIC_DRIVER = False ! [Boolean] default = True - ! If true, use a legacy version of the diabatic subroutine. This is temporary - ! and is needed to avoid change in answers. - -! === module MOM_tidal_mixing === -! Vertical Tidal Mixing Parameterization -INT_TIDE_DISSIPATION = False ! [Boolean] default = False - ! If true, use an internal tidal dissipation scheme to drive diapycnal mixing, - ! along the lines of St. Laurent et al. (2002) and Simmons et al. (2004). -!INT_TIDE_DECAY_SCALE = 300.3003003003003 ! [m] default = 500.0 - ! The decay scale away from the bottom for tidal TKE with the new coding when - ! INT_TIDE_DISSIPATION is used. -!KAPPA_ITIDES = 6.28319E-04 ! [m-1] default = 6.283185307179586E-04 - ! A topographic wavenumber used with INT_TIDE_DISSIPATION. The default is 2pi/10 - ! km, as in St.Laurent et al. 2002. -!KAPPA_H2_FACTOR = 0.75 ! [nondim] default = 1.0 - ! A scaling factor for the roughness amplitude with INT_TIDE_DISSIPATION. -!TKE_ITIDE_MAX = 0.1 ! [W m-2] default = 1000.0 - ! The maximum internal tide energy source available to mix above the bottom - ! boundary layer with INT_TIDE_DISSIPATION. -!READ_TIDEAMP = False ! [Boolean] default = False - ! If true, read a file (given by TIDEAMP_FILE) containing the tidal amplitude - ! with INT_TIDE_DISSIPATION. - -! === module MOM_geothermal === -!GEOTHERMAL_SCALE = 0 ! [W m-2 or various] default = 0.0 - ! The constant geothermal heat flux, a rescaling factor for the heat flux read - ! from GEOTHERMAL_FILE, or 0 to disable the geothermal heating. - -! === module MOM_set_diffusivity === -BBL_MIXING_AS_MAX = False ! [Boolean] default = True - ! If true, take the maximum of the diffusivity from the BBL mixing and the other - ! diffusivities. Otherwise, diffusivity from the BBL_mixing is simply added. -USE_LOTW_BBL_DIFFUSIVITY = True ! [Boolean] default = False - ! If true, uses a simple, imprecise but non-coordinate dependent, model of BBL - ! mixing diffusivity based on Law of the Wall. Otherwise, uses the original BBL - ! scheme. - -! === module MOM_bkgnd_mixing === -! Adding static vertical background mixing coefficients -KD = 2.0E-05 ! [m2 s-1] default = 0.0 - ! The background diapycnal diffusivity of density in the interior. Zero or the - ! molecular value, ~1e-7 m2 s-1, may be used. -KD_MIN = 2.0E-06 ! [m2 s-1] default = 2.0E-07 - ! The minimum diapycnal diffusivity. -HENYEY_IGW_BACKGROUND = True ! [Boolean] default = False - ! If true, use a latitude-dependent scaling for the near surface background - ! diffusivity, as described in Harrison & Hallberg, JPO 2008. -KD_MAX = 0.1 ! [m2 s-1] default = -1.0 - ! The maximum permitted increment for the diapycnal diffusivity from TKE-based - ! parameterizations, or a negative value for no limit. - -! === module MOM_kappa_shear === -! Parameterization of shear-driven turbulence following Jackson, Hallberg and Legg, JPO 2008 -USE_JACKSON_PARAM = True ! [Boolean] default = False - ! If true, use the Jackson-Hallberg-Legg (JPO 2008) shear mixing - ! parameterization. -MAX_RINO_IT = 25 ! [nondim] default = 50 - ! The maximum number of iterations that may be used to estimate the Richardson - ! number driven mixing. - -! === module MOM_diabatic_aux === -! The following parameters are used for auxiliary diabatic processes. -VAR_PEN_SW = True ! [Boolean] default = False - ! If true, use one of the CHL_A schemes specified by OPACITY_SCHEME to determine - ! the e-folding depth of incoming short wave radiation. -CHL_FILE = "seawifs_1998-2006_GOLD_smoothed_2X_5deg.nc" ! - ! CHL_FILE is the file containing chl_a concentrations in the variable CHL_A. It - ! is used when VAR_PEN_SW and CHL_FROM_FILE are true. - -! === module MOM_mixed_layer === -HMIX_MIN = 2.0 ! [m] default = 0.0 - ! The minimum mixed layer depth if the mixed layer depth is determined - ! dynamically. - -! === module MOM_opacity === -PEN_SW_NBANDS = 3 ! default = 1 - ! The number of bands of penetrating shortwave radiation. - -! === module MOM_tracer_advect === -TRACER_ADVECTION_SCHEME = "PPM:H3" ! default = "PLM" - ! The horizontal transport scheme for tracers: - ! PLM - Piecewise Linear Method - ! PPM:H3 - Piecewise Parabolic Method (Huyhn 3rd order) - ! PPM - Piecewise Parabolic Method (Colella-Woodward) - -! === module MOM_tracer_hor_diff === -KHTR = 600.0 ! [m2 s-1] default = 0.0 - ! The background along-isopycnal tracer diffusivity. -KHTR_MIN = 50.0 ! [m2 s-1] default = 0.0 - ! The minimum along-isopycnal tracer diffusivity. -KHTR_MAX = 900.0 ! [m2 s-1] default = 0.0 - ! The maximum along-isopycnal tracer diffusivity. - -! === module MOM_sum_output === -MAXTRUNC = 5000 ! [truncations save_interval-1] default = 0 - ! The run will be stopped, and the day set to a very large value if the velocity - ! is truncated more than MAXTRUNC times between energy saves. Set MAXTRUNC to 0 - ! to stop if there is any truncation of velocities. -ENERGYSAVEDAYS = 0.5 ! [days] default = 1.0 - ! The interval in units of TIMEUNIT between saves of the energies of the run and - ! other globally summed diagnostics. - -! === module MOM_surface_forcing === -READ_GUST_2D = False ! [Boolean] default = False - ! If true, use a 2-dimensional gustiness supplied from an input file - -! === module MOM_main (MOM_driver) === -RESTART_CONTROL = 3 ! default = 1 - ! An integer whose bits encode which restart files are written. Add 2 (bit 1) - ! for a time-stamped file, and odd (bit 0) for a non-time-stamped file. A - ! non-time-stamped restart file is saved at the end of the run segment for any - ! non-negative value. - -! === module MOM_write_cputime === - -! Debugging parameters set to non-default values -U_TRUNC_FILE = "U_velocity_truncations" ! default = "" - ! The absolute path to a file into which the accelerations leading to zonal - ! velocity truncations are written. Undefine this for efficiency if this - ! diagnostic is not needed. -V_TRUNC_FILE = "V_velocity_truncations" ! default = "" - ! The absolute path to a file into which the accelerations leading to meridional - ! velocity truncations are written. Undefine this for efficiency if this - ! diagnostic is not needed. diff --git a/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/72x36/MOM_override b/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/72x36/MOM_override deleted file mode 100755 index a9b1e357b..000000000 --- a/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/72x36/MOM_override +++ /dev/null @@ -1,33 +0,0 @@ -! Blank file in which we can put "overrides" for parameters -NK = 50 -LAYOUT = 3, 2 -#override DT = 900.0 -#override DT_THERM = 900. - -#override USE_REGRIDDING = True -#override BULKMIXEDLAYER = False -COORD_FILE = "Layer_coord50.nc" -USE_STORED_SLOPES = True -USE_NEUTRAL_DIFFUSION = True -SIMPLE_TKE_TO_KD = True -REGRIDDING_COORDINATE_MODE = "Z*" -ALE_COORDINATE_CONFIG = "FILE:vgrid.nc,dz" -REMAPPING_SCHEME = "PPM_H4" -HMIX_FIXED = 0.5 -CFL_TRUNCATE_RAMP_TIME = 7200. -Z_INIT_ALE_REMAPPING = True -ENERGETICS_SFC_PBL = True -USE_MLD_ITERATION = False -MASS_WEIGHT_IN_PRESSURE_GRADIENT = True - -VERBOSITY = 9 -DEBUG = True -FATAL_UNUSED_PARAMS = True - -TOPO_FILE = "ocean_topog_Edited.nc" - -RESTART_CHECKSUMS_REQUIRED = False - -HFREEZE = 10.0 -BAD_VAL_SST_MIN = -3.0 -BAD_VAL_SSS_MAX = 55.0 diff --git a/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/72x36/MOM_parameter_doc.all b/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/72x36/MOM_parameter_doc.all deleted file mode 100644 index c414edade..000000000 --- a/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/72x36/MOM_parameter_doc.all +++ /dev/null @@ -1,1978 +0,0 @@ -! This file was written by the model and records all non-layout or debugging parameters used at run-time. - -! === module MOM === -SPLIT = True ! [Boolean] default = True - ! Use the split time stepping if true. -CALC_RHO_FOR_SEA_LEVEL = False ! [Boolean] default = False - ! If true, the in-situ density is used to calculate the effective sea level that - ! is returned to the coupler. If false, the Boussinesq parameter RHO_0 is used. -ENABLE_THERMODYNAMICS = True ! [Boolean] default = True - ! If true, Temperature and salinity are used as state variables. -USE_EOS = True ! [Boolean] default = True - ! If true, density is calculated from temperature and salinity with an equation - ! of state. If USE_EOS is true, ENABLE_THERMODYNAMICS must be true as well. -DIABATIC_FIRST = True ! [Boolean] default = False - ! If true, apply diabatic and thermodynamic processes, including buoyancy - ! forcing and mass gain or loss, before stepping the dynamics forward. -USE_CONTEMP_ABSSAL = False ! [Boolean] default = False - ! If true, the prognostics T&S are the conservative temperature and absolute - ! salinity. Care should be taken to convert them to potential temperature and - ! practical salinity before exchanging them with the coupler and/or reporting - ! T&S diagnostics. -ADIABATIC = False ! [Boolean] default = False - ! There are no diapycnal mass fluxes if ADIABATIC is true. This assumes that KD - ! = KDML = 0.0 and that there is no buoyancy forcing, but makes the model faster - ! by eliminating subroutine calls. -DO_DYNAMICS = True ! [Boolean] default = True - ! If False, skips the dynamics calls that update u & v, as well as the gravity - ! wave adjustment to h. This may be a fragile feature, but can be useful during - ! development -OFFLINE_TRACER_MODE = False ! [Boolean] default = False - ! If true, barotropic and baroclinic dynamics, thermodynamics are all bypassed - ! with all the fields necessary to integrate the tracer advection and diffusion - ! equation are read in from files stored from a previous integration of the - ! prognostic model. NOTE: This option only used in the ocean_solo_driver. -USE_REGRIDDING = True ! [Boolean] default = False - ! If True, use the ALE algorithm (regridding/remapping). If False, use the - ! layered isopycnal algorithm. -BULKMIXEDLAYER = False ! [Boolean] default = False - ! If true, use a Kraus-Turner-like bulk mixed layer with transitional buffer - ! layers. Layers 1 through NKML+NKBL have variable densities. There must be at - ! least NKML+NKBL+1 layers if BULKMIXEDLAYER is true. BULKMIXEDLAYER can not be - ! used with USE_REGRIDDING. The default is influenced by ENABLE_THERMODYNAMICS. -THICKNESSDIFFUSE = True ! [Boolean] default = False - ! If true, interface heights are diffused with a coefficient of KHTH. -THICKNESSDIFFUSE_FIRST = True ! [Boolean] default = False - ! If true, do thickness diffusion before dynamics. This is only used if - ! THICKNESSDIFFUSE is true. -BATHYMETRY_AT_VEL = False ! [Boolean] default = False - ! If true, there are separate values for the basin depths at velocity points. - ! Otherwise the effects of topography are entirely determined from thickness - ! points. -DT = 900.0 ! [s] - ! The (baroclinic) dynamics time step. The time-step that is actually used will - ! be an integer fraction of the forcing time-step (DT_FORCING in ocean-only mode - ! or the coupling timestep in coupled mode.) -DT_THERM = 900.0 ! [s] default = 900.0 - ! The thermodynamic and tracer advection time step. Ideally DT_THERM should be - ! an integer multiple of DT and less than the forcing or coupling time-step, - ! unless THERMO_SPANS_COUPLING is true, in which case DT_THERM can be an integer - ! multiple of the coupling timestep. By default DT_THERM is set to DT. -THERMO_SPANS_COUPLING = False ! [Boolean] default = False - ! If true, the MOM will take thermodynamic and tracer timesteps that can be - ! longer than the coupling timestep. The actual thermodynamic timestep that is - ! used in this case is the largest integer multiple of the coupling timestep - ! that is less than or equal to DT_THERM. -HMIX_SFC_PROP = 1.0 ! [m] default = 1.0 - ! If BULKMIXEDLAYER is false, HMIX_SFC_PROP is the depth over which to average - ! to find surface properties like SST and SSS or density (but not surface - ! velocities). -HMIX_UV_SFC_PROP = 0.0 ! [m] default = 0.0 - ! If BULKMIXEDLAYER is false, HMIX_UV_SFC_PROP is the depth over which to - ! average to find surface flow properties, SSU, SSV. A non-positive value - ! indicates no averaging. -HFREEZE = 10.0 ! [m] default = -1.0 - ! If HFREEZE > 0, melt potential will be computed. The actual depth over which - ! melt potential is computed will be min(HFREEZE, OBLD), where OBLD is the - ! boundary layer depth. If HFREEZE <= 0 (default), melt potential will not be - ! computed. -INTERPOLATE_P_SURF = False ! [Boolean] default = False - ! If true, linearly interpolate the surface pressure over the coupling time - ! step, using the specified value at the end of the step. -DTBT_RESET_PERIOD = 0.0 ! [s] default = 900.0 - ! The period between recalculations of DTBT (if DTBT <= 0). If DTBT_RESET_PERIOD - ! is negative, DTBT is set based only on information available at - ! initialization. If 0, DTBT will be set every dynamics time step. The default - ! is set by DT_THERM. This is only used if SPLIT is true. -FRAZIL = True ! [Boolean] default = False - ! If true, water freezes if it gets too cold, and the accumulated heat deficit - ! is returned in the surface state. FRAZIL is only used if - ! ENABLE_THERMODYNAMICS is true. -DO_GEOTHERMAL = False ! [Boolean] default = False - ! If true, apply geothermal heating. -BOUND_SALINITY = True ! [Boolean] default = False - ! If true, limit salinity to being positive. (The sea-ice model may ask for more - ! salt than is available and drive the salinity negative otherwise.) -MIN_SALINITY = 0.01 ! [PPT] default = 0.0 - ! The minimum value of salinity when BOUND_SALINITY=True. -C_P = 3925.0 ! [J kg-1 K-1] default = 3991.86795711963 - ! The heat capacity of sea water, approximated as a constant. This is only used - ! if ENABLE_THERMODYNAMICS is true. The default value is from the TEOS-10 - ! definition of conservative temperature. -USE_PSURF_IN_EOS = True ! [Boolean] default = True - ! If true, always include the surface pressure contributions in equation of - ! state calculations. -P_REF = 2.0E+07 ! [Pa] default = 2.0E+07 - ! The pressure that is used for calculating the coordinate density. (1 Pa = 1e4 - ! dbar, so 2e7 is commonly used.) This is only used if USE_EOS and - ! ENABLE_THERMODYNAMICS are true. -FIRST_DIRECTION = 0 ! default = 0 - ! An integer that indicates which direction goes first in parts of the code that - ! use directionally split updates, with even numbers (or 0) used for x- first - ! and odd numbers used for y-first. -CHECK_BAD_SURFACE_VALS = True ! [Boolean] default = False - ! If true, check the surface state for ridiculous values. -BAD_VAL_SSH_MAX = 20.0 ! [m] default = 20.0 - ! The value of SSH above which a bad value message is triggered, if - ! CHECK_BAD_SURFACE_VALS is true. -BAD_VAL_SSS_MAX = 55.0 ! [PPT] default = 45.0 - ! The value of SSS above which a bad value message is triggered, if - ! CHECK_BAD_SURFACE_VALS is true. -BAD_VAL_SST_MAX = 45.0 ! [deg C] default = 45.0 - ! The value of SST above which a bad value message is triggered, if - ! CHECK_BAD_SURFACE_VALS is true. -BAD_VAL_SST_MIN = -3.0 ! [deg C] default = -2.1 - ! The value of SST below which a bad value message is triggered, if - ! CHECK_BAD_SURFACE_VALS is true. -BAD_VAL_COLUMN_THICKNESS = 0.0 ! [m] default = 0.0 - ! The value of column thickness below which a bad value message is triggered, if - ! CHECK_BAD_SURFACE_VALS is true. -DEFAULT_2018_ANSWERS = False ! [Boolean] default = False - ! This sets the default value for the various _2018_ANSWERS parameters. -SURFACE_2018_ANSWERS = False ! [Boolean] default = False - ! If true, use expressions for the surface properties that recover the answers - ! from the end of 2018. Otherwise, use more appropriate expressions that differ - ! at roundoff for non-Boussinesq cases. -USE_DIABATIC_TIME_BUG = False ! [Boolean] default = False - ! If true, uses the wrong calendar time for diabatic processes, as was done in - ! MOM6 versions prior to February 2018. This is not recommended. -SAVE_INITIAL_CONDS = True ! [Boolean] default = False - ! If true, write the initial conditions to a file given by IC_OUTPUT_FILE. -IC_OUTPUT_FILE = "MOM_IC" ! default = "MOM_IC" - ! The file into which to write the initial conditions. -WRITE_GEOM = 1 ! default = 1 - ! If =0, never write the geometry and vertical grid files. If =1, write the - ! geometry and vertical grid files only for a new simulation. If =2, always - ! write the geometry and vertical grid files. Other values are invalid. -ENSEMBLE_OCEAN = False ! [Boolean] default = False - ! If False, The model is being run in serial mode as a single realization. If - ! True, The current model realization is part of a larger ensemble and at the - ! end of step MOM, we will perform a gather of the ensemble members for - ! statistical evaluation and/or data assimilation. - -! === module MOM_domains === -REENTRANT_X = True ! [Boolean] default = True - ! If true, the domain is zonally reentrant. -REENTRANT_Y = False ! [Boolean] default = False - ! If true, the domain is meridionally reentrant. -TRIPOLAR_N = True ! [Boolean] default = False - ! Use tripolar connectivity at the northern edge of the domain. With - ! TRIPOLAR_N, NIGLOBAL must be even. -NIGLOBAL = 72 ! - ! The total number of thickness grid points in the x-direction in the physical - ! domain. With STATIC_MEMORY_ this is set in MOM_memory.h at compile time. -NJGLOBAL = 36 ! - ! The total number of thickness grid points in the y-direction in the physical - ! domain. With STATIC_MEMORY_ this is set in MOM_memory.h at compile time. -NIHALO = 4 ! default = 4 - ! The number of halo points on each side in the x-direction. How this is set - ! varies with the calling component and static or dynamic memory configuration. -NJHALO = 4 ! default = 4 - ! The number of halo points on each side in the y-direction. How this is set - ! varies with the calling component and static or dynamic memory configuration. - -! === module MOM_hor_index === -! Sets the horizontal array index types. - -! === module MOM_fixed_initialization === -INPUTDIR = "INPUT" ! default = "." - ! The directory in which input files are found. - -! === module MOM_grid_init === -GRID_CONFIG = "mosaic" ! - ! A character string that determines the method for defining the horizontal - ! grid. Current options are: - ! mosaic - read the grid from a mosaic (supergrid) - ! file set by GRID_FILE. - ! cartesian - use a (flat) Cartesian grid. - ! spherical - use a simple spherical grid. - ! mercator - use a Mercator spherical grid. -GRID_FILE = "ocean_hgrid.nc" ! - ! Name of the file from which to read horizontal grid data. -USE_TRIPOLAR_GEOLONB_BUG = False ! [Boolean] default = False - ! If true, use older code that incorrectly sets the longitude in some points - ! along the tripolar fold to be off by 360 degrees. -TOPO_CONFIG = "file" ! - ! This specifies how bathymetry is specified: - ! file - read bathymetric information from the file - ! specified by (TOPO_FILE). - ! flat - flat bottom set to MAXIMUM_DEPTH. - ! bowl - an analytically specified bowl-shaped basin - ! ranging between MAXIMUM_DEPTH and MINIMUM_DEPTH. - ! spoon - a similar shape to 'bowl', but with an vertical - ! wall at the southern face. - ! halfpipe - a zonally uniform channel with a half-sine - ! profile in the meridional direction. - ! bbuilder - build topography from list of functions. - ! benchmark - use the benchmark test case topography. - ! Neverworld - use the Neverworld test case topography. - ! DOME - use a slope and channel configuration for the - ! DOME sill-overflow test case. - ! ISOMIP - use a slope and channel configuration for the - ! ISOMIP test case. - ! DOME2D - use a shelf and slope configuration for the - ! DOME2D gravity current/overflow test case. - ! Kelvin - flat but with rotated land mask. - ! seamount - Gaussian bump for spontaneous motion test case. - ! dumbbell - Sloshing channel with reservoirs on both ends. - ! shelfwave - exponential slope for shelfwave test case. - ! Phillips - ACC-like idealized topography used in the Phillips config. - ! dense - Denmark Strait-like dense water formation and overflow. - ! USER - call a user modified routine. -TOPO_FILE = "ocean_topog_Edited.nc" ! default = "topog.nc" - ! The file from which the bathymetry is read. -TOPO_VARNAME = "depth" ! default = "depth" - ! The name of the bathymetry variable in TOPO_FILE. -TOPO_EDITS_FILE = "" ! default = "" - ! The file from which to read a list of i,j,z topography overrides. -ALLOW_LANDMASK_CHANGES = False ! [Boolean] default = False - ! If true, allow topography overrides to change land mask. -MAXIMUM_DEPTH = 6000.0 ! [m] - ! The maximum depth of the ocean. -MINIMUM_DEPTH = 0.5 ! [m] default = 0.0 - ! If MASKING_DEPTH is unspecified, then anything shallower than MINIMUM_DEPTH is - ! assumed to be land and all fluxes are masked out. If MASKING_DEPTH is - ! specified, then all depths shallower than MINIMUM_DEPTH but deeper than - ! MASKING_DEPTH are rounded to MINIMUM_DEPTH. - -! === module MOM_open_boundary === -! Controls where open boundaries are located, what kind of boundary condition to impose, and what data to apply, -! if any. -OBC_NUMBER_OF_SEGMENTS = 0 ! default = 0 - ! The number of open boundary segments. -MASKING_DEPTH = -9999.0 ! [m] default = -9999.0 - ! The depth below which to mask points as land points, for which all fluxes are - ! zeroed out. MASKING_DEPTH is ignored if negative. -CHANNEL_CONFIG = "none" ! default = "none" - ! A parameter that determines which set of channels are - ! restricted to specific widths. Options are: - ! none - All channels have the grid width. - ! global_1deg - Sets 16 specific channels appropriate - ! for a 1-degree model, as used in CM2G. - ! list - Read the channel locations and widths from a - ! text file, like MOM_channel_list in the MOM_SIS - ! test case. - ! file - Read open face widths everywhere from a - ! NetCDF file on the model grid. -ROTATION = "2omegasinlat" ! default = "2omegasinlat" - ! This specifies how the Coriolis parameter is specified: - ! 2omegasinlat - Use twice the planetary rotation rate - ! times the sine of latitude. - ! betaplane - Use a beta-plane or f-plane. - ! USER - call a user modified routine. -OMEGA = 7.2921E-05 ! [s-1] default = 7.2921E-05 - ! The rotation rate of the earth. -GRID_ROTATION_ANGLE_BUGS = False ! [Boolean] default = False - ! If true, use an older algorithm to calculate the sine and cosines needed - ! rotate between grid-oriented directions and true north and east. Differences - ! arise at the tripolar fold. -PARALLEL_RESTARTFILES = True ! [Boolean] default = False - ! If true, each processor writes its own restart file, otherwise a single - ! restart file is generated - -! === module MOM_verticalGrid === -! Parameters providing information about the vertical grid. -G_EARTH = 9.8 ! [m s-2] default = 9.8 - ! The gravitational acceleration of the Earth. -RHO_0 = 1035.0 ! [kg m-3] default = 1035.0 - ! The mean ocean density used with BOUSSINESQ true to calculate accelerations - ! and the mass for conservation properties, or with BOUSSINSEQ false to convert - ! some parameters from vertical units of m to kg m-2. -BOUSSINESQ = True ! [Boolean] default = True - ! If true, make the Boussinesq approximation. -ANGSTROM = 1.0E-10 ! [m] default = 1.0E-10 - ! The minimum layer thickness, usually one-Angstrom. -H_TO_M = 1.0 ! [m H-1] default = 1.0 - ! A constant that translates the model's internal units of thickness into m. -NK = 50 ! [nondim] - ! The number of model layers. - -! === module MOM_tracer_registry === - -! === module MOM_EOS === -EQN_OF_STATE = "WRIGHT" ! default = "WRIGHT" - ! EQN_OF_STATE determines which ocean equation of state should be used. - ! Currently, the valid choices are "LINEAR", "UNESCO", "WRIGHT", "NEMO" and - ! "TEOS10". This is only used if USE_EOS is true. -EOS_QUADRATURE = False ! [Boolean] default = False - ! If true, always use the generic (quadrature) code code for the integrals of - ! density. -TFREEZE_FORM = "LINEAR" ! default = "LINEAR" - ! TFREEZE_FORM determines which expression should be used for the freezing - ! point. Currently, the valid choices are "LINEAR", "MILLERO_78", "TEOS10" -TFREEZE_S0_P0 = 0.0 ! [deg C] default = 0.0 - ! When TFREEZE_FORM=LINEAR, this is the freezing potential temperature at S=0, - ! P=0. -DTFREEZE_DS = -0.054 ! [deg C PSU-1] default = -0.054 - ! When TFREEZE_FORM=LINEAR, this is the derivative of the freezing potential - ! temperature with salinity. -DTFREEZE_DP = 0.0 ! [deg C Pa-1] default = 0.0 - ! When TFREEZE_FORM=LINEAR, this is the derivative of the freezing potential - ! temperature with pressure. - -! === module MOM_restart === -RESTARTFILE = "MOM.res" ! default = "MOM.res" - ! The name-root of the restart file. -LARGE_FILE_SUPPORT = True ! [Boolean] default = True - ! If true, use the file-size limits with NetCDF large file support (4Gb), - ! otherwise the limit is 2Gb. -MAX_FIELDS = 100 ! default = 100 - ! The maximum number of restart fields that can be used. -RESTART_CHECKSUMS_REQUIRED = False ! [Boolean] default = True - ! If true, require the restart checksums to match and error out otherwise. Users - ! may want to avoid this comparison if for example the restarts are made from a - ! run with a different mask_table than the current run, in which case the - ! checksums will not match and cause crash. - -! === module MOM_tracer_flow_control === -USE_USER_TRACER_EXAMPLE = False ! [Boolean] default = False - ! If true, use the USER_tracer_example tracer package. -USE_DOME_TRACER = False ! [Boolean] default = False - ! If true, use the DOME_tracer tracer package. -USE_ISOMIP_TRACER = False ! [Boolean] default = False - ! If true, use the ISOMIP_tracer tracer package. -USE_RGC_TRACER = False ! [Boolean] default = False - ! If true, use the RGC_tracer tracer package. -USE_IDEAL_AGE_TRACER = True ! [Boolean] default = False - ! If true, use the ideal_age_example tracer package. -USE_REGIONAL_DYES = False ! [Boolean] default = False - ! If true, use the regional_dyes tracer package. -USE_OIL_TRACER = False ! [Boolean] default = False - ! If true, use the oil_tracer tracer package. -USE_ADVECTION_TEST_TRACER = False ! [Boolean] default = False - ! If true, use the advection_test_tracer tracer package. -USE_OCMIP2_CFC = False ! [Boolean] default = False - ! If true, use the MOM_OCMIP2_CFC tracer package. -USE_generic_tracer = False ! [Boolean] default = False - ! If true and _USE_GENERIC_TRACER is defined as a preprocessor macro, use the - ! MOM_generic_tracer packages. -USE_PSEUDO_SALT_TRACER = False ! [Boolean] default = False - ! If true, use the pseudo salt tracer, typically run as a diagnostic. -USE_BOUNDARY_IMPULSE_TRACER = False ! [Boolean] default = False - ! If true, use the boundary impulse tracer. -USE_DYED_OBC_TRACER = False ! [Boolean] default = False - ! If true, use the dyed_obc_tracer tracer package. - -! === module ideal_age_example === -DO_IDEAL_AGE = True ! [Boolean] default = True - ! If true, use an ideal age tracer that is set to 0 age in the mixed layer and - ! ages at unit rate in the interior. -DO_IDEAL_VINTAGE = False ! [Boolean] default = False - ! If true, use an ideal vintage tracer that is set to an exponentially - ! increasing value in the mixed layer and is conserved thereafter. -DO_IDEAL_AGE_DATED = False ! [Boolean] default = False - ! If true, use an ideal age tracer that is everywhere 0 before - ! IDEAL_AGE_DATED_START_YEAR, but the behaves like the standard ideal age tracer - ! - i.e. is set to 0 age in the mixed layer and ages at unit rate in the - ! interior. -AGE_IC_FILE = "" ! default = "" - ! The file in which the age-tracer initial values can be found, or an empty - ! string for internal initialization. -AGE_IC_FILE_IS_Z = False ! [Boolean] default = False - ! If true, AGE_IC_FILE is in depth space, not layer space -TRACERS_MAY_REINIT = False ! [Boolean] default = False - ! If true, tracers may go through the initialization code if they are not found - ! in the restart files. Otherwise it is a fatal error if the tracers are not - ! found in the restart files of a restarted run. - -! === module MOM_coord_initialization === -COORD_CONFIG = "file" ! default = "none" - ! This specifies how layers are to be defined: - ! ALE or none - used to avoid defining layers in ALE mode - ! file - read coordinate information from the file - ! specified by (COORD_FILE). - ! BFB - Custom coords for buoyancy-forced basin case - ! based on SST_S, T_BOT and DRHO_DT. - ! linear - linear based on interfaces not layers - ! layer_ref - linear based on layer densities - ! ts_ref - use reference temperature and salinity - ! ts_range - use range of temperature and salinity - ! (T_REF and S_REF) to determine surface density - ! and GINT calculate internal densities. - ! gprime - use reference density (RHO_0) for surface - ! density and GINT calculate internal densities. - ! ts_profile - use temperature and salinity profiles - ! (read from COORD_FILE) to set layer densities. - ! USER - call a user modified routine. -GFS = 9.8 ! [m s-2] default = 9.8 - ! The reduced gravity at the free surface. -COORD_FILE = "Layer_coord50.nc" ! - ! The file from which the coordinate densities are read. -COORD_VAR = "Layer" ! default = "Layer" - ! The variable in COORD_FILE that is to be used for the coordinate densities. -REMAP_UV_USING_OLD_ALG = False ! [Boolean] default = False - ! If true, uses the old remapping-via-a-delta-z method for remapping u and v. If - ! false, uses the new method that remaps between grids described by an old and - ! new thickness. -REGRIDDING_COORDINATE_MODE = "Z*" ! default = "LAYER" - ! Coordinate mode for vertical regridding. Choose among the following - ! possibilities: LAYER - Isopycnal or stacked shallow water layers - ! ZSTAR, Z* - stretched geopotential z* - ! SIGMA_SHELF_ZSTAR - stretched geopotential z* ignoring shelf - ! SIGMA - terrain following coordinates - ! RHO - continuous isopycnal - ! HYCOM1 - HyCOM-like hybrid coordinate - ! SLIGHT - stretched coordinates above continuous isopycnal - ! ADAPTIVE - optimize for smooth neutral density surfaces -REGRIDDING_COORDINATE_UNITS = "m" ! default = "m" - ! Units of the regridding coordinate. -ALE_COORDINATE_CONFIG = "FILE:vgrid.nc,dz" ! default = "UNIFORM" - ! Determines how to specify the coordinate resolution. Valid options are: - ! PARAM - use the vector-parameter ALE_RESOLUTION - ! UNIFORM[:N] - uniformly distributed - ! FILE:string - read from a file. The string specifies - ! the filename and variable name, separated - ! by a comma or space, e.g. FILE:lev.nc,dz - ! or FILE:lev.nc,interfaces=zw - ! WOA09[:N] - the WOA09 vertical grid (approximately) - ! FNC1:string - FNC1:dz_min,H_total,power,precision - ! HYBRID:string - read from a file. The string specifies - ! the filename and two variable names, separated - ! by a comma or space, for sigma-2 and dz. e.g. - ! HYBRID:vgrid.nc,sigma2,dz -!ALE_RESOLUTION = 3*10.1, 2*10.2, 10.3, 10.5, 10.7, 10.9, 11.3, 11.7, 12.4, 13.3, 14.6, 16.3, 18.6, 21.7, 25.9, 31.4, 38.5, 47.4, 58.4, 71.3, 86.0, 101.9, 118.1, 134.0, 148.7, 161.6, 172.6, 181.5, 188.6, 194.1, 198.3, 201.4, 203.7, 205.4, 206.7, 207.6, 208.3, 208.7, 209.1, 209.3, 209.5, 209.7, 2*209.8, 2*209.9, 209.0 ! [m] - ! The distribution of vertical resolution for the target - ! grid used for Eulerian-like coordinates. For example, - ! in z-coordinate mode, the parameter is a list of level - ! thicknesses (in m). In sigma-coordinate mode, the list - ! is of non-dimensional fractions of the water column. -MIN_THICKNESS = 0.001 ! [m] default = 0.001 - ! When regridding, this is the minimum layer thickness allowed. -REMAPPING_SCHEME = "PPM_H4" ! default = "PLM" - ! This sets the reconstruction scheme used for vertical remapping for all - ! variables. It can be one of the following schemes: PCM (1st-order - ! accurate) - ! PLM (2nd-order accurate) - ! PPM_H4 (3rd-order accurate) - ! PPM_IH4 (3rd-order accurate) - ! PQM_IH4IH3 (4th-order accurate) - ! PQM_IH6IH5 (5th-order accurate) -FATAL_CHECK_RECONSTRUCTIONS = False ! [Boolean] default = False - ! If true, cell-by-cell reconstructions are checked for consistency and if - ! non-monotonicity or an inconsistency is detected then a FATAL error is issued. -FATAL_CHECK_REMAPPING = False ! [Boolean] default = False - ! If true, the results of remapping are checked for conservation and new extrema - ! and if an inconsistency is detected then a FATAL error is issued. -REMAP_BOUND_INTERMEDIATE_VALUES = False ! [Boolean] default = False - ! If true, the values on the intermediate grid used for remapping are forced to - ! be bounded, which might not be the case due to round off. -REMAP_BOUNDARY_EXTRAP = False ! [Boolean] default = False - ! If true, values at the interfaces of boundary cells are extrapolated instead - ! of piecewise constant -REMAPPING_2018_ANSWERS = False ! [Boolean] default = False - ! If true, use the order of arithmetic and expressions that recover the answers - ! from the end of 2018. Otherwise, use updated and more robust forms of the - ! same expressions. -REMAP_AFTER_INITIALIZATION = True ! [Boolean] default = True - ! If true, applies regridding and remapping immediately after initialization so - ! that the state is ALE consistent. This is a legacy step and should not be - ! needed if the initialization is consistent with the coordinate mode. -REGRID_TIME_SCALE = 0.0 ! [s] default = 0.0 - ! The time-scale used in blending between the current (old) grid and the target - ! (new) grid. A short time-scale favors the target grid (0. or anything less - ! than DT_THERM) has no memory of the old grid. A very long time-scale makes the - ! model more Lagrangian. -REGRID_FILTER_SHALLOW_DEPTH = 0.0 ! [m] default = 0.0 - ! The depth above which no time-filtering is applied. Above this depth final - ! grid exactly matches the target (new) grid. -REGRID_FILTER_DEEP_DEPTH = 0.0 ! [m] default = 0.0 - ! The depth below which full time-filtering is applied with time-scale - ! REGRID_TIME_SCALE. Between depths REGRID_FILTER_SHALLOW_DEPTH and - ! REGRID_FILTER_SHALLOW_DEPTH the filter weights adopt a cubic profile. - -! === module MOM_grid === -! Parameters providing information about the lateral grid. -REFERENCE_HEIGHT = 0.0 ! [m] default = 0.0 - ! A reference value for geometric height fields, such as bathyT. - -! === module MOM_state_initialization === -INIT_LAYERS_FROM_Z_FILE = True ! [Boolean] default = False - ! If true, initialize the layer thicknesses, temperatures, and salinities from a - ! Z-space file on a latitude-longitude grid. - -! === module MOM_initialize_layers_from_Z === -TEMP_SALT_Z_INIT_FILE = "WOA05_pottemp_salt.nc" ! default = "temp_salt_z.nc" - ! The name of the z-space input file used to initialize temperatures (T) and - ! salinities (S). If T and S are not in the same file, TEMP_Z_INIT_FILE and - ! SALT_Z_INIT_FILE must be set. -TEMP_Z_INIT_FILE = "WOA05_pottemp_salt.nc" ! default = "WOA05_pottemp_salt.nc" - ! The name of the z-space input file used to initialize temperatures, only. -SALT_Z_INIT_FILE = "WOA05_pottemp_salt.nc" ! default = "WOA05_pottemp_salt.nc" - ! The name of the z-space input file used to initialize temperatures, only. -Z_INIT_FILE_PTEMP_VAR = "PTEMP" ! default = "ptemp" - ! The name of the potential temperature variable in TEMP_Z_INIT_FILE. -Z_INIT_FILE_SALT_VAR = "SALT" ! default = "salt" - ! The name of the salinity variable in SALT_Z_INIT_FILE. -Z_INIT_HOMOGENIZE = False ! [Boolean] default = False - ! If True, then horizontally homogenize the interpolated initial conditions. -Z_INIT_ALE_REMAPPING = True ! [Boolean] default = False - ! If True, then remap straight to model coordinate from file. -Z_INIT_REMAPPING_SCHEME = "PPM_IH4" ! default = "PPM_IH4" - ! The remapping scheme to use if using Z_INIT_ALE_REMAPPING is True. -Z_INIT_REMAP_GENERAL = False ! [Boolean] default = False - ! If false, only initializes to z* coordinates. If true, allows initialization - ! directly to general coordinates. -Z_INIT_REMAP_FULL_COLUMN = False ! [Boolean] default = False - ! If false, only reconstructs profiles for valid data points. If true, inserts - ! vanished layers below the valid data. -Z_INIT_REMAP_OLD_ALG = False ! [Boolean] default = False - ! If false, uses the preferred remapping algorithm for initialization. If true, - ! use an older, less robust algorithm for remapping. -TEMP_SALT_INIT_VERTICAL_REMAP_ONLY = False ! [Boolean] default = False - ! If true, initial conditions are on the model horizontal grid. Extrapolation - ! over missing ocean values is done using an ICE-9 procedure with vertical ALE - ! remapping . -HOR_REGRID_2018_ANSWERS = False ! [Boolean] default = False - ! If true, use the order of arithmetic for horizonal regridding that recovers - ! the answers from the end of 2018. Otherwise, use rotationally symmetric forms - ! of the same expressions. -VELOCITY_CONFIG = "zero" ! default = "zero" - ! A string that determines how the initial velocities are specified for a new - ! run: - ! file - read velocities from the file specified - ! by (VELOCITY_FILE). - ! zero - the fluid is initially at rest. - ! uniform - the flow is uniform (determined by - ! parameters INITIAL_U_CONST and INITIAL_V_CONST). - ! rossby_front - a mixed layer front in thermal wind balance. - ! soliton - Equatorial Rossby soliton. - ! USER - call a user modified routine. -CONVERT_THICKNESS_UNITS = False ! [Boolean] default = False - ! If true, convert the thickness initial conditions from units of m to kg m-2 - ! or vice versa, depending on whether BOUSSINESQ is defined. This does not apply - ! if a restart file is read. -DEPRESS_INITIAL_SURFACE = False ! [Boolean] default = False - ! If true, depress the initial surface to avoid huge tsunamis when a large - ! surface pressure is applied. -TRIM_IC_FOR_P_SURF = False ! [Boolean] default = False - ! If true, cuts way the top of the column for initial conditions at the depth - ! where the hydrostatic pressure matches the imposed surface pressure which is - ! read from file. -REGRID_ACCELERATE_INIT = False ! [Boolean] default = False - ! If true, runs REGRID_ACCELERATE_ITERATIONS iterations of the regridding - ! algorithm to push the initial grid to be consistent with the initial - ! condition. Useful only for state-based and iterative coordinates. -SPONGE = False ! [Boolean] default = False - ! If true, sponges may be applied anywhere in the domain. The exact location and - ! properties of those sponges are specified via SPONGE_CONFIG. - -! === module MOM_diag_mediator === -NUM_DIAG_COORDS = 1 ! default = 1 - ! The number of diagnostic vertical coordinates to use. For each coordinate, an - ! entry in DIAG_COORDS must be provided. -USE_GRID_SPACE_DIAGNOSTIC_AXES = False ! [Boolean] default = False - ! If true, use a grid index coordinate convention for diagnostic axes. -DIAG_COORDS = "z Z ZSTAR" ! default = "z Z ZSTAR" - ! A list of string tuples associating diag_table modules to a coordinate - ! definition used for diagnostics. Each string is of the form "MODULE_SUFFIX - ! PARAMETER_SUFFIX COORDINATE_NAME". -DIAG_MISVAL = 1.0E+20 ! [not defined] default = 1.0E+20 - ! Set the default missing value to use for diagnostics. -DIAG_AS_CHKSUM = False ! [Boolean] default = False - ! Instead of writing diagnostics to the diag manager, write a text file - ! containing the checksum (bitcount) of the array. -AVAILABLE_DIAGS_FILE = "available_diags.000000" ! default = "available_diags.000000" - ! A file into which to write a list of all available ocean diagnostics that can - ! be included in a diag_table. -DIAG_COORD_DEF_Z = "WOA09" ! default = "WOA09" - ! Determines how to specify the coordinate resolution. Valid options are: - ! PARAM - use the vector-parameter DIAG_COORD_RES_Z - ! UNIFORM[:N] - uniformly distributed - ! FILE:string - read from a file. The string specifies - ! the filename and variable name, separated - ! by a comma or space, e.g. FILE:lev.nc,dz - ! or FILE:lev.nc,interfaces=zw - ! WOA09[:N] - the WOA09 vertical grid (approximately) - ! FNC1:string - FNC1:dz_min,H_total,power,precision - ! HYBRID:string - read from a file. The string specifies - ! the filename and two variable names, separated - ! by a comma or space, for sigma-2 and dz. e.g. - ! HYBRID:vgrid.nc,sigma2,dz - -! === module MOM_MEKE === -USE_MEKE = True ! [Boolean] default = False - ! If true, turns on the MEKE scheme which calculates a sub-grid mesoscale eddy - ! kinetic energy budget. -MEKE_DAMPING = 0.0 ! [s-1] default = 0.0 - ! The local depth-independent MEKE dissipation rate. -MEKE_CD_SCALE = 0.0 ! [nondim] default = 0.0 - ! The ratio of the bottom eddy velocity to the column mean eddy velocity, i.e. - ! sqrt(2*MEKE). This should be less than 1 to account for the surface - ! intensification of MEKE. -MEKE_CB = 25.0 ! [nondim] default = 25.0 - ! A coefficient in the expression for the ratio of bottom projected eddy energy - ! and mean column energy (see Jansen et al. 2015). -MEKE_MIN_GAMMA2 = 1.0E-04 ! [nondim] default = 1.0E-04 - ! The minimum allowed value of gamma_b^2. -MEKE_CT = 50.0 ! [nondim] default = 50.0 - ! A coefficient in the expression for the ratio of barotropic eddy energy and - ! mean column energy (see Jansen et al. 2015). -MEKE_GMCOEFF = 1.0 ! [nondim] default = -1.0 - ! The efficiency of the conversion of potential energy into MEKE by the - ! thickness mixing parameterization. If MEKE_GMCOEFF is negative, this - ! conversion is not used or calculated. -MEKE_GEOMETRIC = False ! [Boolean] default = False - ! If MEKE_GEOMETRIC is true, uses the GM coefficient formulation from the - ! GEOMETRIC framework (Marshall et al., 2012). -MEKE_GEOMETRIC_ALPHA = 0.05 ! [nondim] default = 0.05 - ! The nondimensional coefficient governing the efficiency of the GEOMETRIC - ! thickness diffusion. -MEKE_EQUILIBRIUM_ALT = False ! [Boolean] default = False - ! If true, use an alternative formula for computing the (equilibrium)initial - ! value of MEKE. -MEKE_EQUILIBRIUM_RESTORING = False ! [Boolean] default = False - ! If true, restore MEKE back to its equilibrium value, which is calculated at - ! each time step. -MEKE_FRCOEFF = -1.0 ! [nondim] default = -1.0 - ! The efficiency of the conversion of mean energy into MEKE. If MEKE_FRCOEFF is - ! negative, this conversion is not used or calculated. -MEKE_GMECOEFF = -1.0 ! [nondim] default = -1.0 - ! The efficiency of the conversion of MEKE into mean energy by GME. If - ! MEKE_GMECOEFF is negative, this conversion is not used or calculated. -MEKE_BGSRC = 0.0 ! [W kg-1] default = 0.0 - ! A background energy source for MEKE. -MEKE_KH = -1.0 ! [m2 s-1] default = -1.0 - ! A background lateral diffusivity of MEKE. Use a negative value to not apply - ! lateral diffusion to MEKE. -MEKE_K4 = -1.0 ! [m4 s-1] default = -1.0 - ! A lateral bi-harmonic diffusivity of MEKE. Use a negative value to not apply - ! bi-harmonic diffusion to MEKE. -MEKE_DTSCALE = 1.0 ! [nondim] default = 1.0 - ! A scaling factor to accelerate the time evolution of MEKE. -MEKE_KHCOEFF = 1.0 ! [nondim] default = 1.0 - ! A scaling factor in the expression for eddy diffusivity which is otherwise - ! proportional to the MEKE velocity- scale times an eddy mixing-length. This - ! factor must be >0 for MEKE to contribute to the thickness/ and tracer - ! diffusivity in the rest of the model. -MEKE_USCALE = 0.0 ! [m s-1] default = 0.0 - ! The background velocity that is combined with MEKE to calculate the bottom - ! drag. -MEKE_GM_SRC_ALT = False ! [Boolean] default = False - ! If true, use the GM energy conversion form S^2*N^2*kappa rather than the - ! streamfunction for the MEKE GM source term. -MEKE_VISC_DRAG = True ! [Boolean] default = True - ! If true, use the vertvisc_type to calculate the bottom drag acting on MEKE. -MEKE_KHTH_FAC = 0.0 ! [nondim] default = 0.0 - ! A factor that maps MEKE%Kh to KhTh. -MEKE_KHTR_FAC = 0.0 ! [nondim] default = 0.0 - ! A factor that maps MEKE%Kh to KhTr. -MEKE_KHMEKE_FAC = 0.0 ! [nondim] default = 0.0 - ! A factor that maps MEKE%Kh to Kh for MEKE itself. -MEKE_OLD_LSCALE = False ! [Boolean] default = False - ! If true, use the old formula for length scale which is a function of grid - ! spacing and deformation radius. -MEKE_MIN_LSCALE = False ! [Boolean] default = False - ! If true, use a strict minimum of provided length scales rather than harmonic - ! mean. -MEKE_RD_MAX_SCALE = False ! [nondim] default = False - ! If true, the length scale used by MEKE is the minimum of the deformation - ! radius or grid-spacing. Only used if MEKE_OLD_LSCALE=True -MEKE_VISCOSITY_COEFF_KU = 0.0 ! [nondim] default = 0.0 - ! If non-zero, is the scaling coefficient in the expression forviscosity used to - ! parameterize harmonic lateral momentum mixing byunresolved eddies represented - ! by MEKE. Can be negative torepresent backscatter from the unresolved eddies. -MEKE_VISCOSITY_COEFF_AU = 0.0 ! [nondim] default = 0.0 - ! If non-zero, is the scaling coefficient in the expression forviscosity used to - ! parameterize biharmonic lateral momentum mixing byunresolved eddies - ! represented by MEKE. Can be negative torepresent backscatter from the - ! unresolved eddies. -MEKE_FIXED_MIXING_LENGTH = 0.0 ! [m] default = 0.0 - ! If positive, is a fixed length contribution to the expression for mixing - ! length used in MEKE-derived diffusivity. -MEKE_ALPHA_DEFORM = 0.0 ! [nondim] default = 0.0 - ! If positive, is a coefficient weighting the deformation scale in the - ! expression for mixing length used in MEKE-derived diffusivity. -MEKE_ALPHA_RHINES = 0.0 ! [nondim] default = 0.0 - ! If positive, is a coefficient weighting the Rhines scale in the expression for - ! mixing length used in MEKE-derived diffusivity. -MEKE_ALPHA_EADY = 0.0 ! [nondim] default = 0.0 - ! If positive, is a coefficient weighting the Eady length scale in the - ! expression for mixing length used in MEKE-derived diffusivity. -MEKE_ALPHA_FRICT = 0.0 ! [nondim] default = 0.0 - ! If positive, is a coefficient weighting the frictional arrest scale in the - ! expression for mixing length used in MEKE-derived diffusivity. -MEKE_ALPHA_GRID = 0.0 ! [nondim] default = 0.0 - ! If positive, is a coefficient weighting the grid-spacing as a scale in the - ! expression for mixing length used in MEKE-derived diffusivity. -MEKE_COLD_START = False ! [Boolean] default = False - ! If true, initialize EKE to zero. Otherwise a local equilibrium solution is - ! used as an initial condition for EKE. -MEKE_BACKSCAT_RO_C = 0.0 ! [nondim] default = 0.0 - ! The coefficient in the Rossby number function for scaling the biharmonic - ! frictional energy source. Setting to non-zero enables the Rossby number - ! function. -MEKE_BACKSCAT_RO_POW = 0.0 ! [nondim] default = 0.0 - ! The power in the Rossby number function for scaling the biharmonic frictional - ! energy source. -MEKE_ADVECTION_FACTOR = 0.0 ! [nondim] default = 0.0 - ! A scale factor in front of advection of eddy energy. Zero turns advection off. - ! Using unity would be normal but other values could accommodate a mismatch - ! between the advecting barotropic flow and the vertical structure of MEKE. -MEKE_TOPOGRAPHIC_BETA = 0.0 ! [nondim] default = 0.0 - ! A scale factor to determine how much topographic beta is weighed in computing - ! beta in the expression of Rhines scale. Use 1 if full topographic beta effect - ! is considered; use 0 if it's completely ignored. -CDRAG = 0.003 ! [nondim] default = 0.003 - ! CDRAG is the drag coefficient relating the magnitude of the velocity field to - ! the bottom stress. -MEKE_CDRAG = 0.003 ! [nondim] default = 0.003 - ! Drag coefficient relating the magnitude of the velocity field to the bottom - ! stress in MEKE. - -! === module MOM_lateral_mixing_coeffs === -USE_VARIABLE_MIXING = True ! [Boolean] default = False - ! If true, the variable mixing code will be called. This allows diagnostics to - ! be created even if the scheme is not used. If KHTR_SLOPE_CFF>0 or - ! KhTh_Slope_Cff>0, this is set to true regardless of what is in the parameter - ! file. -USE_VISBECK = False ! [Boolean] default = False - ! If true, use the Visbeck et al. (1997) formulation for - ! thickness diffusivity. -RESOLN_SCALED_KH = True ! [Boolean] default = False - ! If true, the Laplacian lateral viscosity is scaled away when the first - ! baroclinic deformation radius is well resolved. -DEPTH_SCALED_KHTH = False ! [Boolean] default = False - ! If true, KHTH is scaled away when the depth is shallowerthan a reference - ! depth: KHTH = MIN(1,H/H0)**N * KHTH, where H0 is a reference depth, controlled - ! via DEPTH_SCALED_KHTH_H0, and the exponent (N) is controlled via - ! DEPTH_SCALED_KHTH_EXP. -RESOLN_SCALED_KHTH = True ! [Boolean] default = False - ! If true, the interface depth diffusivity is scaled away when the first - ! baroclinic deformation radius is well resolved. -RESOLN_SCALED_KHTR = False ! [Boolean] default = False - ! If true, the epipycnal tracer diffusivity is scaled away when the first - ! baroclinic deformation radius is well resolved. -RESOLN_USE_EBT = False ! [Boolean] default = False - ! If true, uses the equivalent barotropic wave speed instead of first baroclinic - ! wave for calculating the resolution fn. -KHTH_USE_EBT_STRUCT = False ! [Boolean] default = False - ! If true, uses the equivalent barotropic structure as the vertical structure of - ! thickness diffusivity. -KHTH_SLOPE_CFF = 0.0 ! [nondim] default = 0.0 - ! The nondimensional coefficient in the Visbeck formula for the interface depth - ! diffusivity -KHTR_SLOPE_CFF = 0.0 ! [nondim] default = 0.0 - ! The nondimensional coefficient in the Visbeck formula for the epipycnal tracer - ! diffusivity -USE_STORED_SLOPES = True ! [Boolean] default = False - ! If true, the isopycnal slopes are calculated once and stored for re-use. This - ! uses more memory but avoids calling the equation of state more times than - ! should be necessary. -VERY_SMALL_FREQUENCY = 1.0E-17 ! [s-1] default = 1.0E-17 - ! A miniscule frequency that is used to avoid division by 0. The default value - ! is roughly (pi / (the age of the universe)). -KD_SMOOTH = 1.0E-06 ! [m2 s-1] default = 1.0E-06 - ! A diapycnal diffusivity that is used to interpolate more sensible values of T - ! & S into thin layers. -VARMIX_KTOP = 2 ! [nondim] default = 2 - ! The layer number at which to start vertical integration of S*N for purposes of - ! finding the Eady growth rate. -KH_RES_SCALE_COEF = 1.0 ! [nondim] default = 1.0 - ! A coefficient that determines how KhTh is scaled away if RESOLN_SCALED_... is - ! true, as F = 1 / (1 + (KH_RES_SCALE_COEF*Rd/dx)^KH_RES_FN_POWER). -KH_RES_FN_POWER = 2 ! [nondim] default = 2 - ! The power of dx/Ld in the Kh resolution function. Any positive integer may be - ! used, although even integers are more efficient to calculate. Setting this - ! greater than 100 results in a step-function being used. -VISC_RES_SCALE_COEF = 1.0 ! [nondim] default = 1.0 - ! A coefficient that determines how Kh is scaled away if RESOLN_SCALED_... is - ! true, as F = 1 / (1 + (KH_RES_SCALE_COEF*Rd/dx)^KH_RES_FN_POWER). This - ! function affects lateral viscosity, Kh, and not KhTh. -VISC_RES_FN_POWER = 2 ! [nondim] default = 2 - ! The power of dx/Ld in the Kh resolution function. Any positive integer may be - ! used, although even integers are more efficient to calculate. Setting this - ! greater than 100 results in a step-function being used. This function affects - ! lateral viscosity, Kh, and not KhTh. -INTERPOLATE_RES_FN = False ! [Boolean] default = False - ! If true, interpolate the resolution function to the velocity points from the - ! thickness points; otherwise interpolate the wave speed and calculate the - ! resolution function independently at each point. -GILL_EQUATORIAL_LD = True ! [Boolean] default = True - ! If true, uses Gill's definition of the baroclinic equatorial deformation - ! radius, otherwise, if false, use Pedlosky's definition. These definitions - ! differ by a factor of 2 in front of the beta term in the denominator. Gill's - ! is the more appropriate definition. -INTERNAL_WAVE_SPEED_TOL = 0.001 ! [nondim] default = 0.001 - ! The fractional tolerance for finding the wave speeds. -INTERNAL_WAVE_SPEED_MIN = 0.0 ! [m s-1] default = 0.0 - ! A floor in the first mode speed below which 0 used instead. -INTERNAL_WAVE_SPEED_BETTER_EST = False ! [Boolean] default = False - ! If true, use a more robust estimate of the first mode wave speed as the - ! starting point for iterations. -USE_QG_LEITH_GM = False ! [Boolean] default = False - ! If true, use the QG Leith viscosity as the GM coefficient. - -! === module MOM_set_visc === -SET_VISC_2018_ANSWERS = False ! [Boolean] default = False - ! If true, use the order of arithmetic and expressions that recover the answers - ! from the end of 2018. Otherwise, use updated and more robust forms of the - ! same expressions. -BOTTOMDRAGLAW = True ! [Boolean] default = True - ! If true, the bottom stress is calculated with a drag law of the form - ! c_drag*|u|*u. The velocity magnitude may be an assumed value or it may be - ! based on the actual velocity in the bottommost HBBL, depending on LINEAR_DRAG. -CHANNEL_DRAG = True ! [Boolean] default = False - ! If true, the bottom drag is exerted directly on each layer proportional to the - ! fraction of the bottom it overlies. -LINEAR_DRAG = False ! [Boolean] default = False - ! If LINEAR_DRAG and BOTTOMDRAGLAW are defined the drag law is - ! cdrag*DRAG_BG_VEL*u. -PRANDTL_TURB = 1.0 ! [nondim] default = 1.0 - ! The turbulent Prandtl number applied to shear instability. -DYNAMIC_VISCOUS_ML = False ! [Boolean] default = False - ! If true, use a bulk Richardson number criterion to determine the mixed layer - ! thickness for viscosity. -HBBL = 10.0 ! [m] - ! The thickness of a bottom boundary layer with a viscosity of KVBBL if - ! BOTTOMDRAGLAW is not defined, or the thickness over which near-bottom - ! velocities are averaged for the drag law if BOTTOMDRAGLAW is defined but - ! LINEAR_DRAG is not. -BBL_USE_TIDAL_BG = False ! [Boolean] default = False - ! Flag to use the tidal RMS amplitude in place of constant background velocity - ! for computing u* in the BBL. This flag is only used when BOTTOMDRAGLAW is true - ! and LINEAR_DRAG is false. -DRAG_BG_VEL = 0.1 ! [m s-1] default = 0.0 - ! DRAG_BG_VEL is either the assumed bottom velocity (with LINEAR_DRAG) or an - ! unresolved velocity that is combined with the resolved velocity to estimate - ! the velocity magnitude. DRAG_BG_VEL is only used when BOTTOMDRAGLAW is - ! defined. -BBL_USE_EOS = True ! [Boolean] default = True - ! If true, use the equation of state in determining the properties of the bottom - ! boundary layer. Otherwise use the layer target potential densities. The - ! default of this is determined by USE_REGRIDDING. -BBL_THICK_MIN = 0.1 ! [m] default = 0.0 - ! The minimum bottom boundary layer thickness that can be used with - ! BOTTOMDRAGLAW. This might be Kv/(cdrag*drag_bg_vel) to give Kv as the minimum - ! near-bottom viscosity. -HTBL_SHELF_MIN = 0.1 ! [m] default = 0.1 - ! The minimum top boundary layer thickness that can be used with BOTTOMDRAGLAW. - ! This might be Kv/(cdrag*drag_bg_vel) to give Kv as the minimum near-top - ! viscosity. -HTBL_SHELF = 10.0 ! [m] default = 10.0 - ! The thickness over which near-surface velocities are averaged for the drag law - ! under an ice shelf. By default this is the same as HBBL -KV = 1.0E-04 ! [m2 s-1] - ! The background kinematic viscosity in the interior. The molecular value, ~1e-6 - ! m2 s-1, may be used. -KV_BBL_MIN = 1.0E-04 ! [m2 s-1] default = 1.0E-04 - ! The minimum viscosities in the bottom boundary layer. -KV_TBL_MIN = 1.0E-04 ! [m2 s-1] default = 1.0E-04 - ! The minimum viscosities in the top boundary layer. -CORRECT_BBL_BOUNDS = False ! [Boolean] default = False - ! If true, uses the correct bounds on the BBL thickness and viscosity so that - ! the bottom layer feels the intended drag. -SMAG_CONST_CHANNEL = 0.15 ! [nondim] default = 0.15 - ! The nondimensional Laplacian Smagorinsky constant used in calculating the - ! channel drag if it is enabled. The default is to use the same value as - ! SMAG_LAP_CONST if it is defined, or 0.15 if it is not. The value used is also - ! 0.15 if the specified value is negative. - -! === module MOM_thickness_diffuse === -KHTH = 600.0 ! [m2 s-1] default = 0.0 - ! The background horizontal thickness diffusivity. -KHTH_MIN = 0.0 ! [m2 s-1] default = 0.0 - ! The minimum horizontal thickness diffusivity. -KHTH_MAX = 900.0 ! [m2 s-1] default = 0.0 - ! The maximum horizontal thickness diffusivity. -KHTH_MAX_CFL = 0.8 ! [nondimensional] default = 0.8 - ! The maximum value of the local diffusive CFL ratio that is permitted for the - ! thickness diffusivity. 1.0 is the marginally unstable value in a pure layered - ! model, but much smaller numbers (e.g. 0.1) seem to work better for ALE-based - ! models. -DETANGLE_INTERFACES = False ! [Boolean] default = False - ! If defined add 3-d structured enhanced interface height diffusivities to - ! horizontally smooth jagged layers. -KHTH_SLOPE_MAX = 0.01 ! [nondim] default = 0.01 - ! A slope beyond which the calculated isopycnal slope is not reliable and is - ! scaled away. -KHTH_USE_FGNV_STREAMFUNCTION = True ! [Boolean] default = False - ! If true, use the streamfunction formulation of Ferrari et al., 2010, which - ! effectively emphasizes graver vertical modes by smoothing in the vertical. -FGNV_FILTER_SCALE = 1.0 ! [nondim] default = 1.0 - ! A coefficient scaling the vertical smoothing term in the Ferrari et al., 2010, - ! streamfunction formulation. -FGNV_C_MIN = 0.01 ! [m s-1] default = 0.0 - ! A minium wave speed used in the Ferrari et al., 2010, streamfunction - ! formulation. -FGNV_STRAT_FLOOR = 1.0E-15 ! [nondim] default = 1.0E-15 - ! A floor for Brunt-Vasaila frequency in the Ferrari et al., 2010, - ! streamfunction formulation, expressed as a fraction of planetary rotation, - ! OMEGA. This should be tiny but non-zero to avoid degeneracy. -STANLEY_PRM_DET_COEFF = -1.0 ! [nondim] default = -1.0 - ! The coefficient correlating SGS temperature variance with the mean temperature - ! gradient in the deterministic part of the Stanley parameterization. Negative - ! values disable the scheme. -USE_KH_IN_MEKE = False ! [Boolean] default = False - ! If true, uses the thickness diffusivity calculated here to diffuse MEKE. -USE_GME = False ! [Boolean] default = False - ! If true, use the GM+E backscatter scheme in association with the Gent and - ! McWilliams parameterization. -USE_GM_WORK_BUG = False ! [Boolean] default = False - ! If true, compute the top-layer work tendency on the u-grid with the incorrect - ! sign, for legacy reproducibility. - -! === module MOM_dynamics_split_RK2 === -TIDES = True ! [Boolean] default = False - ! If true, apply tidal momentum forcing. -BE = 0.6 ! [nondim] default = 0.6 - ! If SPLIT is true, BE determines the relative weighting of a 2nd-order - ! Runga-Kutta baroclinic time stepping scheme (0.5) and a backward Euler scheme - ! (1) that is used for the Coriolis and inertial terms. BE may be from 0.5 to - ! 1, but instability may occur near 0.5. BE is also applicable if SPLIT is false - ! and USE_RK2 is true. -BEGW = 0.0 ! [nondim] default = 0.0 - ! If SPLIT is true, BEGW is a number from 0 to 1 that controls the extent to - ! which the treatment of gravity waves is forward-backward (0) or simulated - ! backward Euler (1). 0 is almost always used. If SPLIT is false and USE_RK2 is - ! true, BEGW can be between 0 and 0.5 to damp gravity waves. -SPLIT_BOTTOM_STRESS = False ! [Boolean] default = False - ! If true, provide the bottom stress calculated by the vertical viscosity to the - ! barotropic solver. -BT_USE_LAYER_FLUXES = True ! [Boolean] default = True - ! If true, use the summed layered fluxes plus an adjustment due to the change in - ! the barotropic velocity in the barotropic continuity equation. - -! === module MOM_continuity === -CONTINUITY_SCHEME = "PPM" ! default = "PPM" - ! CONTINUITY_SCHEME selects the discretization for the continuity solver. The - ! only valid value currently is: - ! PPM - use a positive-definite (or monotonic) - ! piecewise parabolic reconstruction solver. - -! === module MOM_continuity_PPM === -MONOTONIC_CONTINUITY = False ! [Boolean] default = False - ! If true, CONTINUITY_PPM uses the Colella and Woodward monotonic limiter. The - ! default (false) is to use a simple positive definite limiter. -SIMPLE_2ND_PPM_CONTINUITY = False ! [Boolean] default = False - ! If true, CONTINUITY_PPM uses a simple 2nd order (arithmetic mean) - ! interpolation of the edge values. This may give better PV conservation - ! properties. While it formally reduces the accuracy of the continuity solver - ! itself in the strongly advective limit, it does not reduce the overall order - ! of accuracy of the dynamic core. -UPWIND_1ST_CONTINUITY = False ! [Boolean] default = False - ! If true, CONTINUITY_PPM becomes a 1st-order upwind continuity solver. This - ! scheme is highly diffusive but may be useful for debugging or in single-column - ! mode where its minimal stencil is useful. -ETA_TOLERANCE = 1.0E-06 ! [m] default = 2.5E-09 - ! The tolerance for the differences between the barotropic and baroclinic - ! estimates of the sea surface height due to the fluxes through each face. The - ! total tolerance for SSH is 4 times this value. The default is - ! 0.5*NK*ANGSTROM, and this should not be set less than about - ! 10^-15*MAXIMUM_DEPTH. -ETA_TOLERANCE_AUX = 1.0E-06 ! [m] default = 1.0E-06 - ! The tolerance for free-surface height discrepancies between the barotropic - ! solution and the sum of the layer thicknesses when calculating the auxiliary - ! corrected velocities. By default, this is the same as ETA_TOLERANCE, but can - ! be made larger for efficiency. -VELOCITY_TOLERANCE = 1.0E-04 ! [m s-1] default = 3.0E+08 - ! The tolerance for barotropic velocity discrepancies between the barotropic - ! solution and the sum of the layer thicknesses. -CONT_PPM_AGGRESS_ADJUST = False ! [Boolean] default = False - ! If true, allow the adjusted velocities to have a relative CFL change up to - ! 0.5. -CONT_PPM_VOLUME_BASED_CFL = False ! [Boolean] default = False - ! If true, use the ratio of the open face lengths to the tracer cell areas when - ! estimating CFL numbers. The default is set by CONT_PPM_AGGRESS_ADJUST. -CONTINUITY_CFL_LIMIT = 0.5 ! [nondim] default = 0.5 - ! The maximum CFL of the adjusted velocities. -CONT_PPM_BETTER_ITER = True ! [Boolean] default = True - ! If true, stop corrective iterations using a velocity based criterion and only - ! stop if the iteration is better than all predecessors. -CONT_PPM_USE_VISC_REM_MAX = True ! [Boolean] default = True - ! If true, use more appropriate limiting bounds for corrections in strongly - ! viscous columns. -CONT_PPM_MARGINAL_FACE_AREAS = True ! [Boolean] default = True - ! If true, use the marginal face areas from the continuity solver for use as the - ! weights in the barotropic solver. Otherwise use the transport averaged areas. - -! === module MOM_CoriolisAdv === -NOSLIP = False ! [Boolean] default = False - ! If true, no slip boundary conditions are used; otherwise free slip boundary - ! conditions are assumed. The implementation of the free slip BCs on a C-grid is - ! much cleaner than the no slip BCs. The use of free slip BCs is strongly - ! encouraged, and no slip BCs are not used with the biharmonic viscosity. -CORIOLIS_EN_DIS = False ! [Boolean] default = False - ! If true, two estimates of the thickness fluxes are used to estimate the - ! Coriolis term, and the one that dissipates energy relative to the other one is - ! used. -CORIOLIS_SCHEME = "SADOURNY75_ENERGY" ! default = "SADOURNY75_ENERGY" - ! CORIOLIS_SCHEME selects the discretization for the Coriolis terms. Valid - ! values are: - ! SADOURNY75_ENERGY - Sadourny, 1975; energy cons. - ! ARAKAWA_HSU90 - Arakawa & Hsu, 1990 - ! SADOURNY75_ENSTRO - Sadourny, 1975; enstrophy cons. - ! ARAKAWA_LAMB81 - Arakawa & Lamb, 1981; En. + Enst. - ! ARAKAWA_LAMB_BLEND - A blend of Arakawa & Lamb with - ! Arakawa & Hsu and Sadourny energy -BOUND_CORIOLIS = True ! [Boolean] default = False - ! If true, the Coriolis terms at u-points are bounded by the four estimates of - ! (f+rv)v from the four neighboring v-points, and similarly at v-points. This - ! option would have no effect on the SADOURNY Coriolis scheme if it were - ! possible to use centered difference thickness fluxes. -KE_SCHEME = "KE_ARAKAWA" ! default = "KE_ARAKAWA" - ! KE_SCHEME selects the discretization for acceleration due to the kinetic - ! energy gradient. Valid values are: - ! KE_ARAKAWA, KE_SIMPLE_GUDONOV, KE_GUDONOV -PV_ADV_SCHEME = "PV_ADV_CENTERED" ! default = "PV_ADV_CENTERED" - ! PV_ADV_SCHEME selects the discretization for PV advection. Valid values are: - ! PV_ADV_CENTERED - centered (aka Sadourny, 75) - ! PV_ADV_UPWIND1 - upwind, first order - -! === module MOM_tidal_forcing === -TIDE_M2 = True ! [Boolean] default = False - ! If true, apply tidal momentum forcing at the M2 frequency. This is only used - ! if TIDES is true. -TIDE_S2 = False ! [Boolean] default = False - ! If true, apply tidal momentum forcing at the S2 frequency. This is only used - ! if TIDES is true. -TIDE_N2 = False ! [Boolean] default = False - ! If true, apply tidal momentum forcing at the N2 frequency. This is only used - ! if TIDES is true. -TIDE_K2 = False ! [Boolean] default = False - ! If true, apply tidal momentum forcing at the K2 frequency. This is only used - ! if TIDES is true. -TIDE_K1 = False ! [Boolean] default = False - ! If true, apply tidal momentum forcing at the K1 frequency. This is only used - ! if TIDES is true. -TIDE_O1 = False ! [Boolean] default = False - ! If true, apply tidal momentum forcing at the O1 frequency. This is only used - ! if TIDES is true. -TIDE_P1 = False ! [Boolean] default = False - ! If true, apply tidal momentum forcing at the P1 frequency. This is only used - ! if TIDES is true. -TIDE_Q1 = False ! [Boolean] default = False - ! If true, apply tidal momentum forcing at the Q1 frequency. This is only used - ! if TIDES is true. -TIDE_MF = False ! [Boolean] default = False - ! If true, apply tidal momentum forcing at the MF frequency. This is only used - ! if TIDES is true. -TIDE_MM = False ! [Boolean] default = False - ! If true, apply tidal momentum forcing at the MM frequency. This is only used - ! if TIDES is true. -TIDAL_SAL_FROM_FILE = False ! [Boolean] default = False - ! If true, read the tidal self-attraction and loading from input files, - ! specified by TIDAL_INPUT_FILE. This is only used if TIDES is true. -USE_PREVIOUS_TIDES = False ! [Boolean] default = False - ! If true, use the SAL from the previous iteration of the tides to facilitate - ! convergent iteration. This is only used if TIDES is true. -TIDE_USE_SAL_SCALAR = True ! [Boolean] default = True - ! If true and TIDES is true, use the scalar approximation when calculating - ! self-attraction and loading. -TIDE_SAL_SCALAR_VALUE = 0.094 ! [m m-1] - ! The constant of proportionality between sea surface height (really it should - ! be bottom pressure) anomalies and bottom geopotential anomalies. This is only - ! used if TIDES and TIDE_USE_SAL_SCALAR are true. -TIDE_REF_DATE = 0, 0, 0 ! default = 0 - ! Year,month,day to use as reference date for tidal forcing. If not specified, - ! defaults to 0. -TIDE_USE_EQ_PHASE = False ! [Boolean] default = False - ! Correct phases by calculating equilibrium phase arguments for TIDE_REF_DATE. -TIDE_M2_FREQ = 1.405189E-04 ! [s-1] default = 1.405189E-04 - ! Frequency of the M2 tidal constituent. This is only used if TIDES and TIDE_M2 - ! are true, or if OBC_TIDE_N_CONSTITUENTS > 0 and M2 is in - ! OBC_TIDE_CONSTITUENTS. -TIDE_M2_AMP = 0.242334 ! [m] default = 0.242334 - ! Amplitude of the M2 tidal constituent. This is only used if TIDES and TIDE_M2 - ! are true. -TIDE_M2_PHASE_T0 = 0.0 ! [radians] default = 0.0 - ! Phase of the M2 tidal constituent at time 0. This is only used if TIDES and - ! TIDE_M2 are true. - -! === module MOM_PressureForce === -ANALYTIC_FV_PGF = True ! [Boolean] default = True - ! If true the pressure gradient forces are calculated with a finite volume form - ! that analytically integrates the equations of state in pressure to avoid any - ! possibility of numerical thermobaric instability, as described in Adcroft et - ! al., O. Mod. (2008). - -! === module MOM_PressureForce_FV === -MASS_WEIGHT_IN_PRESSURE_GRADIENT = True ! [Boolean] default = False - ! If true, use mass weighting when interpolating T/S for integrals near the - ! bathymetry in FV pressure gradient calculations. -USE_INACCURATE_PGF_RHO_ANOM = False ! [Boolean] default = False - ! If true, use a form of the PGF that uses the reference density in an - ! inaccurate way. This is not recommended. -RECONSTRUCT_FOR_PRESSURE = True ! [Boolean] default = True - ! If True, use vertical reconstruction of T & S within the integrals of the FV - ! pressure gradient calculation. If False, use the constant-by-layer algorithm. - ! The default is set by USE_REGRIDDING. -PRESSURE_RECONSTRUCTION_SCHEME = 1 ! default = 1 - ! Order of vertical reconstruction of T/S to use in the integrals within the FV - ! pressure gradient calculation. - ! 0: PCM or no reconstruction. - ! 1: PLM reconstruction. - ! 2: PPM reconstruction. -BOUNDARY_EXTRAPOLATION_PRESSURE = True ! [Boolean] default = True - ! If true, the reconstruction of T & S for pressure in boundary cells is - ! extrapolated, rather than using PCM in these cells. If true, the same order - ! polynomial is used as is used for the interior cells. -PGF_STANLEY_T2_DET_COEFF = -1.0 ! [nondim] default = -1.0 - ! The coefficient correlating SGS temperature variance with the mean temperature - ! gradient in the deterministic part of the Stanley form of the Brankart - ! correction. Negative values disable the scheme. - -! === module MOM_hor_visc === -HOR_VISC_2018_ANSWERS = False ! [Boolean] default = False - ! If true, use the order of arithmetic and expressions that recover the answers - ! from the end of 2018. Otherwise, use updated and more robust forms of the - ! same expressions. -LAPLACIAN = True ! [Boolean] default = False - ! If true, use a Laplacian horizontal viscosity. -KH = 0.0 ! [m2 s-1] default = 0.0 - ! The background Laplacian horizontal viscosity. -KH_BG_MIN = 0.0 ! [m2 s-1] default = 0.0 - ! The minimum value allowed for Laplacian horizontal viscosity, KH. -KH_VEL_SCALE = 0.01 ! [m s-1] default = 0.0 - ! The velocity scale which is multiplied by the grid spacing to calculate the - ! Laplacian viscosity. The final viscosity is the largest of this scaled - ! viscosity, the Smagorinsky and Leith viscosities, and KH. -KH_SIN_LAT = 0.0 ! [m2 s-1] default = 0.0 - ! The amplitude of a latitudinally-dependent background viscosity of the form - ! KH_SIN_LAT*(SIN(LAT)**KH_PWR_OF_SINE). -SMAGORINSKY_KH = False ! [Boolean] default = False - ! If true, use a Smagorinsky nonlinear eddy viscosity. -LEITH_KH = False ! [Boolean] default = False - ! If true, use a Leith nonlinear eddy viscosity. -MODIFIED_LEITH = False ! [Boolean] default = False - ! If true, add a term to Leith viscosity which is proportional to the gradient - ! of divergence. -RES_SCALE_MEKE_VISC = False ! [Boolean] default = False - ! If true, the viscosity contribution from MEKE is scaled by the resolution - ! function. -BOUND_KH = True ! [Boolean] default = True - ! If true, the Laplacian coefficient is locally limited to be stable. -BETTER_BOUND_KH = True ! [Boolean] default = True - ! If true, the Laplacian coefficient is locally limited to be stable with a - ! better bounding than just BOUND_KH. -ANISOTROPIC_VISCOSITY = False ! [Boolean] default = False - ! If true, allow anistropic viscosity in the Laplacian horizontal viscosity. -ADD_LES_VISCOSITY = False ! [Boolean] default = False - ! If true, adds the viscosity from Smagorinsky and Leith to the background - ! viscosity instead of taking the maximum. -BIHARMONIC = True ! [Boolean] default = True - ! If true, use a biharmonic horizontal viscosity. BIHARMONIC may be used with - ! LAPLACIAN. -AH = 0.0 ! [m4 s-1] default = 0.0 - ! The background biharmonic horizontal viscosity. -AH_VEL_SCALE = 0.05 ! [m s-1] default = 0.0 - ! The velocity scale which is multiplied by the cube of the grid spacing to - ! calculate the biharmonic viscosity. The final viscosity is the largest of this - ! scaled viscosity, the Smagorinsky and Leith viscosities, and AH. -AH_TIME_SCALE = 0.0 ! [s] default = 0.0 - ! A time scale whose inverse is multiplied by the fourth power of the grid - ! spacing to calculate biharmonic viscosity. The final viscosity is the largest - ! of all viscosity formulations in use. 0.0 means that it's not used. -SMAGORINSKY_AH = True ! [Boolean] default = False - ! If true, use a biharmonic Smagorinsky nonlinear eddy viscosity. -LEITH_AH = False ! [Boolean] default = False - ! If true, use a biharmonic Leith nonlinear eddy viscosity. -BOUND_AH = True ! [Boolean] default = True - ! If true, the biharmonic coefficient is locally limited to be stable. -BETTER_BOUND_AH = True ! [Boolean] default = True - ! If true, the biharmonic coefficient is locally limited to be stable with a - ! better bounding than just BOUND_AH. -RE_AH = 0.0 ! [nondim] default = 0.0 - ! If nonzero, the biharmonic coefficient is scaled so that the biharmonic - ! Reynolds number is equal to this. -SMAG_BI_CONST = 0.06 ! [nondim] default = 0.0 - ! The nondimensional biharmonic Smagorinsky constant, typically 0.015 - 0.06. -BOUND_CORIOLIS_BIHARM = True ! [Boolean] default = True - ! If true use a viscosity that increases with the square of the velocity shears, - ! so that the resulting viscous drag is of comparable magnitude to the Coriolis - ! terms when the velocity differences between adjacent grid points is - ! 0.5*BOUND_CORIOLIS_VEL. The default is the value of BOUND_CORIOLIS (or - ! false). -BOUND_CORIOLIS_VEL = 6.0 ! [m s-1] default = 6.0 - ! The velocity scale at which BOUND_CORIOLIS_BIHARM causes the biharmonic drag - ! to have comparable magnitude to the Coriolis acceleration. The default is set - ! by MAXVEL. -USE_LAND_MASK_FOR_HVISC = True ! [Boolean] default = True - ! If true, use Use the land mask for the computation of thicknesses at velocity - ! locations. This eliminates the dependence on arbitrary values over land or - ! outside of the domain. -HORVISC_BOUND_COEF = 0.8 ! [nondim] default = 0.8 - ! The nondimensional coefficient of the ratio of the viscosity bounds to the - ! theoretical maximum for stability without considering other terms. -USE_KH_BG_2D = False ! [Boolean] default = False - ! If true, read a file containing 2-d background harmonic viscosities. The final - ! viscosity is the maximum of the other terms and this background value. - -! === module MOM_vert_friction === -VERT_FRICTION_2018_ANSWERS = False ! [Boolean] default = False - ! If true, use the order of arithmetic and expressions that recover the answers - ! from the end of 2018. Otherwise, use expressions that do not use an arbitrary - ! hard-coded maximum viscous coupling coefficient between layers. -DIRECT_STRESS = False ! [Boolean] default = False - ! If true, the wind stress is distributed over the topmost HMIX_STRESS of fluid - ! (like in HYCOM), and KVML may be set to a very small value. -HARMONIC_VISC = False ! [Boolean] default = False - ! If true, use the harmonic mean thicknesses for calculating the vertical - ! viscosity. -HARMONIC_BL_SCALE = 0.0 ! [nondim] default = 0.0 - ! A scale to determine when water is in the boundary layers based solely on - ! harmonic mean thicknesses for the purpose of determining the extent to which - ! the thicknesses used in the viscosities are upwinded. -HMIX_FIXED = 0.5 ! [m] - ! The prescribed depth over which the near-surface viscosity and diffusivity are - ! elevated when the bulk mixed layer is not used. -KVML = 1.0E-04 ! [m2 s-1] default = 1.0E-04 - ! The kinematic viscosity in the mixed layer. A typical value is ~1e-2 m2 s-1. - ! KVML is not used if BULKMIXEDLAYER is true. The default is set by KV. -MAXVEL = 6.0 ! [m s-1] default = 3.0E+08 - ! The maximum velocity allowed before the velocity components are truncated. -CFL_BASED_TRUNCATIONS = True ! [Boolean] default = True - ! If true, base truncations on the CFL number, and not an absolute speed. -CFL_TRUNCATE = 0.5 ! [nondim] default = 0.5 - ! The value of the CFL number that will cause velocity components to be - ! truncated; instability can occur past 0.5. -CFL_REPORT = 0.5 ! [nondim] default = 0.5 - ! The value of the CFL number that causes accelerations to be reported; the - ! default is CFL_TRUNCATE. -CFL_TRUNCATE_RAMP_TIME = 7200.0 ! [s] default = 0.0 - ! The time over which the CFL truncation value is ramped up at the beginning of - ! the run. -CFL_TRUNCATE_START = 0.0 ! [nondim] default = 0.0 - ! The start value of the truncation CFL number used when ramping up CFL_TRUNC. -STOKES_MIXING_COMBINED = False ! [Boolean] default = False - ! Flag to use Stokes drift Mixing via the Lagrangian current (Eulerian plus - ! Stokes drift). Still needs work and testing, so not recommended for use. -VEL_UNDERFLOW = 0.0 ! [m s-1] default = 0.0 - ! A negligibly small velocity magnitude below which velocity components are set - ! to 0. A reasonable value might be 1e-30 m/s, which is less than an Angstrom - ! divided by the age of the universe. - -! === module MOM_barotropic === -USE_BT_CONT_TYPE = True ! [Boolean] default = True - ! If true, use a structure with elements that describe effective face areas from - ! the summed continuity solver as a function the barotropic flow in coupling - ! between the barotropic and baroclinic flow. This is only used if SPLIT is - ! true. -INTEGRAL_BT_CONTINUITY = False ! [Boolean] default = False - ! If true, use the time-integrated velocity over the barotropic steps to - ! determine the integrated transports used to update the continuity equation. - ! Otherwise the transports are the sum of the transports based on a series of - ! instantaneous velocities and the BT_CONT_TYPE for transports. This is only - ! valid if USE_BT_CONT_TYPE = True. -BOUND_BT_CORRECTION = True ! [Boolean] default = False - ! If true, the corrective pseudo mass-fluxes into the barotropic solver are - ! limited to values that require less than maxCFL_BT_cont to be accommodated. -BT_CONT_CORR_BOUNDS = True ! [Boolean] default = True - ! If true, and BOUND_BT_CORRECTION is true, use the BT_cont_type variables to - ! set limits determined by MAXCFL_BT_CONT on the CFL number of the velocities - ! that are likely to be driven by the corrective mass fluxes. -ADJUST_BT_CONT = False ! [Boolean] default = False - ! If true, adjust the curve fit to the BT_cont type that is used by the - ! barotropic solver to match the transport about which the flow is being - ! linearized. -GRADUAL_BT_ICS = False ! [Boolean] default = False - ! If true, adjust the initial conditions for the barotropic solver to the values - ! from the layered solution over a whole timestep instead of instantly. This is - ! a decent approximation to the inclusion of sum(u dh_dt) while also correcting - ! for truncation errors. -BT_USE_VISC_REM_U_UH0 = False ! [Boolean] default = False - ! If true, use the viscous remnants when estimating the barotropic velocities - ! that were used to calculate uh0 and vh0. False is probably the better choice. -BT_PROJECT_VELOCITY = True ! [Boolean] default = False - ! If true, step the barotropic velocity first and project out the velocity - ! tendency by 1+BEBT when calculating the transport. The default (false) is to - ! use a predictor continuity step to find the pressure field, and then to do a - ! corrector continuity step using a weighted average of the old and new - ! velocities, with weights of (1-BEBT) and BEBT. -BT_NONLIN_STRESS = False ! [Boolean] default = False - ! If true, use the full depth of the ocean at the start of the barotropic step - ! when calculating the surface stress contribution to the barotropic - ! acclerations. Otherwise use the depth based on bathyT. -DYNAMIC_SURFACE_PRESSURE = False ! [Boolean] default = False - ! If true, add a dynamic pressure due to a viscous ice shelf, for instance. -BT_CORIOLIS_SCALE = 1.0 ! [nondim] default = 1.0 - ! A factor by which the barotropic Coriolis anomaly terms are scaled. -BAROTROPIC_2018_ANSWERS = False ! [Boolean] default = False - ! If true, use expressions for the barotropic solver that recover the answers - ! from the end of 2018. Otherwise, use more efficient or general expressions. -SADOURNY = True ! [Boolean] default = True - ! If true, the Coriolis terms are discretized with the Sadourny (1975) energy - ! conserving scheme, otherwise the Arakawa & Hsu scheme is used. If the - ! internal deformation radius is not resolved, the Sadourny scheme should - ! probably be used. -BT_THICK_SCHEME = "FROM_BT_CONT" ! default = "FROM_BT_CONT" - ! A string describing the scheme that is used to set the open face areas used - ! for barotropic transport and the relative weights of the accelerations. Valid - ! values are: - ! ARITHMETIC - arithmetic mean layer thicknesses - ! HARMONIC - harmonic mean layer thicknesses - ! HYBRID (the default) - use arithmetic means for - ! layers above the shallowest bottom, the harmonic - ! mean for layers below, and a weighted average for - ! layers that straddle that depth - ! FROM_BT_CONT - use the average thicknesses kept - ! in the h_u and h_v fields of the BT_cont_type -BT_STRONG_DRAG = False ! [Boolean] default = False - ! If true, use a stronger estimate of the retarding effects of strong bottom - ! drag, by making it implicit with the barotropic time-step instead of implicit - ! with the baroclinic time-step and dividing by the number of barotropic steps. -BT_LINEAR_WAVE_DRAG = False ! [Boolean] default = False - ! If true, apply a linear drag to the barotropic velocities, using rates set by - ! lin_drag_u & _v divided by the depth of the ocean. This was introduced to - ! facilitate tide modeling. -CLIP_BT_VELOCITY = False ! [Boolean] default = False - ! If true, limit any velocity components that exceed CFL_TRUNCATE. This should - ! only be used as a desperate debugging measure. -MAXCFL_BT_CONT = 0.25 ! [nondim] default = 0.25 - ! The maximum permitted CFL number associated with the barotropic accelerations - ! from the summed velocities times the time-derivatives of thicknesses. -DT_BT_FILTER = -0.25 ! [sec or nondim] default = -0.25 - ! A time-scale over which the barotropic mode solutions are filtered, in seconds - ! if positive, or as a fraction of DT if negative. When used this can never be - ! taken to be longer than 2*dt. Set this to 0 to apply no filtering. -G_BT_EXTRA = 0.0 ! [nondim] default = 0.0 - ! A nondimensional factor by which gtot is enhanced. -SSH_EXTRA = 10.0 ! [m] default = 10.0 - ! An estimate of how much higher SSH might get, for use in calculating the safe - ! external wave speed. The default is the minimum of 10 m or 5% of - ! MAXIMUM_DEPTH. -LINEARIZED_BT_CORIOLIS = True ! [Boolean] default = True - ! If true use the bottom depth instead of the total water column thickness in - ! the barotropic Coriolis term calculations. -BEBT = 0.2 ! [nondim] default = 0.1 - ! BEBT determines whether the barotropic time stepping uses the forward-backward - ! time-stepping scheme or a backward Euler scheme. BEBT is valid in the range - ! from 0 (for a forward-backward treatment of nonrotating gravity waves) to 1 - ! (for a backward Euler treatment). In practice, BEBT must be greater than about - ! 0.05. -DTBT = -0.95 ! [s or nondim] default = -0.98 - ! The barotropic time step, in s. DTBT is only used with the split explicit time - ! stepping. To set the time step automatically based the maximum stable value - ! use 0, or a negative value gives the fraction of the stable value. Setting - ! DTBT to 0 is the same as setting it to -0.98. The value of DTBT that will - ! actually be used is an integer fraction of DT, rounding down. -BT_USE_OLD_CORIOLIS_BRACKET_BUG = False ! [Boolean] default = False - ! If True, use an order of operations that is not bitwise rotationally symmetric - ! in the meridional Coriolis term of the barotropic solver. - -! === module MOM_mixed_layer_restrat === -MIXEDLAYER_RESTRAT = False ! [Boolean] default = False - ! If true, a density-gradient dependent re-stratifying flow is imposed in the - ! mixed layer. Can be used in ALE mode without restriction but in layer mode can - ! only be used if BULKMIXEDLAYER is true. - -! === module MOM_diagnostics === -DIAG_EBT_MONO_N2_COLUMN_FRACTION = 0.0 ! [nondim] default = 0.0 - ! The lower fraction of water column over which N2 is limited as monotonic for - ! the purposes of calculating the equivalent barotropic wave speed. -DIAG_EBT_MONO_N2_DEPTH = -1.0 ! [m] default = -1.0 - ! The depth below which N2 is limited as monotonic for the purposes of - ! calculating the equivalent barotropic wave speed. - -! === module MOM_diabatic_driver === -! The following parameters are used for diabatic processes. -USE_LEGACY_DIABATIC_DRIVER = False ! [Boolean] default = True - ! If true, use a legacy version of the diabatic subroutine. This is temporary - ! and is needed to avoid change in answers. -ENERGETICS_SFC_PBL = True ! [Boolean] default = False - ! If true, use an implied energetics planetary boundary layer scheme to - ! determine the diffusivity and viscosity in the surface boundary layer. -EPBL_IS_ADDITIVE = True ! [Boolean] default = True - ! If true, the diffusivity from ePBL is added to all other diffusivities. - ! Otherwise, the larger of kappa-shear and ePBL diffusivities are used. -PRANDTL_EPBL = 1.0 ! [nondim] default = 1.0 - ! The Prandtl number used by ePBL to convert vertical diffusivities into - ! viscosities. -INTERNAL_TIDES = False ! [Boolean] default = False - ! If true, use the code that advances a separate set of equations for the - ! internal tide energy density. -MASSLESS_MATCH_TARGETS = True ! [Boolean] default = True - ! If true, the temperature and salinity of massless layers are kept consistent - ! with their target densities. Otherwise the properties of massless layers - ! evolve diffusively to match massive neighboring layers. -AGGREGATE_FW_FORCING = True ! [Boolean] default = True - ! If true, the net incoming and outgoing fresh water fluxes are combined and - ! applied as either incoming or outgoing depending on the sign of the net. If - ! false, the net incoming fresh water flux is added to the model and thereafter - ! the net outgoing is removed from the topmost non-vanished layers of the - ! updated state. -MIX_BOUNDARY_TRACERS = True ! [Boolean] default = True - ! If true, mix the passive tracers in massless layers at the bottom into the - ! interior as though a diffusivity of KD_MIN_TR were operating. -MIX_BOUNDARY_TRACER_ALE = False ! [Boolean] default = False - ! If true and in ALE mode, mix the passive tracers in massless layers at the - ! bottom into the interior as though a diffusivity of KD_MIN_TR were operating. -KD_MIN_TR = 2.0E-06 ! [m2 s-1] default = 2.0E-06 - ! A minimal diffusivity that should always be applied to tracers, especially in - ! massless layers near the bottom. The default is 0.1*KD. -KD_BBL_TR = 0.0 ! [m2 s-1] default = 0.0 - ! A bottom boundary layer tracer diffusivity that will allow for explicitly - ! specified bottom fluxes. The entrainment at the bottom is at least - ! sqrt(Kd_BBL_tr*dt) over the same distance. -TRACER_TRIDIAG = False ! [Boolean] default = False - ! If true, use the passive tracer tridiagonal solver for T and S -MINIMUM_FORCING_DEPTH = 0.001 ! [m] default = 0.001 - ! The smallest depth over which forcing can be applied. This only takes effect - ! when near-surface layers become thin relative to this scale, in which case the - ! forcing tendencies scaled down by distributing the forcing over this depth - ! scale. -EVAP_CFL_LIMIT = 0.8 ! [nondim] default = 0.8 - ! The largest fraction of a layer than can be lost to forcing (e.g. evaporation, - ! sea-ice formation) in one time-step. The unused mass loss is passed down - ! through the column. -MLD_EN_VALS = 3*0.0 ! [J/m2] default = 0.0 - ! The energy values used to compute MLDs. If not set (or all set to 0.), the - ! default will overwrite to 25., 2500., 250000. -DIAG_MLD_DENSITY_DIFF = 0.1 ! [kg/m3] default = 0.1 - ! The density difference used to determine a diagnostic mixed layer depth, - ! MLD_user, following the definition of Levitus 1982. The MLD is the depth at - ! which the density is larger than the surface density by the specified amount. -DIAG_DEPTH_SUBML_N2 = 50.0 ! [m] default = 50.0 - ! The distance over which to calculate a diagnostic of the stratification at the - ! base of the mixed layer. - -! === module MOM_CVMix_KPP === -! This is the MOM wrapper to CVMix:KPP -! See http://cvmix.github.io/ -USE_KPP = False ! [Boolean] default = False - ! If true, turns on the [CVMix] KPP scheme of Large et al., 1994, to calculate - ! diffusivities and non-local transport in the OBL. - -! === module MOM_CVMix_conv === -! Parameterization of enhanced mixing due to convection via CVMix -USE_CVMix_CONVECTION = False ! [Boolean] default = False - ! If true, turns on the enhanced mixing due to convection via CVMix. This scheme - ! increases diapycnal diffs./viscs. at statically unstable interfaces. Relevant - ! parameters are contained in the CVMix_CONVECTION% parameter block. - -! === module MOM_set_diffusivity === -FLUX_RI_MAX = 0.2 ! [nondim] default = 0.2 - ! The flux Richardson number where the stratification is large enough that N2 > - ! omega2. The full expression for the Flux Richardson number is usually - ! FLUX_RI_MAX*N2/(N2+OMEGA2). -SET_DIFF_2018_ANSWERS = False ! [Boolean] default = False - ! If true, use the order of arithmetic and expressions that recover the answers - ! from the end of 2018. Otherwise, use updated and more robust forms of the - ! same expressions. - -! === module MOM_tidal_mixing === -! Vertical Tidal Mixing Parameterization -USE_CVMix_TIDAL = False ! [Boolean] default = False - ! If true, turns on tidal mixing via CVMix -INT_TIDE_DISSIPATION = False ! [Boolean] default = False - ! If true, use an internal tidal dissipation scheme to drive diapycnal mixing, - ! along the lines of St. Laurent et al. (2002) and Simmons et al. (2004). -ML_RADIATION = False ! [Boolean] default = False - ! If true, allow a fraction of TKE available from wind work to penetrate below - ! the base of the mixed layer with a vertical decay scale determined by the - ! minimum of: (1) The depth of the mixed layer, (2) an Ekman length scale. -BBL_EFFIC = 0.2 ! [nondim] default = 0.2 - ! The efficiency with which the energy extracted by bottom drag drives BBL - ! diffusion. This is only used if BOTTOMDRAGLAW is true. -BBL_MIXING_MAX_DECAY = 200.0 ! [m] default = 200.0 - ! The maximum decay scale for the BBL diffusion, or 0 to allow the mixing to - ! penetrate as far as stratification and rotation permit. The default for now - ! is 200 m. This is only used if BOTTOMDRAGLAW is true. -BBL_MIXING_AS_MAX = False ! [Boolean] default = True - ! If true, take the maximum of the diffusivity from the BBL mixing and the other - ! diffusivities. Otherwise, diffusivity from the BBL_mixing is simply added. -USE_LOTW_BBL_DIFFUSIVITY = True ! [Boolean] default = False - ! If true, uses a simple, imprecise but non-coordinate dependent, model of BBL - ! mixing diffusivity based on Law of the Wall. Otherwise, uses the original BBL - ! scheme. -LOTW_BBL_USE_OMEGA = True ! [Boolean] default = True - ! If true, use the maximum of Omega and N for the TKE to diffusion calculation. - ! Otherwise, N is N. -SIMPLE_TKE_TO_KD = True ! [Boolean] default = False - ! If true, uses a simple estimate of Kd/TKE that will work for arbitrary - ! vertical coordinates. If false, calculates Kd/TKE and bounds based on exact - ! energetics for an isopycnal layer-formulation. - -! === module MOM_bkgnd_mixing === -! Adding static vertical background mixing coefficients -KD = 2.0E-05 ! [m2 s-1] default = 0.0 - ! The background diapycnal diffusivity of density in the interior. Zero or the - ! molecular value, ~1e-7 m2 s-1, may be used. -KD_MIN = 2.0E-06 ! [m2 s-1] default = 2.0E-07 - ! The minimum diapycnal diffusivity. -KDML = 2.0E-05 ! [m2 s-1] default = 2.0E-05 - ! If BULKMIXEDLAYER is false, KDML is the elevated diapycnal diffusivity in the - ! topmost HMIX of fluid. KDML is only used if BULKMIXEDLAYER is false. -BRYAN_LEWIS_DIFFUSIVITY = False ! [Boolean] default = False - ! If true, use a Bryan & Lewis (JGR 1979) like tanh profile of background - ! diapycnal diffusivity with depth. This is done via CVMix. -HORIZ_VARYING_BACKGROUND = False ! [Boolean] default = False - ! If true, apply vertically uniform, latitude-dependent background diffusivity, - ! as described in Danabasoglu et al., 2012 -PRANDTL_BKGND = 1.0 ! [nondim] default = 1.0 - ! Turbulent Prandtl number used to convert vertical background diffusivities - ! into viscosities. -HENYEY_IGW_BACKGROUND = True ! [Boolean] default = False - ! If true, use a latitude-dependent scaling for the near surface background - ! diffusivity, as described in Harrison & Hallberg, JPO 2008. -HENYEY_IGW_BACKGROUND_NEW = False ! [Boolean] default = False - ! If true, use a better latitude-dependent scaling for the background - ! diffusivity, as described in Harrison & Hallberg, JPO 2008. -HENYEY_N0_2OMEGA = 20.0 ! [nondim] default = 20.0 - ! The ratio of the typical Buoyancy frequency to twice the Earth's rotation - ! period, used with the Henyey scaling from the mixing. -KD_TANH_LAT_FN = False ! [Boolean] default = False - ! If true, use a tanh dependence of Kd_sfc on latitude, like CM2.1/CM2M. There - ! is no physical justification for this form, and it can not be used with - ! HENYEY_IGW_BACKGROUND. -KD_MAX = 0.1 ! [m2 s-1] default = -1.0 - ! The maximum permitted increment for the diapycnal diffusivity from TKE-based - ! parameterizations, or a negative value for no limit. -KD_ADD = 0.0 ! [m2 s-1] default = 0.0 - ! A uniform diapycnal diffusivity that is added everywhere without any filtering - ! or scaling. -USER_CHANGE_DIFFUSIVITY = False ! [Boolean] default = False - ! If true, call user-defined code to change the diffusivity. -DISSIPATION_MIN = 0.0 ! [W m-3] default = 0.0 - ! The minimum dissipation by which to determine a lower bound of Kd (a floor). -DISSIPATION_N0 = 0.0 ! [W m-3] default = 0.0 - ! The intercept when N=0 of the N-dependent expression used to set a minimum - ! dissipation by which to determine a lower bound of Kd (a floor): A in eps_min - ! = A + B*N. -DISSIPATION_N1 = 0.0 ! [J m-3] default = 0.0 - ! The coefficient multiplying N, following Gargett, used to set a minimum - ! dissipation by which to determine a lower bound of Kd (a floor): B in eps_min - ! = A + B*N -DISSIPATION_KD_MIN = 0.0 ! [m2 s-1] default = 0.0 - ! The minimum vertical diffusivity applied as a floor. -DOUBLE_DIFFUSION = False ! [Boolean] default = False - ! If true, increase diffusivites for temperature or salinity based on the - ! double-diffusive parameterization described in Large et al. (1994). - -! === module MOM_kappa_shear === -! Parameterization of shear-driven turbulence following Jackson, Hallberg and Legg, JPO 2008 -USE_JACKSON_PARAM = True ! [Boolean] default = False - ! If true, use the Jackson-Hallberg-Legg (JPO 2008) shear mixing - ! parameterization. -VERTEX_SHEAR = False ! [Boolean] default = False - ! If true, do the calculations of the shear-driven mixing at the cell vertices - ! (i.e., the vorticity points). -RINO_CRIT = 0.25 ! [nondim] default = 0.25 - ! The critical Richardson number for shear mixing. -SHEARMIX_RATE = 0.089 ! [nondim] default = 0.089 - ! A nondimensional rate scale for shear-driven entrainment. Jackson et al find - ! values in the range of 0.085-0.089. -MAX_RINO_IT = 25 ! [nondim] default = 50 - ! The maximum number of iterations that may be used to estimate the Richardson - ! number driven mixing. -KD_KAPPA_SHEAR_0 = 2.0E-05 ! [m2 s-1] default = 2.0E-05 - ! The background diffusivity that is used to smooth the density and shear - ! profiles before solving for the diffusivities. The default is the greater of - ! KD and 1e-7 m2 s-1. -KD_TRUNC_KAPPA_SHEAR = 2.0E-07 ! [m2 s-1] default = 2.0E-07 - ! The value of shear-driven diffusivity that is considered negligible and is - ! rounded down to 0. The default is 1% of KD_KAPPA_SHEAR_0. -FRI_CURVATURE = -0.97 ! [nondim] default = -0.97 - ! The nondimensional curvature of the function of the Richardson number in the - ! kappa source term in the Jackson et al. scheme. -TKE_N_DECAY_CONST = 0.24 ! [nondim] default = 0.24 - ! The coefficient for the decay of TKE due to stratification (i.e. proportional - ! to N*tke). The values found by Jackson et al. are 0.24-0.28. -TKE_SHEAR_DECAY_CONST = 0.14 ! [nondim] default = 0.14 - ! The coefficient for the decay of TKE due to shear (i.e. proportional to - ! |S|*tke). The values found by Jackson et al. are 0.14-0.12. -KAPPA_BUOY_SCALE_COEF = 0.82 ! [nondim] default = 0.82 - ! The coefficient for the buoyancy length scale in the kappa equation. The - ! values found by Jackson et al. are in the range of 0.81-0.86. -KAPPA_N_OVER_S_SCALE_COEF2 = 0.0 ! [nondim] default = 0.0 - ! The square of the ratio of the coefficients of the buoyancy and shear scales - ! in the diffusivity equation, Set this to 0 (the default) to eliminate the - ! shear scale. This is only used if USE_JACKSON_PARAM is true. -KAPPA_SHEAR_TOL_ERR = 0.1 ! [nondim] default = 0.1 - ! The fractional error in kappa that is tolerated. Iteration stops when changes - ! between subsequent iterations are smaller than this everywhere in a column. - ! The peak diffusivities usually converge most rapidly, and have much smaller - ! errors than this. -TKE_BACKGROUND = 0.0 ! [m2 s-2] default = 0.0 - ! A background level of TKE used in the first iteration of the kappa equation. - ! TKE_BACKGROUND could be 0. -KAPPA_SHEAR_ELIM_MASSLESS = True ! [Boolean] default = True - ! If true, massless layers are merged with neighboring massive layers in this - ! calculation. The default is true and I can think of no good reason why it - ! should be false. This is only used if USE_JACKSON_PARAM is true. -MAX_KAPPA_SHEAR_IT = 13 ! [nondim] default = 13 - ! The maximum number of iterations that may be used to estimate the - ! time-averaged diffusivity. -KAPPA_SHEAR_MAX_KAP_SRC_CHG = 10.0 ! [nondim] default = 10.0 - ! The maximum permitted increase in the kappa source within an iteration - ! relative to the local source; this must be greater than 1. The lower limit - ! for the permitted fractional decrease is (1 - 0.5/kappa_src_max_chg). These - ! limits could perhaps be made dynamic with an improved iterative solver. -KAPPA_SHEAR_ITER_BUG = False ! [Boolean] default = False - ! If true, use an older, dimensionally inconsistent estimate of the derivative - ! of diffusivity with energy in the Newton's method iteration. The bug causes - ! undercorrections when dz > 1 m. -KAPPA_SHEAR_ALL_LAYER_TKE_BUG = False ! [Boolean] default = False - ! If true, report back the latest estimate of TKE instead of the time average - ! TKE when there is mass in all layers. Otherwise always report the time - ! averaged TKE, as is currently done when there are some massless layers. -USE_RESTRICTIVE_TOLERANCE_CHECK = False ! [Boolean] default = False - ! If true, uses the more restrictive tolerance check to determine if a timestep - ! is acceptable for the KS_it outer iteration loop. False uses the original - ! less restrictive check. - -! === module MOM_CVMix_shear === -! Parameterization of shear-driven turbulence via CVMix (various options) -USE_LMD94 = False ! [Boolean] default = False - ! If true, use the Large-McWilliams-Doney (JGR 1994) shear mixing - ! parameterization. -USE_PP81 = False ! [Boolean] default = False - ! If true, use the Pacanowski and Philander (JPO 1981) shear mixing - ! parameterization. - -! === module MOM_CVMix_ddiff === -! Parameterization of mixing due to double diffusion processes via CVMix -USE_CVMIX_DDIFF = False ! [Boolean] default = False - ! If true, turns on double diffusive processes via CVMix. Note that double - ! diffusive processes on viscosity are ignored in CVMix, see - ! http://cvmix.github.io/ for justification. - -! === module MOM_diabatic_aux === -! The following parameters are used for auxiliary diabatic processes. -RECLAIM_FRAZIL = True ! [Boolean] default = True - ! If true, try to use any frazil heat deficit to cool any overlying layers down - ! to the freezing point, thereby avoiding the creation of thin ice when the SST - ! is above the freezing point. -PRESSURE_DEPENDENT_FRAZIL = False ! [Boolean] default = False - ! If true, use a pressure dependent freezing temperature when making frazil. The - ! default is false, which will be faster but is inappropriate with ice-shelf - ! cavities. -IGNORE_FLUXES_OVER_LAND = False ! [Boolean] default = False - ! If true, the model does not check if fluxes are being applied over land - ! points. This is needed when the ocean is coupled with ice shelves and sea ice, - ! since the sea ice mask needs to be different than the ocean mask to avoid sea - ! ice formation under ice shelves. This flag only works when use_ePBL = True. -DO_RIVERMIX = False ! [Boolean] default = False - ! If true, apply additional mixing wherever there is runoff, so that it is mixed - ! down to RIVERMIX_DEPTH if the ocean is that deep. -USE_RIVER_HEAT_CONTENT = False ! [Boolean] default = False - ! If true, use the fluxes%runoff_Hflx field to set the heat carried by runoff, - ! instead of using SST*CP*liq_runoff. -USE_CALVING_HEAT_CONTENT = False ! [Boolean] default = False - ! If true, use the fluxes%calving_Hflx field to set the heat carried by runoff, - ! instead of using SST*CP*froz_runoff. -VAR_PEN_SW = True ! [Boolean] default = False - ! If true, use one of the CHL_A schemes specified by OPACITY_SCHEME to determine - ! the e-folding depth of incoming short wave radiation. -CHL_FROM_FILE = True ! [Boolean] default = True - ! If true, chl_a is read from a file. -CHL_FILE = "seawifs_1998-2006_GOLD_smoothed_2X_5deg.nc" ! - ! CHL_FILE is the file containing chl_a concentrations in the variable CHL_A. It - ! is used when VAR_PEN_SW and CHL_FROM_FILE are true. -CHL_VARNAME = "CHL_A" ! default = "CHL_A" - ! Name of CHL_A variable in CHL_FILE. - -! === module MOM_energetic_PBL === -ML_OMEGA_FRAC = 0.0 ! [nondim] default = 0.0 - ! When setting the decay scale for turbulence, use this fraction of the absolute - ! rotation rate blended with the local value of f, as sqrt((1-of)*f^2 + - ! of*4*omega^2). -EKMAN_SCALE_COEF = 1.0 ! [nondim] default = 1.0 - ! A nondimensional scaling factor controlling the inhibition of the diffusive - ! length scale by rotation. Making this larger decreases the PBL diffusivity. -EPBL_2018_ANSWERS = False ! [Boolean] default = False - ! If true, use the order of arithmetic and expressions that recover the answers - ! from the end of 2018. Otherwise, use updated and more robust forms of the - ! same expressions. -EPBL_ORIGINAL_PE_CALC = True ! [Boolean] default = True - ! If true, the ePBL code uses the original form of the potential energy change - ! code. Otherwise, the newer version that can work with successive increments - ! to the diffusivity in upward or downward passes is used. -MKE_TO_TKE_EFFIC = 0.0 ! [nondim] default = 0.0 - ! The efficiency with which mean kinetic energy released by mechanically forced - ! entrainment of the mixed layer is converted to turbulent kinetic energy. -TKE_DECAY = 2.5 ! [nondim] default = 2.5 - ! TKE_DECAY relates the vertical rate of decay of the TKE available for - ! mechanical entrainment to the natural Ekman depth. -EPBL_MSTAR_SCHEME = "CONSTANT" ! default = "CONSTANT" - ! EPBL_MSTAR_SCHEME selects the method for setting mstar. Valid values are: - ! CONSTANT - Use a fixed mstar given by MSTAR - ! OM4 - Use L_Ekman/L_Obukhov in the sabilizing limit, as in OM4 - ! REICHL_H18 - Use the scheme documented in Reichl & Hallberg, 2018. -MSTAR = 1.2 ! [nondim] default = 1.2 - ! The ratio of the friction velocity cubed to the TKE input to the mixed layer. - ! This option is used if EPBL_MSTAR_SCHEME = CONSTANT. -NSTAR = 0.2 ! [nondim] default = 0.2 - ! The portion of the buoyant potential energy imparted by surface fluxes that is - ! available to drive entrainment at the base of mixed layer when that energy is - ! positive. -MSTAR_CONV_ADJ = 0.0 ! [nondim] default = 0.0 - ! Coefficient used for reducing mstar during convection due to reduction of - ! stable density gradient. -USE_MLD_ITERATION = False ! [Boolean] default = True - ! A logical that specifies whether or not to use the distance to the bottom of - ! the actively turbulent boundary layer to help set the EPBL length scale. -EPBL_TRANSITION_SCALE = 0.1 ! [nondim] default = 0.1 - ! A scale for the mixing length in the transition layer at the edge of the - ! boundary layer as a fraction of the boundary layer thickness. -EPBL_MIN_MIX_LEN = 0.0 ! [meter] default = 0.0 - ! The minimum mixing length scale that will be used by ePBL. The default (0) - ! does not set a minimum. -MIX_LEN_EXPONENT = 2.0 ! [nondim] default = 2.0 - ! The exponent applied to the ratio of the distance to the MLD and the MLD depth - ! which determines the shape of the mixing length. This is only used if - ! USE_MLD_ITERATION is True. -EPBL_VEL_SCALE_SCHEME = "CUBE_ROOT_TKE" ! default = "CUBE_ROOT_TKE" - ! Selects the method for translating TKE into turbulent velocities. Valid values - ! are: - ! CUBE_ROOT_TKE - A constant times the cube root of remaining TKE. - ! REICHL_H18 - Use the scheme based on a combination of w* and v* as - ! documented in Reichl & Hallberg, 2018. -WSTAR_USTAR_COEF = 1.0 ! [nondim] default = 1.0 - ! A ratio relating the efficiency with which convectively released energy is - ! converted to a turbulent velocity, relative to mechanically forced TKE. Making - ! this larger increases the BL diffusivity -EPBL_VEL_SCALE_FACTOR = 1.0 ! [nondim] default = 1.0 - ! An overall nondimensional scaling factor for wT. Making this larger increases - ! the PBL diffusivity. -VSTAR_SURF_FAC = 1.2 ! [nondim] default = 1.2 - ! The proportionality times ustar to set vstar at the surface. -USE_LA_LI2016 = False ! [nondim] default = False - ! A logical to use the Li et al. 2016 (submitted) formula to determine the - ! Langmuir number. -EPBL_LT = False ! [nondim] default = False - ! A logical to use a LT parameterization. -!EPBL_USTAR_MIN = 1.45842E-18 ! [m s-1] - ! The (tiny) minimum friction velocity used within the ePBL code, derived from - ! OMEGA and ANGSTROM. - -! === module MOM_regularize_layers === -REGULARIZE_SURFACE_LAYERS = False ! [Boolean] default = False - ! If defined, vertically restructure the near-surface layers when they have too - ! much lateral variations to allow for sensible lateral barotropic transports. - -! === module MOM_opacity === -OPACITY_SCHEME = "MANIZZA_05" ! default = "MANIZZA_05" - ! This character string specifies how chlorophyll concentrations are translated - ! into opacities. Currently valid options include: - ! MANIZZA_05 - Use Manizza et al., GRL, 2005. - ! MOREL_88 - Use Morel, JGR, 1988. -BLUE_FRAC_SW = 0.5 ! [nondim] default = 0.5 - ! The fraction of the penetrating shortwave radiation that is in the blue band. -PEN_SW_NBANDS = 3 ! default = 1 - ! The number of bands of penetrating shortwave radiation. -OPTICS_2018_ANSWERS = False ! [Boolean] default = False - ! If true, use the order of arithmetic and expressions that recover the answers - ! from the end of 2018. Otherwise, use updated expressions for handling the - ! absorption of small remaining shortwave fluxes. -PEN_SW_FLUX_ABSORB = 2.5E-11 ! [degC m s-1] default = 2.5E-11 - ! A minimum remaining shortwave heating rate that will be simply absorbed in the - ! next sufficiently thick layers for computational efficiency, instead of - ! continuing to penetrate. The default, 2.5e-11 degC m s-1, is about 1e-4 W m-2 - ! or 0.08 degC m century-1, but 0 is also a valid value. -PEN_SW_ABSORB_MINTHICK = 1.0 ! [m] default = 1.0 - ! A thickness that is used to absorb the remaining penetrating shortwave heat - ! flux when it drops below PEN_SW_FLUX_ABSORB. -OPACITY_LAND_VALUE = 10.0 ! [m-1] default = 10.0 - ! The value to use for opacity over land. The default is 10 m-1 - a value for - ! muddy water. - -! === module MOM_tracer_advect === -TRACER_ADVECTION_SCHEME = "PPM:H3" ! default = "PLM" - ! The horizontal transport scheme for tracers: - ! PLM - Piecewise Linear Method - ! PPM:H3 - Piecewise Parabolic Method (Huyhn 3rd order) - ! PPM - Piecewise Parabolic Method (Colella-Woodward) - -! === module MOM_tracer_hor_diff === -KHTR = 600.0 ! [m2 s-1] default = 0.0 - ! The background along-isopycnal tracer diffusivity. -KHTR_MIN = 50.0 ! [m2 s-1] default = 0.0 - ! The minimum along-isopycnal tracer diffusivity. -KHTR_MAX = 900.0 ! [m2 s-1] default = 0.0 - ! The maximum along-isopycnal tracer diffusivity. -KHTR_PASSIVITY_COEFF = 0.0 ! [nondim] default = 0.0 - ! The coefficient that scales deformation radius over grid-spacing in passivity, - ! where passivity is the ratio between along isopycnal mixing of tracers to - ! thickness mixing. A non-zero value enables this parameterization. -KHTR_PASSIVITY_MIN = 0.5 ! [nondim] default = 0.5 - ! The minimum passivity which is the ratio between along isopycnal mixing of - ! tracers to thickness mixing. -DIFFUSE_ML_TO_INTERIOR = False ! [Boolean] default = False - ! If true, enable epipycnal mixing between the surface boundary layer and the - ! interior. -CHECK_DIFFUSIVE_CFL = False ! [Boolean] default = False - ! If true, use enough iterations the diffusion to ensure that the diffusive - ! equivalent of the CFL limit is not violated. If false, always use the greater - ! of 1 or MAX_TR_DIFFUSION_CFL iteration. -MAX_TR_DIFFUSION_CFL = -1.0 ! [nondim] default = -1.0 - ! If positive, locally limit the along-isopycnal tracer diffusivity to keep the - ! diffusive CFL locally at or below this value. The number of diffusive - ! iterations is often this value or the next greater integer. -RECALC_NEUTRAL_SURF = False ! [Boolean] default = False - ! If true, then recalculate the neutral surfaces if the - ! diffusive CFL is exceeded. If false, assume that the - ! positions of the surfaces do not change - -! === module MOM_neutral_diffusion === -! This module implements neutral diffusion of tracers -USE_NEUTRAL_DIFFUSION = True ! [Boolean] default = False - ! If true, enables the neutral diffusion module. -NDIFF_CONTINUOUS = True ! [Boolean] default = True - ! If true, uses a continuous reconstruction of T and S when finding neutral - ! surfaces along which diffusion will happen. If false, a PPM discontinuous - ! reconstruction of T and S is done which results in a higher order routine but - ! exacts a higher computational cost. -NDIFF_REF_PRES = -1.0 ! [Pa] default = -1.0 - ! The reference pressure (Pa) used for the derivatives of the equation of state. - ! If negative (default), local pressure is used. -NDIFF_INTERIOR_ONLY = False ! [Boolean] default = False - ! If true, only applies neutral diffusion in the ocean interior.That is, the - ! algorithm will exclude the surface and bottomboundary layers. -NDIFF_USE_UNMASKED_TRANSPORT_BUG = False ! [Boolean] default = False - ! If true, use an older form for the accumulation of neutral-diffusion - ! transports that were unmasked, as used prior to Jan 2018. This is not - ! recommended. - -! === module MOM_lateral_boundary_diffusion === -! This module implements lateral diffusion of tracers near boundaries -USE_LATERAL_BOUNDARY_DIFFUSION = False ! [Boolean] default = False - ! If true, enables the lateral boundary tracer's diffusion module. -OBSOLETE_DIAGNOSTIC_IS_FATAL = True ! [Boolean] default = True - ! If an obsolete diagnostic variable appears in the diag_table, cause a FATAL - ! error rather than issue a WARNING. - -! === module MOM_sum_output === -CALCULATE_APE = True ! [Boolean] default = True - ! If true, calculate the available potential energy of the interfaces. Setting - ! this to false reduces the memory footprint of high-PE-count models - ! dramatically. -WRITE_STOCKS = True ! [Boolean] default = True - ! If true, write the integrated tracer amounts to stdout when the energy files - ! are written. -MAXTRUNC = 5000 ! [truncations save_interval-1] default = 0 - ! The run will be stopped, and the day set to a very large value if the velocity - ! is truncated more than MAXTRUNC times between energy saves. Set MAXTRUNC to 0 - ! to stop if there is any truncation of velocities. -MAX_ENERGY = 0.0 ! [m2 s-2] default = 0.0 - ! The maximum permitted average energy per unit mass; the model will be stopped - ! if there is more energy than this. If zero or negative, this is set to - ! 10*MAXVEL^2. -ENERGYFILE = "ocean.stats" ! default = "ocean.stats" - ! The file to use to write the energies and globally summed diagnostics. -DATE_STAMPED_STDOUT = True ! [Boolean] default = True - ! If true, use dates (not times) in messages to stdout -TIMEUNIT = 8.64E+04 ! [s] default = 8.64E+04 - ! The time unit in seconds a number of input fields -READ_DEPTH_LIST = False ! [Boolean] default = False - ! Read the depth list from a file if it exists or create that file otherwise. -DEPTH_LIST_MIN_INC = 1.0E-10 ! [m] default = 1.0E-10 - ! The minimum increment between the depths of the entries in the depth-list - ! file. -ENERGYSAVEDAYS = 0.5 ! [days] default = 1.0 - ! The interval in units of TIMEUNIT between saves of the energies of the run and - ! other globally summed diagnostics. -ENERGYSAVEDAYS_GEOMETRIC = 0.0 ! [days] default = 0.0 - ! The starting interval in units of TIMEUNIT for the first call to save the - ! energies of the run and other globally summed diagnostics. The interval - ! increases by a factor of 2. after each call to write_energy. - -! === module ocean_model_init === -SINGLE_STEPPING_CALL = True ! [Boolean] default = True - ! If true, advance the state of MOM with a single step including both dynamics - ! and thermodynamics. If false, the two phases are advanced with separate - ! calls. -RESTART_CONTROL = 3 ! default = 1 - ! An integer whose bits encode which restart files are written. Add 2 (bit 1) - ! for a time-stamped file, and odd (bit 0) for a non-time-stamped file. A - ! restart file will be saved at the end of the run segment for any non-negative - ! value. -OCEAN_SURFACE_STAGGER = "C" ! default = "C" - ! A case-insensitive character string to indicate the staggering of the surface - ! velocity field that is returned to the coupler. Valid values include 'A', - ! 'B', or 'C'. -ICE_SHELF = False ! [Boolean] default = False - ! If true, enables the ice shelf model. -ICEBERGS_APPLY_RIGID_BOUNDARY = False ! [Boolean] default = False - ! If true, allows icebergs to change boundary condition felt by ocean - -! === module MOM_surface_forcing === -LATENT_HEAT_FUSION = 3.337E+05 ! [J/kg] default = 3.337E+05 - ! The latent heat of fusion. -LATENT_HEAT_VAPORIZATION = 2.4665E+06 ! [J/kg] default = 2.4665E+06 - ! The latent heat of fusion. -MAX_P_SURF = -1.0 ! [Pa] default = -1.0 - ! The maximum surface pressure that can be exerted by the atmosphere and - ! floating sea-ice or ice shelves. This is needed because the FMS coupling - ! structure does not limit the water that can be frozen out of the ocean and the - ! ice-ocean heat fluxes are treated explicitly. No limit is applied if a - ! negative value is used. -RESTORE_SALINITY = False ! [Boolean] default = False - ! If true, the coupled driver will add a globally-balanced fresh-water flux that - ! drives sea-surface salinity toward specified values. -RESTORE_TEMPERATURE = False ! [Boolean] default = False - ! If true, the coupled driver will add a heat flux that drives sea-surface - ! temperature toward specified values. -ADJUST_NET_SRESTORE_TO_ZERO = False ! [Boolean] default = False - ! If true, adjusts the salinity restoring seen to zero whether restoring is via - ! a salt flux or virtual precip. -ADJUST_NET_SRESTORE_BY_SCALING = False ! [Boolean] default = False - ! If true, adjustments to salt restoring to achieve zero net are made by scaling - ! values without moving the zero contour. -ADJUST_NET_FRESH_WATER_TO_ZERO = False ! [Boolean] default = False - ! If true, adjusts the net fresh-water forcing seen by the ocean (including - ! restoring) to zero. -ADJUST_NET_FRESH_WATER_BY_SCALING = False ! [Boolean] default = False - ! If true, adjustments to net fresh water to achieve zero net are made by - ! scaling values without moving the zero contour. -ICE_SALT_CONCENTRATION = 0.005 ! [kg/kg] default = 0.005 - ! The assumed sea-ice salinity needed to reverse engineer the melt flux (or - ! ice-ocean fresh-water flux). -USE_LIMITED_PATM_SSH = True ! [Boolean] default = True - ! If true, return the sea surface height with the correction for the atmospheric - ! (and sea-ice) pressure limited by max_p_surf instead of the full atmospheric - ! pressure. -APPROX_NET_MASS_SRC = False ! [Boolean] default = False - ! If true, use the net mass sources from the ice-ocean boundary type without any - ! further adjustments to drive the ocean dynamics. The actual net mass source - ! may differ due to internal corrections. -WIND_STAGGER = "AGRID" ! - ! The staggering of the input wind stress field from the coupler that is - ! actually used. -WIND_STRESS_MULTIPLIER = 1.0 ! [nondim] default = 1.0 - ! A factor multiplying the wind-stress given to the ocean by the coupler. This - ! is used for testing and should be =1.0 for any production runs. -CD_TIDES = 1.0E-04 ! [nondim] default = 1.0E-04 - ! The drag coefficient that applies to the tides. -READ_TIDEAMP = False ! [Boolean] default = False - ! If true, read a file (given by TIDEAMP_FILE) containing the tidal amplitude - ! with INT_TIDE_DISSIPATION. -UTIDE = 0.0 ! [m s-1] default = 0.0 - ! The constant tidal amplitude used with INT_TIDE_DISSIPATION. -READ_GUST_2D = False ! [Boolean] default = False - ! If true, use a 2-dimensional gustiness supplied from an input file -GUST_CONST = 0.0 ! [Pa] default = 0.0 - ! The background gustiness in the winds. -SURFACE_FORCING_2018_ANSWERS = False ! [Boolean] default = False - ! If true, use the order of arithmetic and expressions that recover the answers - ! from the end of 2018. Otherwise, use a simpler expression to calculate - ! gustiness. -FIX_USTAR_GUSTLESS_BUG = True ! [Boolean] default = True - ! If true correct a bug in the time-averaging of the gustless wind friction - ! velocity -USE_RIGID_SEA_ICE = False ! [Boolean] default = False - ! If true, sea-ice is rigid enough to exert a nonhydrostatic pressure that - ! resist vertical motion. -ALLOW_ICEBERG_FLUX_DIAGNOSTICS = False ! [Boolean] default = False - ! If true, makes available diagnostics of fluxes from icebergs as seen by MOM6. -ALLOW_FLUX_ADJUSTMENTS = False ! [Boolean] default = False - ! If true, allows flux adjustments to specified via the data_table using the - ! component name 'OCN'. - -! === module MOM_restart === -USE_WAVES = False ! [Boolean] default = False - ! If true, enables surface wave modules. -LA_DEPTH_RATIO = 0.04 ! [nondim] default = 0.04 - ! The depth (normalized by BLD) to average Stokes drift over in Langmuir number - ! calculation, where La = sqrt(ust/Stokes). - -! === module MOM_file_parser === -SEND_LOG_TO_STDOUT = False ! [Boolean] default = False - ! If true, all log messages are also sent to stdout. -DOCUMENT_FILE = "MOM_parameter_doc" ! default = "MOM_parameter_doc" - ! The basename for files where run-time parameters, their settings, units and - ! defaults are documented. Blank will disable all parameter documentation. -COMPLETE_DOCUMENTATION = True ! [Boolean] default = True - ! If true, all run-time parameters are documented in MOM_parameter_doc.all . -MINIMAL_DOCUMENTATION = True ! [Boolean] default = True - ! If true, non-default run-time parameters are documented in - ! MOM_parameter_doc.short . diff --git a/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/72x36/README.md b/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/72x36/README.md deleted file mode 100644 index 396b87345..000000000 --- a/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/72x36/README.md +++ /dev/null @@ -1 +0,0 @@ -This `5x5` degree configuration was generated at NASA [GMAO](https://gmao.gsfc.nasa.gov). diff --git a/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/72x36/data_table b/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/72x36/data_table deleted file mode 100755 index e69de29bb..000000000 diff --git a/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/72x36/diag_table b/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/72x36/diag_table deleted file mode 100755 index bc2939713..000000000 --- a/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/72x36/diag_table +++ /dev/null @@ -1,494 +0,0 @@ -"Global ALE Experiment" -1900 1 1 0 0 0 -#"scalar", 1,"days",1,"days","Time", -#"layer", 1,"days",1,"days","Time", -#"prog", 1,"days",1,"days","Time", -"prog_z", -1,"months",1,"days","Time", -#"ave_prog", 1,"days",1,"days","Time", -#"tracer", 1,"days",1,"days","Time", -#"cont", 1,"days",1,"days","Time", -##"mom", 5,"days",1,"days","Time", -##"bt_mom", 5,"days",1,"days","Time", -#"visc", 1,"days",1,"days","Time", -##"energy", 5,"days",1,"days","Time", -"forcing", -1,"months",1,"days","Time", -#"surface", 1,"months",1,"days","Time", -"sfc_ave", -1,"months",1,"days","Time", -#"ocean_static", -1,"days",1,"days","time", -# -#"cmor", 1,"days",1,"days","Time", -#"cmor2", 1,"days",1,"days","Time", -#"cmor_z", 1,"days",1,"days","Time", -#"cmor_scalar", 1,"days",1,"days","Time", -#"ocean_static_cmor", -1,"days",1,"days","time", -# -##This is the field section of the diag_table. -# -## Layer-Average Diagnostics: -##=========================== -#"ocean_model","temp_layer_ave","temp_layer_ave","layer","all",.true.,"none",2 -#"ocean_model","salt_layer_ave","salt_layer_ave","layer","all",.true.,"none",2 -# -## Prognostic Ocean fields: -##========================= -# -#"ocean_model","u","u","prog","all",.false.,"none",2 -#"ocean_model","v","v","prog","all",.false.,"none",2 -#"ocean_model","h","h","prog","all",.false.,"none",1 -#"ocean_model","e","e","prog","all",.false.,"none",2 -#"ocean_model","temp","temp","prog","all",.false.,"none",2 -#"ocean_model","salt","salt","prog","all",.false.,"none",2 -##"ocean_model","Rml","Rml","prog","all",.false.,"none",2 -# -##"ocean_model","RV","RV","prog","all",.false.,"none",2 -##"ocean_model","PV","PV","prog","all",.false.,"none",2 -##"ocean_model","e_D","e_D","prog","all",.false.,"none",2 -# -#"ocean_model","u","u","ave_prog","all",.true.,"none",2 -#"ocean_model","v","v","ave_prog","all",.true.,"none",2 -#"ocean_model","h","h","ave_prog","all",.true.,"none",1 -#"ocean_model","e","e","ave_prog","all",.true.,"none",2 -##"ocean_model","temp","temp","ave_prog","all",.true.,"none",2 -##"ocean_model","salt","salt","ave_prog","all",.true.,"none",2 -##"ocean_model","Rml","Rml","ave_prog","all",.true.,"none",2 -# -#"ocean_model","mass_wt","mass_wt","surface","all",.false.,"none",1 -#"ocean_model","opottempmint","opottempmint","surface","all",.false.,"none",1 # GFDL name: temp_int -#"ocean_model","somint","somint","surface","all",.false.,"none",1 # GFDL name: salt_int -#"ocean_model","SSH","SSH","surface","all",.false.,"none",2 -#"ocean_model","SST","SST","surface","all",.false.,"none",1 -#"ocean_model","SSS","SSS","surface","all",.false.,"none",2 -#"ocean_model","speed","speed","surface","all",.false.,"none",2 -#"ocean_model","SSU","SSU","surface","all",.false.,"none",2 -#"ocean_model","SSV","SSV","surface","all",.false.,"none",2 -# -"ocean_model","SSH","SSH","sfc_ave","all",.true.,"none",2 -"ocean_model","SST","SST","sfc_ave","all",.true.,"none",2 -"ocean_model","SSS","SSS","sfc_ave","all",.true.,"none",2 -"ocean_model","speed","speed","sfc_ave","all",.true.,"none",2 -"ocean_model","SSU","SSU","sfc_ave","all",.true.,"none",2 -"ocean_model","SSV","SSV","sfc_ave","all",.true.,"none",2 -# -# -## Z-space fields: -##================== -"ocean_model_z","u","u","prog_z","all",.true.,"none",2 -"ocean_model_z","v","v","prog_z","all",.true.,"none",2 -"ocean_model_z","temp","temp","prog_z","all",.true.,"none",2 -"ocean_model_z","temp_xyave","temp_xyave","prog_z","all",.true.,"none",2 -"ocean_model_z","salt","salt","prog_z","all",.true.,"none",2 -"ocean_model_z","thkcello","thkcello","prog_z","all",.true.,"none",2 -# -## Auxilary Tracers: -##================== -##"ocean_model","vintage","vintage","prog","all",.false.,"none",2 -##"ocean_model","agescc","agescc","prog","all",.false.,"none",2 -# -## Continuity Equation Terms: -##=========================== -##"ocean_model","dhdt","dhdt","cont","all",.true.,"none",2 -#"ocean_model","wd","wd","cont","all",.true.,"none",2 -#"ocean_model","uh","uh","cont","all",.true.,"none",2 -#"ocean_model","vh","vh","cont","all",.true.,"none",2 -##"ocean_model","uhGM","uhGM","cont","all",.true.,"none",2 -##"ocean_model","vhGM","vhGM","cont","all",.true.,"none",2 -##"ocean_model","uhbt","uhbt","cont","all",.true.,"none",2 -##"ocean_model","vhbt","vhbt","cont","all",.true.,"none",2 -#"ocean_model","h_rho","h_rho","cont","all",.true.,"none",2 -#"ocean_model","uh_rho","uh_rho","cont","all",.true.,"none",2 -#"ocean_model","vh_rho","vh_rho","cont","all",.true.,"none",2 -#"ocean_model","uhGM_rho","uhGM_rho","cont","all",.true.,"none",2 -#"ocean_model","vhGM_rho","vhGM_rho","cont","all",.true.,"none",2 -#"ocean_model","KHth_u","KHth_u","cont","all",.true.,"none",2 -#"ocean_model","KHth_v","KHth_v","cont","all",.true.,"none",2 -#"ocean_model","diftrblo","diftrblo","cont","all",.true.,"none",2 -#"ocean_model","diftrelo","difteblo","cont","all",.true.,"none",2 -#"ocean_model","KHTR_u","KHTR_u","cont","all",.true.,"none",2 -#"ocean_model","KHTR_v","KHTR_v","cont","all",.true.,"none",2 -#"ocean_model","GMwork","GMwork","cont","all",.true.,"none",2 -#"ocean_model","umo","umo","cont","all",.true.,"none",2 -#"ocean_model","vmo","vmo","cont","all",.true.,"none",2 -#"ocean_model","umo_2d","umo_2d","cont","all",.true.,"none",2 -#"ocean_model","vmo_2d","vmo_2d","cont","all",.true.,"none",2 -# -## Continuity Equation Terms In Pure Potential Density Coordiantes: -##================================================================= -##"ocean_model","h_rho","h_rho","cont","all",.true.,"none",2 -##"ocean_model","uh_rho","uh_rho","cont","all",.true.,"none",2 -##"ocean_model","vh_rho","vh_rho","cont","all",.true.,"none",2 -##"ocean_model","uhGM_rho","uhGM_rho","cont","all",.true.,"none",2 -##"ocean_model","vhGM_rho","vhGM_rho","cont","all",.true.,"none",2 -# -## -## Tracer Fluxes: -##================== -#"ocean_model","T_adx", "T_adx", "tracer","all",.true.,"none",2 -#"ocean_model","T_ady", "T_ady", "tracer","all",.true.,"none",2 -#"ocean_model","T_diffx","T_diffx","tracer","all",.true.,"none",2 -#"ocean_model","T_diffy","T_diffy","tracer","all",.true.,"none",2 -#"ocean_model","S_adx", "S_adx", "tracer","all",.true.,"none",2 -#"ocean_model","S_ady", "S_ady", "tracer","all",.true.,"none",2 -#"ocean_model","S_diffx","S_diffx","tracer","all",.true.,"none",2 -#"ocean_model","S_diffy","S_diffy","tracer","all",.true.,"none",2 -# -## T/S net tendency, lateral advection, and vertical remapping budget terms -##================== -## hfds-hfsifrazil = boundary_forcing_heat_tendency_2d -##"ocean_model","rsdoabsorb" ,"rsdoabsorb", "tracer","all",.true.,"none",2 -##"ocean_model","boundary_forcing_temp_tendency" ,"boundary_forcing_temp_tendency", "tracer","all",.true.,"none",2 -##"ocean_model","boundary_forcing_saln_tendency" ,"boundary_forcing_saln_tendency", "tracer","all",.true.,"none",2 -##"ocean_model","boundary_forcing_heat_tendency" ,"boundary_forcing_heat_tendency", "tracer","all",.true.,"none",2 -##"ocean_model","boundary_forcing_salt_tendency" ,"boundary_forcing_salt_tendency", "tracer","all",.true.,"none",2 -##"ocean_model","boundary_forcing_heat_tendency_2d" ,"boundary_forcing_heat_tendency_2d", "tracer","all",.true.,"none",2 -##"ocean_model","boundary_forcing_salt_tendency_2d" ,"boundary_forcing_salt_tendency_2d", "tracer","all",.true.,"none",2 -# -## opottemptend_2d = T_advection_xy_2d + hfds + hfgeo + opottemppmdiff_2d -## note: Th_tendency_vert_remap_2d = 0 -#"ocean_model","T_tendency" ,"T_tendency", "tracer","all",.true.,"none",2 -#"ocean_model","S_tendency" ,"S_tendency", "tracer","all",.true.,"none",2 -#"ocean_model","opottemptend" ,"opottemptend", "tracer","all",.true.,"none",2 -#"ocean_model","osalttend" ,"osalttend", "tracer","all",.true.,"none",2 -#"ocean_model","opottemptend_2d" ,"opottemptend_2d", "tracer","all",.true.,"none",2 -#"ocean_model","osalttend_2d" ,"osalttend_2d", "tracer","all",.true.,"none",2 -#"ocean_model","T_advection_xy" ,"T_advection_xy", "tracer","all",.true.,"none",2 -#"ocean_model","S_advection_xy" ,"S_advection_xy", "tracer","all",.true.,"none",2 -#"ocean_model","T_advection_xy_2d" ,"T_advection_xy_2d", "tracer","all",.true.,"none",2 -#"ocean_model","S_advection_xy_2d" ,"S_advection_xy_2d", "tracer","all",.true.,"none",2 -##"ocean_model","T_tendency_vert_remap","T_tendency_vert_remap", "tracer","all",.true.,"none",2 -##"ocean_model","S_tendency_vert_remap","S_tendency_vert_remap", "tracer","all",.true.,"none",2 -##"ocean_model","Th_tendency_vert_remap","Th_tendency_vert_remap", "tracer","all",.true.,"none",2 -##"ocean_model","Sh_tendency_vert_remap","Sh_tendency_vert_remap", "tracer","all",.true.,"none",2 -##"ocean_model","Th_tendency_vert_remap_2d","Th_tendency_vert_remap_2d", "tracer","all",.true.,"none",2 -##"ocean_model","Sh_tendency_vert_remap_2d","Sh_tendency_vert_remap_2d", "tracer","all",.true.,"none",2 -#"ocean_model","frazil_heat_tendency","frazil_heat_tendency", "tracer","all",.true.,"none",2 -#"ocean_model","frazil_heat_tendency_2d","frazil_heat_tendency_2d", "tracer","all",.true.,"none",2 -#"ocean_model","frazil_temp_tendency","frazil_temp_tendency", "tracer","all",.true.,"none",2 -# -## neutral diffusion tendencies for T and S -##================== -##"ocean_model","opottemppmdiff","opottemppmdiff", "tracer","all",.true.,"none",2 -##"ocean_model","osaltpmdiff","osaltpmdiff", "tracer","all",.true.,"none",2 -##"ocean_model","opottemppmdiff_2d","opottemppmdiff_2d", "tracer","all",.true.,"none",2 -##"ocean_model","osaltpmdiff_2d","osaltpmdiff_2d", "tracer","all",.true.,"none",2 -##"ocean_model","ndiff_tracer_conc_tendency_T","ndiff_tracer_conc_tendency_T","tracer","all",.true.,"none",2 -##"ocean_model","ndiff_tracer_conc_tendency_S","ndiff_tracer_conc_tendency_S","tracer","all",.true.,"none",2 -# -## diabatic diffusion tendencies for T and S -## note: opottempdiff_2d = 0 -##================== -##"ocean_model","opottempdiff" ,"opottempdiff", "tracer","all",.true.,"none",2 -##"ocean_model","osaltdiff" ,"osaltdiff", "tracer","all",.true.,"none",2 -##"ocean_model","opottempdiff_2d" ,"opottempdiff_2d", "tracer","all",.true.,"none",2 -##"ocean_model","osaltdiff_2d" ,"osaltdiff_2d", "tracer","all",.true.,"none",2 -##"ocean_model","diabatic_diff_temp_tendency","diabatic_diff_temp_tendency","tracer","all",.true.,"none",2 -##"ocean_model","diabatic_diff_saln_tendency","diabatic_diff_saln_tendency","tracer","all",.true.,"none",2 -# -# -# -## Momentum Balance Terms: -##======================= -##"ocean_model","dudt","dudt","mom","all",.true.,"none",2 -##"ocean_model","dvdt","dvdt","mom","all",.true.,"none",2 -##"ocean_model","CAu","CAu","mom","all",.true.,"none",2 -##"ocean_model","CAv","CAv","mom","all",.true.,"none",2 -##"ocean_model","PFu","PFu","mom","all",.true.,"none",2 -##"ocean_model","PFv","PFv","mom","all",.true.,"none",2 -##"ocean_model","du_dt_visc","du_dt_visc","mom","all",.true.,"none",2 -##"ocean_model","dv_dt_visc","dv_dt_visc","mom","all",.true.,"none",2 -##"ocean_model","diffu","diffu","mom","all",.true.,"none",2 -##"ocean_model","diffv","diffv","mom","all",.true.,"none",2 -##"ocean_model","dudt_dia","dudt_dia","mom","all",.true.,"none",2 -##"ocean_model","dvdt_dia","dvdt_dia","mom","all",.true.,"none",2 -## Subterms that should not be added to a closed budget. -##"ocean_model","gKEu","gKEu","mom","all",.true.,"none",2 -##"ocean_model","gKEv","gKEv","mom","all",.true.,"none",2 -##"ocean_model","rvxu","rvxu","mom","all",.true.,"none",2 -##"ocean_model","rvxv","rvxv","mom","all",.true.,"none",2 -##"ocean_model","PFu_bc","PFu_bc","mom","all",.true.,"none",2 -##"ocean_model","PFv_bc","PFv_bc","mom","all",.true.,"none",2 -# -## Barotropic Momentum Balance Terms: -## (only available with split time stepping.) -##=========================================== -##"ocean_model","PFuBT","PFuBT","bt_mom","all",.true.,"none",2 -##"ocean_model","PFvBT","PFvBT","bt_mom","all",.true.,"none",2 -##"ocean_model","CoruBT","CoruBT","bt_mom","all",.true.,"none",2 -##"ocean_model","CorvBT","CorvBT","bt_mom","all",.true.,"none",2 -##"ocean_model","NluBT","NluBT","bt_mom","all",.true.,"none",2 -##"ocean_model","NlvBT","NlvBT","bt_mom","all",.true.,"none",2 -##"ocean_model","ubtforce","ubtforce","bt_mom","all",.true.,"none",2 -##"ocean_model","vbtforce","vbtforce","bt_mom","all",.true.,"none",2 -##"ocean_model","u_accel_bt","u_accel_bt","bt_mom","all",.true.,"none",2 -##"ocean_model","v_accel_bt","v_accel_bt","bt_mom","all",.true.,"none",2 -## -## Viscosities and diffusivities: -##=============================== -#"ocean_model","Kd_interface","Kd_interface","visc","all",.true.,"none",2 -#"ocean_model","Kd_layer","Kd_layer","visc","all",.true.,"none",2 -#"ocean_model","Kd_effective","Kd_effective","visc","all",.true.,"none",2 -#"ocean_model","Kd_itides","Kd_itides","visc","all",.true.,"none",2 -#"ocean_model","Kd_shear","Kd_shear","visc","all",.true.,"none",2 -#"ocean_model","Kd_BBL","Kd_BBL","visc","all",.true.,"none",2 -##"ocean_model","Ahh","Ahh","visc","all",.true.,"none",2 -##"ocean_model","Ahq","Ahq","visc","all",.true.,"none",2 -##"ocean_model","Khh","Khh","visc","all",.true.,"none",2 -##"ocean_model","Khq","Khq","visc","all",.true.,"none",2 -##"ocean_model","bbl_thick_u","bbl_thick_u","visc","all",.true.,"none",2 -##"ocean_model","kv_bbl_u","kv_bbl_u","visc","all",.true.,"none",2 -##"ocean_model","bbl_thick_v","bbl_thick_v","visc","all",.true.,"none",2 -##"ocean_model","kv_bbl_v","kv_bbl_v","visc","all",.true.,"none",2 -##"ocean_model","av_visc","av_visc","visc","all",.true.,"none",2 -##"ocean_model","au_visc","au_visc","visc","all",.true.,"none",2 -##"ocean_model","FrictWork","FrictWork","visc","all",.true.,"none",2 -#"ocean_model","MLD_003","MLD_003","visc","all",.true.,"none",2 -#"ocean_model","subML_N2","subML_N2","visc","all",.true.,"none",2 -#"ocean_model","MEKE","MEKE","visc","all",.true.,"none",2 -#"ocean_model","MEKE_KH","MEKE_KH","visc","all",.true.,"none",2 -#"ocean_model","SN_u","SN_u","visc","all",.true.,"none",2 -# -## -## Kinetic Energy Balance Terms: -##============================= -##"ocean_model","KE","KE","energy","all",.true.,"none",2 -##"ocean_model","dKE_dt","dKE_dt","energy","all",.true.,"none",2 -##"ocean_model","PE_to_KE","PE_to_KE","energy","all",.true.,"none",2 -##"ocean_model","KE_Coradv","KE_Coradv","energy","all",.true.,"none",2 -##"ocean_model","KE_adv","KE_adv","energy","all",.true.,"none",2 -##"ocean_model","KE_visc","KE_visc","energy","all",.true.,"none",2 -##"ocean_model","KE_horvisc","KE_horvisc","energy","all",.true.,"none",2 -##"ocean_model","KE_dia","KE_dia","energy","all",.true.,"none",2 -# -## Surface Forcing: -##================= -#"ocean_model","taux","taux", "forcing","all",.true.,"none",2 -#"ocean_model","tauy","tauy", "forcing","all",.true.,"none",2 -#"ocean_model","ustar","ustar", "forcing","all",.true.,"none",2 -#"ocean_model","p_surf","p_surf", "forcing","all",.true.,"none",2 -## -#"ocean_model","PRCmE","PRCmE", "forcing","all",.true.,"none",1 -#"ocean_model","net_massin","net_massin", "forcing","all",.true.,"none",1 -#"ocean_model","net_massout","net_massout", "forcing","all",.true.,"none",1 -#"ocean_model","lrunoff","lrunoff", "forcing","all",.true.,"none",1 -#"ocean_model","frunoff","frunoff", "forcing","all",.true.,"none",1 -#"ocean_model","lprec","lprec", "forcing","all",.true.,"none",1 -#"ocean_model","fprec","fprec", "forcing","all",.true.,"none",1 -#"ocean_model","vprec","vprec", "forcing","all",.true.,"none",1 -#"ocean_model","evap","evap", "forcing","all",.true.,"none",1 -## -#"ocean_model","net_heat_coupler","net_heat_coupler", "forcing","all",.true.,"none",1 -#"ocean_model","net_heat_surface","net_heat_surface", "forcing","all",.true.,"none",1 -#"ocean_model","SW","SW", "forcing","all",.true.,"none",1 -#"ocean_model","LW","LW", "forcing","all",.true.,"none",1 -#"ocean_model","LwLatSens","LwLatSens", "forcing","all",.true.,"none",1 -#"ocean_model","salt_flux","salt_flux", "forcing","all",.true.,"none",1 -#"ocean_model","Heat_PmE","Heat_PmE", "forcing","all",.true.,"none",1 -"ocean_model","frazil","frazil", "forcing","all",.true.,"none",1 -#"ocean_model","internal_heat","internal_heat", "forcing","all",.true.,"none",1 -#"ocean_model","heat_added","heat_added", "forcing","all",.true.,"none",1 -## -#"ocean_model","heat_content_cond","heat_content_cond", "forcing","all",.true.,"none",1 -#"ocean_model","heat_content_lprec","heat_content_lprec", "forcing","all",.true.,"none",1 -#"ocean_model","heat_content_fprec","heat_content_fprec", "forcing","all",.true.,"none",1 -#"ocean_model","heat_content_vprec","heat_content_vprec", "forcing","all",.true.,"none",1 -#"ocean_model","heat_content_lrunoff","heat_content_lrunoff", "forcing","all",.true.,"none",1 -#"ocean_model","heat_content_frunoff","heat_content_frunoff", "forcing","all",.true.,"none",1 -#"ocean_model","heat_content_surfwater","heat_content_surfwater","forcing","all",.true.,"none",1 -#"ocean_model","heat_content_massout","heat_content_massout", "forcing","all",.true.,"none",1 -#"ocean_model","heat_content_massin","heat_content_massin", "forcing","all",.true.,"none",1 -## -#"ocean_model","total_prcme","total_prcme", "forcing","all",.true.,"none",2 -#"ocean_model","total_evap","total_evap", "forcing","all",.true.,"none",2 -#"ocean_model","total_lprec","total_lprec", "forcing","all",.true.,"none",2 -#"ocean_model","total_fprec","total_fprec", "forcing","all",.true.,"none",2 -#"ocean_model","total_vprec","total_vprec", "forcing","all",.true.,"none",2 -#"ocean_model","total_precip","total_precip", "forcing","all",.true.,"none",2 -#"ocean_model","total_lrunoff","total_lrunoff", "forcing","all",.true.,"none",2 -#"ocean_model","total_frunoff","total_frunoff", "forcing","all",.true.,"none",2 -#"ocean_model","total_net_massin","total_net_massin" , "forcing","all",.true.,"none",2 -#"ocean_model","total_net_massout","total_net_massout", "forcing","all",.true.,"none",2 -## -#"ocean_model","total_heat_content_frunoff" ,"total_heat_content_frunoff", "forcing","all",.true.,"none",2 -#"ocean_model","total_heat_content_lrunoff" ,"total_heat_content_lrunoff", "forcing","all",.true.,"none",2 -#"ocean_model","total_heat_content_lprec" ,"total_heat_content_lprec", "forcing","all",.true.,"none",2 -#"ocean_model","total_heat_content_fprec" ,"total_heat_content_fprec", "forcing","all",.true.,"none",2 -#"ocean_model","total_heat_content_vprec" ,"total_heat_content_vprec", "forcing","all",.true.,"none",2 -#"ocean_model","total_heat_content_cond" ,"total_heat_content_cond", "forcing","all",.true.,"none",2 -#"ocean_model","total_heat_content_surfwater" ,"total_heat_content_surfwater", "forcing","all",.true.,"none",2 -#"ocean_model","total_heat_content_massin" ,"total_heat_content_massin", "forcing","all",.true.,"none",2 -#"ocean_model","total_heat_content_massout" ,"total_heat_content_massout", "forcing","all",.true.,"none",2 -#"ocean_model","total_net_heat_coupler" ,"total_net_heat_coupler", "forcing","all",.true.,"none",2 -#"ocean_model","total_net_heat_surface" ,"total_net_heat_surface", "forcing","all",.true.,"none",2 -#"ocean_model","total_sw" ,"total_sw", "forcing","all",.true.,"none",2 -#"ocean_model","total_LwLatSens" ,"total_LwLatSens", "forcing","all",.true.,"none",2 -#"ocean_model","total_lw" ,"total_lw", "forcing","all",.true.,"none",2 -#"ocean_model","total_lat" ,"total_lat", "forcing","all",.true.,"none",2 -#"ocean_model","total_lat_evap" ,"total_lat_evap", "forcing","all",.true.,"none",2 -#"ocean_model","total_lat_fprec" ,"total_lat_fprec", "forcing","all",.true.,"none",2 -#"ocean_model","total_lat_frunoff" ,"total_lat_frunoff", "forcing","all",.true.,"none",2 -#"ocean_model","total_sens" ,"total_sens", "forcing","all",.true.,"none",2 -##"ocean_model","total_heat_added" ,"total_heat_added", "forcing","all",.true.,"none",2 -#"ocean_model","total_salt_flux" ,"total_salt_flux", "forcing","all",.true.,"none",2 -#"ocean_model","total_salt_flux_in" ,"total_salt_flux_in", "forcing","all",.true.,"none",2 -##"ocean_model","total_salt_flux_added" ,"total_salt_flux_added", "forcing","all",.true.,"none",2 -## -## -# "ocean_model", "hfgeou", "hfgeou", "cmor2", "all", "none", "none",2 # geothermal heat flux -# "ocean_model", "hfrainds", "hfrainds", "cmor2", "all", "mean", "none",2 -# "ocean_model", "hfevapds", "hfevapds", "cmor2", "all", "mean", "none",2 -# "ocean_model", "hfrunoffds", "hfrunoffds", "cmor2", "all", "mean", "none",2 -# "ocean_model", "hfsnthermds", "hfsnthermds", "cmor2", "all", "mean", "none",2 -# "ocean_model", "hfsifrazil", "hfsifrazil", "cmor2", "all", "mean", "none",2 -##"ocean_model", "hfsithermds", "hfsithermds", "cmor2", "all", "mean", "none",2 # computed in SIS2 -# "ocean_model", "hfibthermds", "hfibthermds", "cmor2", "all", "mean", "none",2 -##"ocean_model", "hfsolidrunoffds", "hfsolidrunoffds", "cmor2", "all", "mean", "none",2 # =0 if ice = 0C -# "ocean_model", "rlntds", "rlntds", "cmor2", "all", "mean", "none",2 -# "ocean_model", "hflso", "hflso", "cmor2", "all", "mean", "none",2 -# "ocean_model", "hfsso", "hfsso", "cmor2", "all", "mean", "none",2 -# "ocean_model", "rsntds", "rsntds" "cmor2", "all", "mean", "none",2 -##"ocean_model", "rsdoabsorb", "rsdoabsorb" "cmor2", "all", "mean", "none",2 -##"ocean_model", "rsdo", "rsdo" "cmor2", "all", "mean", "none",2 -# "ocean_model", "hfds", "hfds" "cmor2", "all", "mean", "none",2 -## -## -## Fields for CMIP6 (CMOR Names): -##======================================= -#"ocean_model","pso","pso" ,"cmor","all",.true.,"none",2 # GFDL Name: p_surf -#"ocean_model","tauuo","tauuo" ,"cmor","all",.true.,"none",2 # surface i-stress -#"ocean_model","tauvo","tauvo" ,"cmor","all",.true.,"none",2 # surface j-stress -#"ocean_model","wfo","wfo" ,"cmor","all",.true.,"none",2 # GFDL Name: PRCmE -#"ocean_model","rsntds","rsntds" ,"cmor","all",.true.,"none",2 # GFDL Name: SW -#"ocean_model","rlntds","rlntds" ,"cmor","all",.true.,"none",2 # GFDL Name: SW -#"ocean_model","hfibthermds","hfibthermds" ,"cmor","all",.true.,"none",2 # GFDL Name: heat_content_frunoff -#"ocean_model","hfrunoffds","hfrunoffds" ,"cmor","all",.true.,"none",2 # GFDL Name: runoff_heat_content -#"ocean_model","hfsifrazil","hfsifrazil" ,"cmor","all",.true.,"none",2 # GFDL Name: frazil -#"ocean_model","evs","evs" ,"cmor","all",.true.,"none",2 # GFDL Name: evap -#"ocean_model","prlq","prlq" ,"cmor","all",.true.,"none",2 # GFDL Name: fprec -#"ocean_model","prsn","prsn" ,"cmor","all",.true.,"none",2 # GFDL Name: fprec -#"ocean_model","hflso","hflso" ,"cmor","all",.true.,"none",2 # GFDL Name: latent -#"ocean_model","friver","friver" ,"cmor","all",.true.,"none",2 # GFDL Name: lrunoff -##"ocean_model","rlds","rlds" ,"cmor","all",.true.,"none",2 # GFDL Name: LW -##"ocean_model","hfss","hfss" ,"cmor","all",.true.,"none",2 # GFDL Name: sensible -#"ocean_model","hfds","hfds" ,"cmor","all",.true.,"none",2 # GFDL Name: net_heat_surface -#"ocean_model","sfdsi","sfdsi" ,"cmor","all",.true.,"none",2 # GFDL Name: salt_flux -#"ocean_model","uo","uo" ,"cmor","all",.true.,"none",2 # GFDL Name: u -#"ocean_model","vo","vo" ,"cmor","all",.true.,"none",2 # GFDL Name: v -#"ocean_model","so","so" ,"cmor","all",.true.,"none",2 # GFDL Name: salinity -#"ocean_model","masscello","masscello" ,"cmor","all",.true.,"none",2 # mass of ocean cells -#"ocean_model","pbo","pbo" ,"cmor","all",.true.,"none",2 # GFDL Name: n/a -#"ocean_model","mlotst","mlotst" ,"cmor","all",.true.,"none",2 # GFDL Name: MLD_003 -#"ocean_model","mlotstsq","mlotstsq" ,"cmor","all",.true.,"none",2 # GFDL Name: n/a -#"ocean_model","zos","zos" ,"cmor","all",.true.,"none",2 # dynamic sealevel -#"ocean_model","zossq","zossq" ,"cmor","all",.true.,"none",2 # squared zos -#"ocean_model","hfgeou","hfgeou" ,"cmor","all",.false.,"none",2 # GFDL name: geo_heat -#"ocean_model","thkcello","thkcello" ,"cmor","all",.true.,"none",2 # GFDL name: h if Bouss -#"ocean_model","opottempmint","opottempmint" ,"cmor","all",.true.,"none",2 # GFDL name: temp_int -#"ocean_model","somint","somint" ,"cmor","all",.true.,"none",2 # GFDL name: salt_int -#"ocean_model","obvfsq","obvfsq" ,"cmor","all",.true.,"none",2 # GFDL name: N2 -#"ocean_model","difvho","difvho" ,"cmor","all",.true.,"none",2 # GFDL name: N2 -#"ocean_model","difvso","difvso" ,"cmor","all",.true.,"none",2 # GFDL name: N2 -#"ocean_model","difmxylo","difmxylo" ,"cmor","all",.true.,"none",2 # GFDL name: N2 -#"ocean_model","difmxybo","difmxybo" ,"cmor","all",.true.,"none",2 # GFDL name: N2 -#"ocean_model","dispkexyfo","dispkexyfo" ,"cmor","all",.true.,"none",2 # GFDL name: N2 -## -## -## Z-Space Fields Provided for CMIP6 (CMOR Names): -##=============================================== -#"ocean_model_z","uo", "uo", "cmor_z","all",.true.,"none",2 #GFDL Name: u_z -#"ocean_model_z","vo", "vo", "cmor_z","all",.true.,"none",2 #GFDL Name: v_z -#"ocean_model_z","so", "so", "cmor_z","all",.true.,"none",2 #GFDL Name: salt_z -#"ocean_model_z","thetao","thetao","cmor_z","all",.true.,"none",2 #GFDL Name: temp_z -#"ocean_model_z","umo", "umo", "cmor_z","all",.true.,"none",2 #GFDL Name: uh_z -#"ocean_model_z","vmo", "vmo", "cmor_z","all",.true.,"none",2 #GFDL Name: vh_z -## -## Scalar ocean fields for CMIP6 (CMOR Names): -##===================== -#"ocean_model", "masso", "masso", "cmor_scalar", "all", .true., "none",2 # global mean masscello -#"ocean_model", "thetaoga", "thetaoga", "cmor_scalar", "all", .true., "none",2 # global mean theta -#"ocean_model", "soga", "soga", "cmor_scalar", "all", .true., "none",2 # global mean saln -#"ocean_model", "tosga", "tosga", "cmor_scalar", "all", .true., "none",2 # area mean SST -#"ocean_model", "sosga", "sosga", "cmor_scalar", "all", .true., "none",2 # area mean SSS -#"ocean_model", "volo", "volo", "cmor_scalar", "all", .true., "none",2 # ocean volume -# -## Scalar fields for run-time monitoring: -##======================================= -#"ocean_model", "masso", "masso", "scalar", "all", .true., "none",2 # global mean masscello -#"ocean_model", "thetaoga", "thetaoga", "scalar", "all", .true., "none",2 # global mean theta -#"ocean_model", "soga", "soga", "scalar", "all", .true., "none",2 # global mean salinity -#"ocean_model", "tosga", "tosga", "scalar", "all", .true., "none",2 # area mean SST -#"ocean_model", "sosga", "sosga", "scalar", "all", .true., "none",2 # area mean SSS -#"ocean_model", "volo", "volo", "scalar", "all", .true., "none",2 # ocean volume -#"ocean_model", "ssh_ga", "ssh_ga", "scalar", "all", .true., "none",2 # global mean ssh -#"ocean_model", "prcme_ga", "prcme_ga", "scalar", "all", .true., "none",2 # global mean prcme -#"ocean_model", "precip_ga", "precip_ga", "scalar", "all", .true., "none",2 # global mean precip -#"ocean_model", "evap_ga", "evap_ga", "scalar", "all", .true., "none",2 # global mean evaporation -#"ocean_model", "net_heat_coupler_ga", "net_heat_coupler_ga", "scalar", "all", .true., "none",2 # global mean net heat coupler -#"ocean_model", "net_heat_surface_ga", "net_heat_surface_ga", "scalar", "all", .true., "none",2 # global mean net heat surface -#"ocean_model", "sens_ga", "sens_ga", "scalar", "all", .true., "none",2 # global mean sensible heat -#"ocean_model", "LwLatSens_ga", "LwLatSens_ga", "scalar", "all", .true., "none",2 # global mean LW + latent + sensible -#"ocean_model", "sw_ga", "sw_ga", "scalar", "all", .true., "none",2 # global mean SW -#"ocean_model", "lw_ga", "lw_ga", "scalar", "all", .true., "none",2 # global mean LW -#"ocean_model", "lat_ga", "lat_ga", "scalar", "all", .true., "none",2 # global mean latent -# -## Static ocean fields: -##===================== -#"ocean_model", "geolon", "geolon", "ocean_static", "all", .false., "none", 1 -#"ocean_model", "geolat", "geolat", "ocean_static", "all", .false., "none", 1 -#"ocean_model", "geolon_c", "geolon_c", "ocean_static", "all", .false., "none", 2 -#"ocean_model", "geolat_c", "geolat_c", "ocean_static", "all", .false., "none", 2 -#"ocean_model", "geolon_u", "geolon_u", "ocean_static", "all", .false., "none", 2 -#"ocean_model", "geolat_u", "geolat_u", "ocean_static", "all", .false., "none", 2 -#"ocean_model", "geolon_v", "geolon_v", "ocean_static", "all", .false., "none", 2 -#"ocean_model", "geolat_v", "geolat_v", "ocean_static", "all", .false., "none", 2 -#"ocean_model", "area_t", "area_t", "ocean_static", "all", .false., "none", 1 -#"ocean_model", "depth_ocean", "depth_ocean", "ocean_static", "all", .false., "none", 2 -#"ocean_model", "wet", "wet", "ocean_static", "all", .false., "none", 1 -#"ocean_model", "wet_c", "wet_c", "ocean_static", "all", .false., "none", 2 -#"ocean_model", "wet_u", "wet_u", "ocean_static", "all", .false., "none", 2 -#"ocean_model", "wet_v", "wet_v", "ocean_static", "all", .false., "none", 2 -#"ocean_model", "Coriolis", "Coriolis", "ocean_static", "all", .false., "none", 2 -#"ocean_model", "dxt", "dxt", "ocean_static", "all", .false., "none", 2 -#"ocean_model", "dyt", "dyt", "ocean_static", "all", .false., "none", 2 -#"ocean_model", "dxCu", "dxCu", "ocean_static", "all", .false., "none", 2 -#"ocean_model", "dyCu", "dyCu", "ocean_static", "all", .false., "none", 2 -#"ocean_model", "dxCv", "dxCv", "ocean_static", "all", .false., "none", 2 -#"ocean_model", "dyCv", "dyCv", "ocean_static", "all", .false., "none", 2 - -# -## Static ocean fields: -##===================== -#"ocean_model", "areacello", "areacello", "ocean_static_cmor", "all", .false., "none", 2 - -#============================================================================================= -# -#====> This file can be used with diag_manager/v2.0a (or higher) <==== -# -# -# FORMATS FOR FILE ENTRIES (not all input values are used) -# ------------------------ -# -#"file_name", output_freq, "output_units", format, "time_units", "time_long_name", ... -# (opt) new_file_frequecy, (opt) "new_file_freq_units", "new_file_start_date" -# -# -#output_freq: > 0 output frequency in "output_units" -# = 0 output frequency every time step -# =-1 output frequency at end of run -# -#output_units = units used for output frequency -# (years, months, days, minutes, hours, seconds) -# -#time_units = units used to label the time axis -# (days, minutes, hours, seconds) -# -# -# FORMAT FOR FIELD ENTRIES (not all input values are used) -# ------------------------ -# -#"module_name", "field_name", "output_name", "file_name" "time_sampling", time_avg, "other_opts", packing -# -#time_avg = .true. or .false. -# -#packing = 1 double precision -# = 2 float -# = 4 packed 16-bit integers -# = 8 packed 1-byte (not tested?) diff --git a/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/72x36/g5aodas_diag_table b/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/72x36/g5aodas_diag_table deleted file mode 100755 index bc2939713..000000000 --- a/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/72x36/g5aodas_diag_table +++ /dev/null @@ -1,494 +0,0 @@ -"Global ALE Experiment" -1900 1 1 0 0 0 -#"scalar", 1,"days",1,"days","Time", -#"layer", 1,"days",1,"days","Time", -#"prog", 1,"days",1,"days","Time", -"prog_z", -1,"months",1,"days","Time", -#"ave_prog", 1,"days",1,"days","Time", -#"tracer", 1,"days",1,"days","Time", -#"cont", 1,"days",1,"days","Time", -##"mom", 5,"days",1,"days","Time", -##"bt_mom", 5,"days",1,"days","Time", -#"visc", 1,"days",1,"days","Time", -##"energy", 5,"days",1,"days","Time", -"forcing", -1,"months",1,"days","Time", -#"surface", 1,"months",1,"days","Time", -"sfc_ave", -1,"months",1,"days","Time", -#"ocean_static", -1,"days",1,"days","time", -# -#"cmor", 1,"days",1,"days","Time", -#"cmor2", 1,"days",1,"days","Time", -#"cmor_z", 1,"days",1,"days","Time", -#"cmor_scalar", 1,"days",1,"days","Time", -#"ocean_static_cmor", -1,"days",1,"days","time", -# -##This is the field section of the diag_table. -# -## Layer-Average Diagnostics: -##=========================== -#"ocean_model","temp_layer_ave","temp_layer_ave","layer","all",.true.,"none",2 -#"ocean_model","salt_layer_ave","salt_layer_ave","layer","all",.true.,"none",2 -# -## Prognostic Ocean fields: -##========================= -# -#"ocean_model","u","u","prog","all",.false.,"none",2 -#"ocean_model","v","v","prog","all",.false.,"none",2 -#"ocean_model","h","h","prog","all",.false.,"none",1 -#"ocean_model","e","e","prog","all",.false.,"none",2 -#"ocean_model","temp","temp","prog","all",.false.,"none",2 -#"ocean_model","salt","salt","prog","all",.false.,"none",2 -##"ocean_model","Rml","Rml","prog","all",.false.,"none",2 -# -##"ocean_model","RV","RV","prog","all",.false.,"none",2 -##"ocean_model","PV","PV","prog","all",.false.,"none",2 -##"ocean_model","e_D","e_D","prog","all",.false.,"none",2 -# -#"ocean_model","u","u","ave_prog","all",.true.,"none",2 -#"ocean_model","v","v","ave_prog","all",.true.,"none",2 -#"ocean_model","h","h","ave_prog","all",.true.,"none",1 -#"ocean_model","e","e","ave_prog","all",.true.,"none",2 -##"ocean_model","temp","temp","ave_prog","all",.true.,"none",2 -##"ocean_model","salt","salt","ave_prog","all",.true.,"none",2 -##"ocean_model","Rml","Rml","ave_prog","all",.true.,"none",2 -# -#"ocean_model","mass_wt","mass_wt","surface","all",.false.,"none",1 -#"ocean_model","opottempmint","opottempmint","surface","all",.false.,"none",1 # GFDL name: temp_int -#"ocean_model","somint","somint","surface","all",.false.,"none",1 # GFDL name: salt_int -#"ocean_model","SSH","SSH","surface","all",.false.,"none",2 -#"ocean_model","SST","SST","surface","all",.false.,"none",1 -#"ocean_model","SSS","SSS","surface","all",.false.,"none",2 -#"ocean_model","speed","speed","surface","all",.false.,"none",2 -#"ocean_model","SSU","SSU","surface","all",.false.,"none",2 -#"ocean_model","SSV","SSV","surface","all",.false.,"none",2 -# -"ocean_model","SSH","SSH","sfc_ave","all",.true.,"none",2 -"ocean_model","SST","SST","sfc_ave","all",.true.,"none",2 -"ocean_model","SSS","SSS","sfc_ave","all",.true.,"none",2 -"ocean_model","speed","speed","sfc_ave","all",.true.,"none",2 -"ocean_model","SSU","SSU","sfc_ave","all",.true.,"none",2 -"ocean_model","SSV","SSV","sfc_ave","all",.true.,"none",2 -# -# -## Z-space fields: -##================== -"ocean_model_z","u","u","prog_z","all",.true.,"none",2 -"ocean_model_z","v","v","prog_z","all",.true.,"none",2 -"ocean_model_z","temp","temp","prog_z","all",.true.,"none",2 -"ocean_model_z","temp_xyave","temp_xyave","prog_z","all",.true.,"none",2 -"ocean_model_z","salt","salt","prog_z","all",.true.,"none",2 -"ocean_model_z","thkcello","thkcello","prog_z","all",.true.,"none",2 -# -## Auxilary Tracers: -##================== -##"ocean_model","vintage","vintage","prog","all",.false.,"none",2 -##"ocean_model","agescc","agescc","prog","all",.false.,"none",2 -# -## Continuity Equation Terms: -##=========================== -##"ocean_model","dhdt","dhdt","cont","all",.true.,"none",2 -#"ocean_model","wd","wd","cont","all",.true.,"none",2 -#"ocean_model","uh","uh","cont","all",.true.,"none",2 -#"ocean_model","vh","vh","cont","all",.true.,"none",2 -##"ocean_model","uhGM","uhGM","cont","all",.true.,"none",2 -##"ocean_model","vhGM","vhGM","cont","all",.true.,"none",2 -##"ocean_model","uhbt","uhbt","cont","all",.true.,"none",2 -##"ocean_model","vhbt","vhbt","cont","all",.true.,"none",2 -#"ocean_model","h_rho","h_rho","cont","all",.true.,"none",2 -#"ocean_model","uh_rho","uh_rho","cont","all",.true.,"none",2 -#"ocean_model","vh_rho","vh_rho","cont","all",.true.,"none",2 -#"ocean_model","uhGM_rho","uhGM_rho","cont","all",.true.,"none",2 -#"ocean_model","vhGM_rho","vhGM_rho","cont","all",.true.,"none",2 -#"ocean_model","KHth_u","KHth_u","cont","all",.true.,"none",2 -#"ocean_model","KHth_v","KHth_v","cont","all",.true.,"none",2 -#"ocean_model","diftrblo","diftrblo","cont","all",.true.,"none",2 -#"ocean_model","diftrelo","difteblo","cont","all",.true.,"none",2 -#"ocean_model","KHTR_u","KHTR_u","cont","all",.true.,"none",2 -#"ocean_model","KHTR_v","KHTR_v","cont","all",.true.,"none",2 -#"ocean_model","GMwork","GMwork","cont","all",.true.,"none",2 -#"ocean_model","umo","umo","cont","all",.true.,"none",2 -#"ocean_model","vmo","vmo","cont","all",.true.,"none",2 -#"ocean_model","umo_2d","umo_2d","cont","all",.true.,"none",2 -#"ocean_model","vmo_2d","vmo_2d","cont","all",.true.,"none",2 -# -## Continuity Equation Terms In Pure Potential Density Coordiantes: -##================================================================= -##"ocean_model","h_rho","h_rho","cont","all",.true.,"none",2 -##"ocean_model","uh_rho","uh_rho","cont","all",.true.,"none",2 -##"ocean_model","vh_rho","vh_rho","cont","all",.true.,"none",2 -##"ocean_model","uhGM_rho","uhGM_rho","cont","all",.true.,"none",2 -##"ocean_model","vhGM_rho","vhGM_rho","cont","all",.true.,"none",2 -# -## -## Tracer Fluxes: -##================== -#"ocean_model","T_adx", "T_adx", "tracer","all",.true.,"none",2 -#"ocean_model","T_ady", "T_ady", "tracer","all",.true.,"none",2 -#"ocean_model","T_diffx","T_diffx","tracer","all",.true.,"none",2 -#"ocean_model","T_diffy","T_diffy","tracer","all",.true.,"none",2 -#"ocean_model","S_adx", "S_adx", "tracer","all",.true.,"none",2 -#"ocean_model","S_ady", "S_ady", "tracer","all",.true.,"none",2 -#"ocean_model","S_diffx","S_diffx","tracer","all",.true.,"none",2 -#"ocean_model","S_diffy","S_diffy","tracer","all",.true.,"none",2 -# -## T/S net tendency, lateral advection, and vertical remapping budget terms -##================== -## hfds-hfsifrazil = boundary_forcing_heat_tendency_2d -##"ocean_model","rsdoabsorb" ,"rsdoabsorb", "tracer","all",.true.,"none",2 -##"ocean_model","boundary_forcing_temp_tendency" ,"boundary_forcing_temp_tendency", "tracer","all",.true.,"none",2 -##"ocean_model","boundary_forcing_saln_tendency" ,"boundary_forcing_saln_tendency", "tracer","all",.true.,"none",2 -##"ocean_model","boundary_forcing_heat_tendency" ,"boundary_forcing_heat_tendency", "tracer","all",.true.,"none",2 -##"ocean_model","boundary_forcing_salt_tendency" ,"boundary_forcing_salt_tendency", "tracer","all",.true.,"none",2 -##"ocean_model","boundary_forcing_heat_tendency_2d" ,"boundary_forcing_heat_tendency_2d", "tracer","all",.true.,"none",2 -##"ocean_model","boundary_forcing_salt_tendency_2d" ,"boundary_forcing_salt_tendency_2d", "tracer","all",.true.,"none",2 -# -## opottemptend_2d = T_advection_xy_2d + hfds + hfgeo + opottemppmdiff_2d -## note: Th_tendency_vert_remap_2d = 0 -#"ocean_model","T_tendency" ,"T_tendency", "tracer","all",.true.,"none",2 -#"ocean_model","S_tendency" ,"S_tendency", "tracer","all",.true.,"none",2 -#"ocean_model","opottemptend" ,"opottemptend", "tracer","all",.true.,"none",2 -#"ocean_model","osalttend" ,"osalttend", "tracer","all",.true.,"none",2 -#"ocean_model","opottemptend_2d" ,"opottemptend_2d", "tracer","all",.true.,"none",2 -#"ocean_model","osalttend_2d" ,"osalttend_2d", "tracer","all",.true.,"none",2 -#"ocean_model","T_advection_xy" ,"T_advection_xy", "tracer","all",.true.,"none",2 -#"ocean_model","S_advection_xy" ,"S_advection_xy", "tracer","all",.true.,"none",2 -#"ocean_model","T_advection_xy_2d" ,"T_advection_xy_2d", "tracer","all",.true.,"none",2 -#"ocean_model","S_advection_xy_2d" ,"S_advection_xy_2d", "tracer","all",.true.,"none",2 -##"ocean_model","T_tendency_vert_remap","T_tendency_vert_remap", "tracer","all",.true.,"none",2 -##"ocean_model","S_tendency_vert_remap","S_tendency_vert_remap", "tracer","all",.true.,"none",2 -##"ocean_model","Th_tendency_vert_remap","Th_tendency_vert_remap", "tracer","all",.true.,"none",2 -##"ocean_model","Sh_tendency_vert_remap","Sh_tendency_vert_remap", "tracer","all",.true.,"none",2 -##"ocean_model","Th_tendency_vert_remap_2d","Th_tendency_vert_remap_2d", "tracer","all",.true.,"none",2 -##"ocean_model","Sh_tendency_vert_remap_2d","Sh_tendency_vert_remap_2d", "tracer","all",.true.,"none",2 -#"ocean_model","frazil_heat_tendency","frazil_heat_tendency", "tracer","all",.true.,"none",2 -#"ocean_model","frazil_heat_tendency_2d","frazil_heat_tendency_2d", "tracer","all",.true.,"none",2 -#"ocean_model","frazil_temp_tendency","frazil_temp_tendency", "tracer","all",.true.,"none",2 -# -## neutral diffusion tendencies for T and S -##================== -##"ocean_model","opottemppmdiff","opottemppmdiff", "tracer","all",.true.,"none",2 -##"ocean_model","osaltpmdiff","osaltpmdiff", "tracer","all",.true.,"none",2 -##"ocean_model","opottemppmdiff_2d","opottemppmdiff_2d", "tracer","all",.true.,"none",2 -##"ocean_model","osaltpmdiff_2d","osaltpmdiff_2d", "tracer","all",.true.,"none",2 -##"ocean_model","ndiff_tracer_conc_tendency_T","ndiff_tracer_conc_tendency_T","tracer","all",.true.,"none",2 -##"ocean_model","ndiff_tracer_conc_tendency_S","ndiff_tracer_conc_tendency_S","tracer","all",.true.,"none",2 -# -## diabatic diffusion tendencies for T and S -## note: opottempdiff_2d = 0 -##================== -##"ocean_model","opottempdiff" ,"opottempdiff", "tracer","all",.true.,"none",2 -##"ocean_model","osaltdiff" ,"osaltdiff", "tracer","all",.true.,"none",2 -##"ocean_model","opottempdiff_2d" ,"opottempdiff_2d", "tracer","all",.true.,"none",2 -##"ocean_model","osaltdiff_2d" ,"osaltdiff_2d", "tracer","all",.true.,"none",2 -##"ocean_model","diabatic_diff_temp_tendency","diabatic_diff_temp_tendency","tracer","all",.true.,"none",2 -##"ocean_model","diabatic_diff_saln_tendency","diabatic_diff_saln_tendency","tracer","all",.true.,"none",2 -# -# -# -## Momentum Balance Terms: -##======================= -##"ocean_model","dudt","dudt","mom","all",.true.,"none",2 -##"ocean_model","dvdt","dvdt","mom","all",.true.,"none",2 -##"ocean_model","CAu","CAu","mom","all",.true.,"none",2 -##"ocean_model","CAv","CAv","mom","all",.true.,"none",2 -##"ocean_model","PFu","PFu","mom","all",.true.,"none",2 -##"ocean_model","PFv","PFv","mom","all",.true.,"none",2 -##"ocean_model","du_dt_visc","du_dt_visc","mom","all",.true.,"none",2 -##"ocean_model","dv_dt_visc","dv_dt_visc","mom","all",.true.,"none",2 -##"ocean_model","diffu","diffu","mom","all",.true.,"none",2 -##"ocean_model","diffv","diffv","mom","all",.true.,"none",2 -##"ocean_model","dudt_dia","dudt_dia","mom","all",.true.,"none",2 -##"ocean_model","dvdt_dia","dvdt_dia","mom","all",.true.,"none",2 -## Subterms that should not be added to a closed budget. -##"ocean_model","gKEu","gKEu","mom","all",.true.,"none",2 -##"ocean_model","gKEv","gKEv","mom","all",.true.,"none",2 -##"ocean_model","rvxu","rvxu","mom","all",.true.,"none",2 -##"ocean_model","rvxv","rvxv","mom","all",.true.,"none",2 -##"ocean_model","PFu_bc","PFu_bc","mom","all",.true.,"none",2 -##"ocean_model","PFv_bc","PFv_bc","mom","all",.true.,"none",2 -# -## Barotropic Momentum Balance Terms: -## (only available with split time stepping.) -##=========================================== -##"ocean_model","PFuBT","PFuBT","bt_mom","all",.true.,"none",2 -##"ocean_model","PFvBT","PFvBT","bt_mom","all",.true.,"none",2 -##"ocean_model","CoruBT","CoruBT","bt_mom","all",.true.,"none",2 -##"ocean_model","CorvBT","CorvBT","bt_mom","all",.true.,"none",2 -##"ocean_model","NluBT","NluBT","bt_mom","all",.true.,"none",2 -##"ocean_model","NlvBT","NlvBT","bt_mom","all",.true.,"none",2 -##"ocean_model","ubtforce","ubtforce","bt_mom","all",.true.,"none",2 -##"ocean_model","vbtforce","vbtforce","bt_mom","all",.true.,"none",2 -##"ocean_model","u_accel_bt","u_accel_bt","bt_mom","all",.true.,"none",2 -##"ocean_model","v_accel_bt","v_accel_bt","bt_mom","all",.true.,"none",2 -## -## Viscosities and diffusivities: -##=============================== -#"ocean_model","Kd_interface","Kd_interface","visc","all",.true.,"none",2 -#"ocean_model","Kd_layer","Kd_layer","visc","all",.true.,"none",2 -#"ocean_model","Kd_effective","Kd_effective","visc","all",.true.,"none",2 -#"ocean_model","Kd_itides","Kd_itides","visc","all",.true.,"none",2 -#"ocean_model","Kd_shear","Kd_shear","visc","all",.true.,"none",2 -#"ocean_model","Kd_BBL","Kd_BBL","visc","all",.true.,"none",2 -##"ocean_model","Ahh","Ahh","visc","all",.true.,"none",2 -##"ocean_model","Ahq","Ahq","visc","all",.true.,"none",2 -##"ocean_model","Khh","Khh","visc","all",.true.,"none",2 -##"ocean_model","Khq","Khq","visc","all",.true.,"none",2 -##"ocean_model","bbl_thick_u","bbl_thick_u","visc","all",.true.,"none",2 -##"ocean_model","kv_bbl_u","kv_bbl_u","visc","all",.true.,"none",2 -##"ocean_model","bbl_thick_v","bbl_thick_v","visc","all",.true.,"none",2 -##"ocean_model","kv_bbl_v","kv_bbl_v","visc","all",.true.,"none",2 -##"ocean_model","av_visc","av_visc","visc","all",.true.,"none",2 -##"ocean_model","au_visc","au_visc","visc","all",.true.,"none",2 -##"ocean_model","FrictWork","FrictWork","visc","all",.true.,"none",2 -#"ocean_model","MLD_003","MLD_003","visc","all",.true.,"none",2 -#"ocean_model","subML_N2","subML_N2","visc","all",.true.,"none",2 -#"ocean_model","MEKE","MEKE","visc","all",.true.,"none",2 -#"ocean_model","MEKE_KH","MEKE_KH","visc","all",.true.,"none",2 -#"ocean_model","SN_u","SN_u","visc","all",.true.,"none",2 -# -## -## Kinetic Energy Balance Terms: -##============================= -##"ocean_model","KE","KE","energy","all",.true.,"none",2 -##"ocean_model","dKE_dt","dKE_dt","energy","all",.true.,"none",2 -##"ocean_model","PE_to_KE","PE_to_KE","energy","all",.true.,"none",2 -##"ocean_model","KE_Coradv","KE_Coradv","energy","all",.true.,"none",2 -##"ocean_model","KE_adv","KE_adv","energy","all",.true.,"none",2 -##"ocean_model","KE_visc","KE_visc","energy","all",.true.,"none",2 -##"ocean_model","KE_horvisc","KE_horvisc","energy","all",.true.,"none",2 -##"ocean_model","KE_dia","KE_dia","energy","all",.true.,"none",2 -# -## Surface Forcing: -##================= -#"ocean_model","taux","taux", "forcing","all",.true.,"none",2 -#"ocean_model","tauy","tauy", "forcing","all",.true.,"none",2 -#"ocean_model","ustar","ustar", "forcing","all",.true.,"none",2 -#"ocean_model","p_surf","p_surf", "forcing","all",.true.,"none",2 -## -#"ocean_model","PRCmE","PRCmE", "forcing","all",.true.,"none",1 -#"ocean_model","net_massin","net_massin", "forcing","all",.true.,"none",1 -#"ocean_model","net_massout","net_massout", "forcing","all",.true.,"none",1 -#"ocean_model","lrunoff","lrunoff", "forcing","all",.true.,"none",1 -#"ocean_model","frunoff","frunoff", "forcing","all",.true.,"none",1 -#"ocean_model","lprec","lprec", "forcing","all",.true.,"none",1 -#"ocean_model","fprec","fprec", "forcing","all",.true.,"none",1 -#"ocean_model","vprec","vprec", "forcing","all",.true.,"none",1 -#"ocean_model","evap","evap", "forcing","all",.true.,"none",1 -## -#"ocean_model","net_heat_coupler","net_heat_coupler", "forcing","all",.true.,"none",1 -#"ocean_model","net_heat_surface","net_heat_surface", "forcing","all",.true.,"none",1 -#"ocean_model","SW","SW", "forcing","all",.true.,"none",1 -#"ocean_model","LW","LW", "forcing","all",.true.,"none",1 -#"ocean_model","LwLatSens","LwLatSens", "forcing","all",.true.,"none",1 -#"ocean_model","salt_flux","salt_flux", "forcing","all",.true.,"none",1 -#"ocean_model","Heat_PmE","Heat_PmE", "forcing","all",.true.,"none",1 -"ocean_model","frazil","frazil", "forcing","all",.true.,"none",1 -#"ocean_model","internal_heat","internal_heat", "forcing","all",.true.,"none",1 -#"ocean_model","heat_added","heat_added", "forcing","all",.true.,"none",1 -## -#"ocean_model","heat_content_cond","heat_content_cond", "forcing","all",.true.,"none",1 -#"ocean_model","heat_content_lprec","heat_content_lprec", "forcing","all",.true.,"none",1 -#"ocean_model","heat_content_fprec","heat_content_fprec", "forcing","all",.true.,"none",1 -#"ocean_model","heat_content_vprec","heat_content_vprec", "forcing","all",.true.,"none",1 -#"ocean_model","heat_content_lrunoff","heat_content_lrunoff", "forcing","all",.true.,"none",1 -#"ocean_model","heat_content_frunoff","heat_content_frunoff", "forcing","all",.true.,"none",1 -#"ocean_model","heat_content_surfwater","heat_content_surfwater","forcing","all",.true.,"none",1 -#"ocean_model","heat_content_massout","heat_content_massout", "forcing","all",.true.,"none",1 -#"ocean_model","heat_content_massin","heat_content_massin", "forcing","all",.true.,"none",1 -## -#"ocean_model","total_prcme","total_prcme", "forcing","all",.true.,"none",2 -#"ocean_model","total_evap","total_evap", "forcing","all",.true.,"none",2 -#"ocean_model","total_lprec","total_lprec", "forcing","all",.true.,"none",2 -#"ocean_model","total_fprec","total_fprec", "forcing","all",.true.,"none",2 -#"ocean_model","total_vprec","total_vprec", "forcing","all",.true.,"none",2 -#"ocean_model","total_precip","total_precip", "forcing","all",.true.,"none",2 -#"ocean_model","total_lrunoff","total_lrunoff", "forcing","all",.true.,"none",2 -#"ocean_model","total_frunoff","total_frunoff", "forcing","all",.true.,"none",2 -#"ocean_model","total_net_massin","total_net_massin" , "forcing","all",.true.,"none",2 -#"ocean_model","total_net_massout","total_net_massout", "forcing","all",.true.,"none",2 -## -#"ocean_model","total_heat_content_frunoff" ,"total_heat_content_frunoff", "forcing","all",.true.,"none",2 -#"ocean_model","total_heat_content_lrunoff" ,"total_heat_content_lrunoff", "forcing","all",.true.,"none",2 -#"ocean_model","total_heat_content_lprec" ,"total_heat_content_lprec", "forcing","all",.true.,"none",2 -#"ocean_model","total_heat_content_fprec" ,"total_heat_content_fprec", "forcing","all",.true.,"none",2 -#"ocean_model","total_heat_content_vprec" ,"total_heat_content_vprec", "forcing","all",.true.,"none",2 -#"ocean_model","total_heat_content_cond" ,"total_heat_content_cond", "forcing","all",.true.,"none",2 -#"ocean_model","total_heat_content_surfwater" ,"total_heat_content_surfwater", "forcing","all",.true.,"none",2 -#"ocean_model","total_heat_content_massin" ,"total_heat_content_massin", "forcing","all",.true.,"none",2 -#"ocean_model","total_heat_content_massout" ,"total_heat_content_massout", "forcing","all",.true.,"none",2 -#"ocean_model","total_net_heat_coupler" ,"total_net_heat_coupler", "forcing","all",.true.,"none",2 -#"ocean_model","total_net_heat_surface" ,"total_net_heat_surface", "forcing","all",.true.,"none",2 -#"ocean_model","total_sw" ,"total_sw", "forcing","all",.true.,"none",2 -#"ocean_model","total_LwLatSens" ,"total_LwLatSens", "forcing","all",.true.,"none",2 -#"ocean_model","total_lw" ,"total_lw", "forcing","all",.true.,"none",2 -#"ocean_model","total_lat" ,"total_lat", "forcing","all",.true.,"none",2 -#"ocean_model","total_lat_evap" ,"total_lat_evap", "forcing","all",.true.,"none",2 -#"ocean_model","total_lat_fprec" ,"total_lat_fprec", "forcing","all",.true.,"none",2 -#"ocean_model","total_lat_frunoff" ,"total_lat_frunoff", "forcing","all",.true.,"none",2 -#"ocean_model","total_sens" ,"total_sens", "forcing","all",.true.,"none",2 -##"ocean_model","total_heat_added" ,"total_heat_added", "forcing","all",.true.,"none",2 -#"ocean_model","total_salt_flux" ,"total_salt_flux", "forcing","all",.true.,"none",2 -#"ocean_model","total_salt_flux_in" ,"total_salt_flux_in", "forcing","all",.true.,"none",2 -##"ocean_model","total_salt_flux_added" ,"total_salt_flux_added", "forcing","all",.true.,"none",2 -## -## -# "ocean_model", "hfgeou", "hfgeou", "cmor2", "all", "none", "none",2 # geothermal heat flux -# "ocean_model", "hfrainds", "hfrainds", "cmor2", "all", "mean", "none",2 -# "ocean_model", "hfevapds", "hfevapds", "cmor2", "all", "mean", "none",2 -# "ocean_model", "hfrunoffds", "hfrunoffds", "cmor2", "all", "mean", "none",2 -# "ocean_model", "hfsnthermds", "hfsnthermds", "cmor2", "all", "mean", "none",2 -# "ocean_model", "hfsifrazil", "hfsifrazil", "cmor2", "all", "mean", "none",2 -##"ocean_model", "hfsithermds", "hfsithermds", "cmor2", "all", "mean", "none",2 # computed in SIS2 -# "ocean_model", "hfibthermds", "hfibthermds", "cmor2", "all", "mean", "none",2 -##"ocean_model", "hfsolidrunoffds", "hfsolidrunoffds", "cmor2", "all", "mean", "none",2 # =0 if ice = 0C -# "ocean_model", "rlntds", "rlntds", "cmor2", "all", "mean", "none",2 -# "ocean_model", "hflso", "hflso", "cmor2", "all", "mean", "none",2 -# "ocean_model", "hfsso", "hfsso", "cmor2", "all", "mean", "none",2 -# "ocean_model", "rsntds", "rsntds" "cmor2", "all", "mean", "none",2 -##"ocean_model", "rsdoabsorb", "rsdoabsorb" "cmor2", "all", "mean", "none",2 -##"ocean_model", "rsdo", "rsdo" "cmor2", "all", "mean", "none",2 -# "ocean_model", "hfds", "hfds" "cmor2", "all", "mean", "none",2 -## -## -## Fields for CMIP6 (CMOR Names): -##======================================= -#"ocean_model","pso","pso" ,"cmor","all",.true.,"none",2 # GFDL Name: p_surf -#"ocean_model","tauuo","tauuo" ,"cmor","all",.true.,"none",2 # surface i-stress -#"ocean_model","tauvo","tauvo" ,"cmor","all",.true.,"none",2 # surface j-stress -#"ocean_model","wfo","wfo" ,"cmor","all",.true.,"none",2 # GFDL Name: PRCmE -#"ocean_model","rsntds","rsntds" ,"cmor","all",.true.,"none",2 # GFDL Name: SW -#"ocean_model","rlntds","rlntds" ,"cmor","all",.true.,"none",2 # GFDL Name: SW -#"ocean_model","hfibthermds","hfibthermds" ,"cmor","all",.true.,"none",2 # GFDL Name: heat_content_frunoff -#"ocean_model","hfrunoffds","hfrunoffds" ,"cmor","all",.true.,"none",2 # GFDL Name: runoff_heat_content -#"ocean_model","hfsifrazil","hfsifrazil" ,"cmor","all",.true.,"none",2 # GFDL Name: frazil -#"ocean_model","evs","evs" ,"cmor","all",.true.,"none",2 # GFDL Name: evap -#"ocean_model","prlq","prlq" ,"cmor","all",.true.,"none",2 # GFDL Name: fprec -#"ocean_model","prsn","prsn" ,"cmor","all",.true.,"none",2 # GFDL Name: fprec -#"ocean_model","hflso","hflso" ,"cmor","all",.true.,"none",2 # GFDL Name: latent -#"ocean_model","friver","friver" ,"cmor","all",.true.,"none",2 # GFDL Name: lrunoff -##"ocean_model","rlds","rlds" ,"cmor","all",.true.,"none",2 # GFDL Name: LW -##"ocean_model","hfss","hfss" ,"cmor","all",.true.,"none",2 # GFDL Name: sensible -#"ocean_model","hfds","hfds" ,"cmor","all",.true.,"none",2 # GFDL Name: net_heat_surface -#"ocean_model","sfdsi","sfdsi" ,"cmor","all",.true.,"none",2 # GFDL Name: salt_flux -#"ocean_model","uo","uo" ,"cmor","all",.true.,"none",2 # GFDL Name: u -#"ocean_model","vo","vo" ,"cmor","all",.true.,"none",2 # GFDL Name: v -#"ocean_model","so","so" ,"cmor","all",.true.,"none",2 # GFDL Name: salinity -#"ocean_model","masscello","masscello" ,"cmor","all",.true.,"none",2 # mass of ocean cells -#"ocean_model","pbo","pbo" ,"cmor","all",.true.,"none",2 # GFDL Name: n/a -#"ocean_model","mlotst","mlotst" ,"cmor","all",.true.,"none",2 # GFDL Name: MLD_003 -#"ocean_model","mlotstsq","mlotstsq" ,"cmor","all",.true.,"none",2 # GFDL Name: n/a -#"ocean_model","zos","zos" ,"cmor","all",.true.,"none",2 # dynamic sealevel -#"ocean_model","zossq","zossq" ,"cmor","all",.true.,"none",2 # squared zos -#"ocean_model","hfgeou","hfgeou" ,"cmor","all",.false.,"none",2 # GFDL name: geo_heat -#"ocean_model","thkcello","thkcello" ,"cmor","all",.true.,"none",2 # GFDL name: h if Bouss -#"ocean_model","opottempmint","opottempmint" ,"cmor","all",.true.,"none",2 # GFDL name: temp_int -#"ocean_model","somint","somint" ,"cmor","all",.true.,"none",2 # GFDL name: salt_int -#"ocean_model","obvfsq","obvfsq" ,"cmor","all",.true.,"none",2 # GFDL name: N2 -#"ocean_model","difvho","difvho" ,"cmor","all",.true.,"none",2 # GFDL name: N2 -#"ocean_model","difvso","difvso" ,"cmor","all",.true.,"none",2 # GFDL name: N2 -#"ocean_model","difmxylo","difmxylo" ,"cmor","all",.true.,"none",2 # GFDL name: N2 -#"ocean_model","difmxybo","difmxybo" ,"cmor","all",.true.,"none",2 # GFDL name: N2 -#"ocean_model","dispkexyfo","dispkexyfo" ,"cmor","all",.true.,"none",2 # GFDL name: N2 -## -## -## Z-Space Fields Provided for CMIP6 (CMOR Names): -##=============================================== -#"ocean_model_z","uo", "uo", "cmor_z","all",.true.,"none",2 #GFDL Name: u_z -#"ocean_model_z","vo", "vo", "cmor_z","all",.true.,"none",2 #GFDL Name: v_z -#"ocean_model_z","so", "so", "cmor_z","all",.true.,"none",2 #GFDL Name: salt_z -#"ocean_model_z","thetao","thetao","cmor_z","all",.true.,"none",2 #GFDL Name: temp_z -#"ocean_model_z","umo", "umo", "cmor_z","all",.true.,"none",2 #GFDL Name: uh_z -#"ocean_model_z","vmo", "vmo", "cmor_z","all",.true.,"none",2 #GFDL Name: vh_z -## -## Scalar ocean fields for CMIP6 (CMOR Names): -##===================== -#"ocean_model", "masso", "masso", "cmor_scalar", "all", .true., "none",2 # global mean masscello -#"ocean_model", "thetaoga", "thetaoga", "cmor_scalar", "all", .true., "none",2 # global mean theta -#"ocean_model", "soga", "soga", "cmor_scalar", "all", .true., "none",2 # global mean saln -#"ocean_model", "tosga", "tosga", "cmor_scalar", "all", .true., "none",2 # area mean SST -#"ocean_model", "sosga", "sosga", "cmor_scalar", "all", .true., "none",2 # area mean SSS -#"ocean_model", "volo", "volo", "cmor_scalar", "all", .true., "none",2 # ocean volume -# -## Scalar fields for run-time monitoring: -##======================================= -#"ocean_model", "masso", "masso", "scalar", "all", .true., "none",2 # global mean masscello -#"ocean_model", "thetaoga", "thetaoga", "scalar", "all", .true., "none",2 # global mean theta -#"ocean_model", "soga", "soga", "scalar", "all", .true., "none",2 # global mean salinity -#"ocean_model", "tosga", "tosga", "scalar", "all", .true., "none",2 # area mean SST -#"ocean_model", "sosga", "sosga", "scalar", "all", .true., "none",2 # area mean SSS -#"ocean_model", "volo", "volo", "scalar", "all", .true., "none",2 # ocean volume -#"ocean_model", "ssh_ga", "ssh_ga", "scalar", "all", .true., "none",2 # global mean ssh -#"ocean_model", "prcme_ga", "prcme_ga", "scalar", "all", .true., "none",2 # global mean prcme -#"ocean_model", "precip_ga", "precip_ga", "scalar", "all", .true., "none",2 # global mean precip -#"ocean_model", "evap_ga", "evap_ga", "scalar", "all", .true., "none",2 # global mean evaporation -#"ocean_model", "net_heat_coupler_ga", "net_heat_coupler_ga", "scalar", "all", .true., "none",2 # global mean net heat coupler -#"ocean_model", "net_heat_surface_ga", "net_heat_surface_ga", "scalar", "all", .true., "none",2 # global mean net heat surface -#"ocean_model", "sens_ga", "sens_ga", "scalar", "all", .true., "none",2 # global mean sensible heat -#"ocean_model", "LwLatSens_ga", "LwLatSens_ga", "scalar", "all", .true., "none",2 # global mean LW + latent + sensible -#"ocean_model", "sw_ga", "sw_ga", "scalar", "all", .true., "none",2 # global mean SW -#"ocean_model", "lw_ga", "lw_ga", "scalar", "all", .true., "none",2 # global mean LW -#"ocean_model", "lat_ga", "lat_ga", "scalar", "all", .true., "none",2 # global mean latent -# -## Static ocean fields: -##===================== -#"ocean_model", "geolon", "geolon", "ocean_static", "all", .false., "none", 1 -#"ocean_model", "geolat", "geolat", "ocean_static", "all", .false., "none", 1 -#"ocean_model", "geolon_c", "geolon_c", "ocean_static", "all", .false., "none", 2 -#"ocean_model", "geolat_c", "geolat_c", "ocean_static", "all", .false., "none", 2 -#"ocean_model", "geolon_u", "geolon_u", "ocean_static", "all", .false., "none", 2 -#"ocean_model", "geolat_u", "geolat_u", "ocean_static", "all", .false., "none", 2 -#"ocean_model", "geolon_v", "geolon_v", "ocean_static", "all", .false., "none", 2 -#"ocean_model", "geolat_v", "geolat_v", "ocean_static", "all", .false., "none", 2 -#"ocean_model", "area_t", "area_t", "ocean_static", "all", .false., "none", 1 -#"ocean_model", "depth_ocean", "depth_ocean", "ocean_static", "all", .false., "none", 2 -#"ocean_model", "wet", "wet", "ocean_static", "all", .false., "none", 1 -#"ocean_model", "wet_c", "wet_c", "ocean_static", "all", .false., "none", 2 -#"ocean_model", "wet_u", "wet_u", "ocean_static", "all", .false., "none", 2 -#"ocean_model", "wet_v", "wet_v", "ocean_static", "all", .false., "none", 2 -#"ocean_model", "Coriolis", "Coriolis", "ocean_static", "all", .false., "none", 2 -#"ocean_model", "dxt", "dxt", "ocean_static", "all", .false., "none", 2 -#"ocean_model", "dyt", "dyt", "ocean_static", "all", .false., "none", 2 -#"ocean_model", "dxCu", "dxCu", "ocean_static", "all", .false., "none", 2 -#"ocean_model", "dyCu", "dyCu", "ocean_static", "all", .false., "none", 2 -#"ocean_model", "dxCv", "dxCv", "ocean_static", "all", .false., "none", 2 -#"ocean_model", "dyCv", "dyCv", "ocean_static", "all", .false., "none", 2 - -# -## Static ocean fields: -##===================== -#"ocean_model", "areacello", "areacello", "ocean_static_cmor", "all", .false., "none", 2 - -#============================================================================================= -# -#====> This file can be used with diag_manager/v2.0a (or higher) <==== -# -# -# FORMATS FOR FILE ENTRIES (not all input values are used) -# ------------------------ -# -#"file_name", output_freq, "output_units", format, "time_units", "time_long_name", ... -# (opt) new_file_frequecy, (opt) "new_file_freq_units", "new_file_start_date" -# -# -#output_freq: > 0 output frequency in "output_units" -# = 0 output frequency every time step -# =-1 output frequency at end of run -# -#output_units = units used for output frequency -# (years, months, days, minutes, hours, seconds) -# -#time_units = units used to label the time axis -# (days, minutes, hours, seconds) -# -# -# FORMAT FOR FIELD ENTRIES (not all input values are used) -# ------------------------ -# -#"module_name", "field_name", "output_name", "file_name" "time_sampling", time_avg, "other_opts", packing -# -#time_avg = .true. or .false. -# -#packing = 1 double precision -# = 2 float -# = 4 packed 16-bit integers -# = 8 packed 1-byte (not tested?) diff --git a/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/72x36/g5aodas_input.nml b/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/72x36/g5aodas_input.nml deleted file mode 100755 index 3c31f4856..000000000 --- a/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/72x36/g5aodas_input.nml +++ /dev/null @@ -1,11 +0,0 @@ - &MOM_input_nml - output_directory = './', - input_filename = 'n' - restart_input_dir = 'INPUT/', - restart_output_dir = 'RESTART/', - parameter_filename = 'MOM_input', - 'MOM_override' / - - &diag_manager_nml - / - diff --git a/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/72x36/input.nml b/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/72x36/input.nml deleted file mode 100755 index 3c31f4856..000000000 --- a/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/72x36/input.nml +++ /dev/null @@ -1,11 +0,0 @@ - &MOM_input_nml - output_directory = './', - input_filename = 'n' - restart_input_dir = 'INPUT/', - restart_output_dir = 'RESTART/', - parameter_filename = 'MOM_input', - 'MOM_override' / - - &diag_manager_nml - / - diff --git a/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/README.md b/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/README.md deleted file mode 100644 index 0d2c29f4a..000000000 --- a/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_app/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## MOM6 configurations - -For whatever comes from NOAA GFDL, this file (README) spells where it came from: [MOM6_examples](https://github.com/NOAA-GFDL/MOM6-examples) location so we know where we got what! diff --git a/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_cmake/CMakeLists.txt b/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_cmake/CMakeLists.txt deleted file mode 100644 index 0f266bac4..000000000 --- a/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM6_GEOSPlug/mom6_cmake/CMakeLists.txt +++ /dev/null @@ -1,520 +0,0 @@ -esma_set_this (OVERRIDE mom6) - -# This is for selecting the MOM6 infrastructure interface -## We default to FMS1 and look if something is passed in... -set (DEFAULT_MOM6_INFRA "FMS1") -if (NOT MOM6_INFRA) - set (MOM6_INFRA ${DEFAULT_MOM6_INFRA}) -endif () - -## ... and make sure it is allowed -set (ALLOWED_MOM6_INFRA "FMS1" "FMS2") -if (NOT MOM6_INFRA IN_LIST ALLOWED_MOM6_INFRA) - message (FATAL_ERROR "The only allowed values for MOM6_INFRA are ${ALLOWED_MOM6_INFRA}") -endif () - -# got below list from following two commands: -# 1. find src/ -print | grep .F90 | sort -d -# 2. ls -1 pkg/CVMix-src/src/*0 ; ls -1 pkg/CVMix-src/src/drivers/*0 ; ls -1 pkg/CVMix-src/src/shared/*0 ; ls -1 pkg/GSW-Fortran/modules/*0 ; ls -1 pkg/GSW-Fortran/toolbox/*0 -# -list( APPEND MOM6_SRCS - src/ALE/coord_adapt.F90 - src/ALE/coord_hycom.F90 - src/ALE/coord_rho.F90 - src/ALE/coord_sigma.F90 - src/ALE/coord_slight.F90 - src/ALE/coord_zlike.F90 - src/ALE/MOM_ALE.F90 - src/ALE/MOM_regridding.F90 - src/ALE/MOM_remapping.F90 - src/ALE/P1M_functions.F90 - src/ALE/P3M_functions.F90 - src/ALE/PCM_functions.F90 - src/ALE/PLM_functions.F90 - src/ALE/polynomial_functions.F90 - src/ALE/PPM_functions.F90 - src/ALE/PQM_functions.F90 - src/ALE/regrid_consts.F90 - src/ALE/regrid_edge_values.F90 - src/ALE/regrid_interp.F90 - src/ALE/regrid_solvers.F90 - src/core/MOM_barotropic.F90 - src/core/MOM_boundary_update.F90 - src/core/MOM_checksum_packages.F90 - src/core/MOM_continuity.F90 - src/core/MOM_continuity_PPM.F90 - src/core/MOM_CoriolisAdv.F90 - src/core/MOM_density_integrals.F90 - src/core/MOM_dynamics_split_RK2.F90 - src/core/MOM_dynamics_unsplit.F90 - src/core/MOM_dynamics_unsplit_RK2.F90 - src/core/MOM.F90 - src/core/MOM_forcing_type.F90 - src/core/MOM_grid.F90 - src/core/MOM_interface_heights.F90 - src/core/MOM_isopycnal_slopes.F90 - src/core/MOM_open_boundary.F90 - src/core/MOM_PressureForce.F90 - src/core/MOM_PressureForce_FV.F90 - src/core/MOM_PressureForce_Montgomery.F90 - src/core/MOM_transcribe_grid.F90 - src/core/MOM_unit_tests.F90 - src/core/MOM_variables.F90 - src/core/MOM_verticalGrid.F90 - src/diagnostics/MOM_debugging.F90 - src/diagnostics/MOM_diagnostics.F90 - src/diagnostics/MOM_obsolete_diagnostics.F90 - src/diagnostics/MOM_obsolete_params.F90 - src/diagnostics/MOM_PointAccel.F90 - src/diagnostics/MOM_spatial_means.F90 - src/diagnostics/MOM_sum_output.F90 - src/diagnostics/MOM_wave_speed.F90 - src/diagnostics/MOM_wave_structure.F90 - src/equation_of_state/MOM_EOS.F90 - src/equation_of_state/MOM_EOS_linear.F90 - src/equation_of_state/MOM_EOS_NEMO.F90 - src/equation_of_state/MOM_EOS_TEOS10.F90 - src/equation_of_state/MOM_EOS_UNESCO.F90 - src/equation_of_state/MOM_EOS_Wright.F90 - src/equation_of_state/MOM_TFreeze.F90 -# src/equation_of_state/TEOS10/gsw_chem_potential_water_t_exact.f90 -# src/equation_of_state/TEOS10/gsw_ct_freezing_exact.f90 -# src/equation_of_state/TEOS10/gsw_ct_freezing_poly.f90 -# src/equation_of_state/TEOS10/gsw_ct_from_pt.f90 -# src/equation_of_state/TEOS10/gsw_ct_from_t.f90 -# src/equation_of_state/TEOS10/gsw_entropy_part.f90 -# src/equation_of_state/TEOS10/gsw_entropy_part_zerop.f90 -# src/equation_of_state/TEOS10/gsw_gibbs.f90 -# src/equation_of_state/TEOS10/gsw_gibbs_ice.f90 -# src/equation_of_state/TEOS10/gsw_gibbs_pt0_pt0.f90 -# src/equation_of_state/TEOS10/gsw_mod_freezing_poly_coefficients.f90 -# src/equation_of_state/TEOS10/gsw_mod_gibbs_ice_coefficients.f90 -# src/equation_of_state/TEOS10/gsw_mod_kinds.f90 -# src/equation_of_state/TEOS10/gsw_mod_specvol_coefficients.f90 -# src/equation_of_state/TEOS10/gsw_mod_teos10_constants.f90 -# src/equation_of_state/TEOS10/gsw_mod_toolbox.f90 -# src/equation_of_state/TEOS10/gsw_pt0_from_t.f90 -# src/equation_of_state/TEOS10/gsw_pt_from_ct.f90 -# src/equation_of_state/TEOS10/gsw_pt_from_t.f90 -# src/equation_of_state/TEOS10/gsw_rho.f90 -# src/equation_of_state/TEOS10/gsw_rho_first_derivatives.f90 -# src/equation_of_state/TEOS10/gsw_rho_second_derivatives.f90 -# src/equation_of_state/TEOS10/gsw_specvol.f90 -# src/equation_of_state/TEOS10/gsw_specvol_first_derivatives.f90 -# src/equation_of_state/TEOS10/gsw_specvol_second_derivatives.f90 -# src/equation_of_state/TEOS10/gsw_sp_from_sr.f90 -# src/equation_of_state/TEOS10/gsw_sr_from_sp.f90 -# src/equation_of_state/TEOS10/gsw_t_deriv_chem_potential_water_t_exact.f90 -# src/equation_of_state/TEOS10/gsw_t_freezing_exact.f90 -# src/equation_of_state/TEOS10/gsw_t_freezing_poly.f90 -# src/equation_of_state/TEOS10/gsw_t_from_ct.f90 - src/framework/MOM_array_transform.F90 - src/framework/MOM_checksums.F90 - src/framework/MOM_coms.F90 - src/framework/MOM_coupler_types.F90 - src/framework/MOM_cpu_clock.F90 - src/framework/MOM_data_override.F90 - src/framework/MOM_diag_mediator.F90 - src/framework/MOM_diag_remap.F90 - src/framework/MOM_diag_vkernels.F90 - src/framework/MOM_document.F90 - src/framework/MOM_domains.F90 - src/framework/MOM_dyn_horgrid.F90 - src/framework/MOM_ensemble_manager.F90 - src/framework/MOM_error_handler.F90 - src/framework/MOM_file_parser.F90 - src/framework/MOM_get_input.F90 - src/framework/MOM_hor_index.F90 - src/framework/MOM_horizontal_regridding.F90 - src/framework/MOM_interpolate.F90 - src/framework/MOM_intrinsic_functions.F90 - src/framework/MOM_io.F90 - src/framework/MOM_random.F90 - src/framework/MOM_restart.F90 - src/framework/MOM_safe_alloc.F90 - src/framework/MOM_string_functions.F90 - src/framework/MOM_unit_scaling.F90 - src/framework/MOM_write_cputime.F90 - src/ice_shelf/MOM_ice_shelf_diag_mediator.F90 - src/ice_shelf/MOM_ice_shelf_dynamics.F90 - src/ice_shelf/MOM_ice_shelf.F90 - src/ice_shelf/MOM_ice_shelf_initialize.F90 - src/ice_shelf/MOM_ice_shelf_state.F90 - src/ice_shelf/MOM_marine_ice.F90 - src/ice_shelf/user_shelf_init.F90 - src/initialization/MOM_coord_initialization.F90 - src/initialization/MOM_fixed_initialization.F90 - src/initialization/MOM_grid_initialize.F90 - src/initialization/MOM_shared_initialization.F90 - src/initialization/MOM_state_initialization.F90 - src/initialization/MOM_tracer_initialization_from_Z.F90 - src/ocean_data_assim/MOM_oda_driver.F90 - src/ocean_data_assim/MOM_oda_incupd.F90 - src/parameterizations/lateral/MOM_hor_visc.F90 - src/parameterizations/lateral/MOM_internal_tides.F90 - src/parameterizations/lateral/MOM_lateral_mixing_coeffs.F90 - src/parameterizations/lateral/MOM_MEKE.F90 - src/parameterizations/lateral/MOM_MEKE_types.F90 - src/parameterizations/lateral/MOM_mixed_layer_restrat.F90 - src/parameterizations/lateral/MOM_thickness_diffuse.F90 - src/parameterizations/lateral/MOM_tidal_forcing.F90 - src/parameterizations/vertical/MOM_ALE_sponge.F90 - src/parameterizations/vertical/MOM_bkgnd_mixing.F90 - src/parameterizations/vertical/MOM_bulk_mixed_layer.F90 - src/parameterizations/vertical/MOM_CVMix_conv.F90 - src/parameterizations/vertical/MOM_CVMix_ddiff.F90 - src/parameterizations/vertical/MOM_CVMix_KPP.F90 - src/parameterizations/vertical/MOM_CVMix_shear.F90 - src/parameterizations/vertical/MOM_diabatic_aux.F90 - src/parameterizations/vertical/MOM_diabatic_driver.F90 - src/parameterizations/vertical/MOM_diapyc_energy_req.F90 - src/parameterizations/vertical/MOM_energetic_PBL.F90 - src/parameterizations/vertical/MOM_entrain_diffusive.F90 - src/parameterizations/vertical/MOM_full_convection.F90 - src/parameterizations/vertical/MOM_geothermal.F90 - src/parameterizations/vertical/MOM_internal_tide_input.F90 - src/parameterizations/vertical/MOM_kappa_shear.F90 - src/parameterizations/vertical/MOM_opacity.F90 - src/parameterizations/vertical/MOM_regularize_layers.F90 - src/parameterizations/vertical/MOM_set_diffusivity.F90 - src/parameterizations/vertical/MOM_set_viscosity.F90 - src/parameterizations/vertical/MOM_sponge.F90 - src/parameterizations/vertical/MOM_tidal_mixing.F90 - src/parameterizations/vertical/MOM_vert_friction.F90 - src/tracer/advection_test_tracer.F90 - src/tracer/boundary_impulse_tracer.F90 - src/tracer/DOME_tracer.F90 - src/tracer/dyed_obc_tracer.F90 - src/tracer/dye_example.F90 - src/tracer/ideal_age_example.F90 - src/tracer/ISOMIP_tracer.F90 - src/tracer/MOM_CFC_cap.F90 - src/tracer/MOM_generic_tracer.F90 - src/tracer/MOM_lateral_boundary_diffusion.F90 - src/tracer/MOM_neutral_diffusion.F90 - src/tracer/MOM_OCMIP2_CFC.F90 - src/tracer/MOM_offline_aux.F90 - src/tracer/MOM_offline_main.F90 - src/tracer/MOM_tracer_advect.F90 - src/tracer/MOM_tracer_diabatic.F90 - src/tracer/MOM_tracer_flow_control.F90 - src/tracer/MOM_tracer_hor_diff.F90 - src/tracer/MOM_tracer_registry.F90 - src/tracer/MOM_tracer_Z_init.F90 - src/tracer/nw2_tracers.F90 - src/tracer/oil_tracer.F90 - src/tracer/pseudo_salt_tracer.F90 - src/tracer/RGC_tracer.F90 - src/tracer/tracer_example.F90 - src/user/adjustment_initialization.F90 - src/user/baroclinic_zone_initialization.F90 - src/user/basin_builder.F90 - src/user/benchmark_initialization.F90 - src/user/BFB_initialization.F90 - src/user/BFB_surface_forcing.F90 - src/user/circle_obcs_initialization.F90 - src/user/dense_water_initialization.F90 - src/user/DOME2d_initialization.F90 - src/user/DOME_initialization.F90 - src/user/dumbbell_initialization.F90 - src/user/dumbbell_surface_forcing.F90 - src/user/dyed_channel_initialization.F90 - src/user/dyed_obcs_initialization.F90 - src/user/external_gwave_initialization.F90 - src/user/Idealized_Hurricane.F90 - src/user/ISOMIP_initialization.F90 - src/user/Kelvin_initialization.F90 - src/user/lock_exchange_initialization.F90 - src/user/MOM_controlled_forcing.F90 - src/user/MOM_wave_interface.F90 - src/user/Neverworld_initialization.F90 - src/user/Phillips_initialization.F90 - src/user/RGC_initialization.F90 - src/user/Rossby_front_2d_initialization.F90 - src/user/SCM_CVMix_tests.F90 - src/user/seamount_initialization.F90 - src/user/shelfwave_initialization.F90 - src/user/sloshing_initialization.F90 - src/user/soliton_initialization.F90 - src/user/supercritical_initialization.F90 - src/user/tidal_bay_initialization.F90 - src/user/user_change_diffusivity.F90 - src/user/user_initialization.F90 - src/user/user_revise_forcing.F90 -# pkg/CVMix-src/src/cvmix_driver.F90 - pkg/CVMix-src/src/cvmix_io.F90 -# pkg/CVMix-src/src/dummy.F90 - pkg/CVMix-src/src/drivers/cvmix_bgrnd_BL.F90 - pkg/CVMix-src/src/drivers/cvmix_ddiff_drv.F90 - pkg/CVMix-src/src/drivers/cvmix_kpp_drv.F90 - pkg/CVMix-src/src/drivers/cvmix_shear_drv.F90 - pkg/CVMix-src/src/drivers/cvmix_tidal_Simmons.F90 - pkg/CVMix-src/src/shared/cvmix_background.F90 - pkg/CVMix-src/src/shared/cvmix_convection.F90 - pkg/CVMix-src/src/shared/cvmix_ddiff.F90 - pkg/CVMix-src/src/shared/cvmix_kinds_and_types.F90 - pkg/CVMix-src/src/shared/cvmix_kpp.F90 - pkg/CVMix-src/src/shared/cvmix_math.F90 - pkg/CVMix-src/src/shared/cvmix_put_get.F90 - pkg/CVMix-src/src/shared/cvmix_shear.F90 - pkg/CVMix-src/src/shared/cvmix_tidal.F90 - pkg/CVMix-src/src/shared/cvmix_utils.F90 - pkg/GSW-Fortran/modules/gsw_mod_baltic_data.f90 - pkg/GSW-Fortran/modules/gsw_mod_error_functions.f90 - pkg/GSW-Fortran/modules/gsw_mod_freezing_poly_coefficients.f90 - pkg/GSW-Fortran/modules/gsw_mod_gibbs_ice_coefficients.f90 - pkg/GSW-Fortran/modules/gsw_mod_kinds.f90 - pkg/GSW-Fortran/modules/gsw_mod_netcdf.f90 - pkg/GSW-Fortran/modules/gsw_mod_saar_data.f90 - pkg/GSW-Fortran/modules/gsw_mod_sp_coefficients.f90 - pkg/GSW-Fortran/modules/gsw_mod_specvol_coefficients.f90 - pkg/GSW-Fortran/modules/gsw_mod_teos10_constants.f90 - pkg/GSW-Fortran/modules/gsw_mod_toolbox.f90 -# pkg/GSW-Fortran/test/gsw_check_functions.f90 -# pkg/GSW-Fortran/test/gsw_poly_check.f90 - pkg/GSW-Fortran/toolbox/gsw_add_barrier.f90 - pkg/GSW-Fortran/toolbox/gsw_add_mean.f90 - pkg/GSW-Fortran/toolbox/gsw_adiabatic_lapse_rate_from_ct.f90 - pkg/GSW-Fortran/toolbox/gsw_adiabatic_lapse_rate_ice.f90 - pkg/GSW-Fortran/toolbox/gsw_alpha.f90 - pkg/GSW-Fortran/toolbox/gsw_alpha_on_beta.f90 - pkg/GSW-Fortran/toolbox/gsw_alpha_wrt_t_exact.f90 - pkg/GSW-Fortran/toolbox/gsw_alpha_wrt_t_ice.f90 - pkg/GSW-Fortran/toolbox/gsw_beta_const_t_exact.f90 - pkg/GSW-Fortran/toolbox/gsw_beta.f90 - pkg/GSW-Fortran/toolbox/gsw_cabbeling.f90 - pkg/GSW-Fortran/toolbox/gsw_c_from_sp.f90 - pkg/GSW-Fortran/toolbox/gsw_chem_potential_water_ice.f90 - pkg/GSW-Fortran/toolbox/gsw_chem_potential_water_t_exact.f90 - pkg/GSW-Fortran/toolbox/gsw_cp_ice.f90 - pkg/GSW-Fortran/toolbox/gsw_ct_first_derivatives.f90 - pkg/GSW-Fortran/toolbox/gsw_ct_first_derivatives_wrt_t_exact.f90 - pkg/GSW-Fortran/toolbox/gsw_ct_freezing_exact.f90 - pkg/GSW-Fortran/toolbox/gsw_ct_freezing.f90 - pkg/GSW-Fortran/toolbox/gsw_ct_freezing_first_derivatives.f90 - pkg/GSW-Fortran/toolbox/gsw_ct_freezing_first_derivatives_poly.f90 - pkg/GSW-Fortran/toolbox/gsw_ct_freezing_poly.f90 - pkg/GSW-Fortran/toolbox/gsw_ct_from_enthalpy_exact.f90 - pkg/GSW-Fortran/toolbox/gsw_ct_from_enthalpy.f90 - pkg/GSW-Fortran/toolbox/gsw_ct_from_entropy.f90 - pkg/GSW-Fortran/toolbox/gsw_ct_from_pt.f90 - pkg/GSW-Fortran/toolbox/gsw_ct_from_rho.f90 - pkg/GSW-Fortran/toolbox/gsw_ct_from_t.f90 - pkg/GSW-Fortran/toolbox/gsw_ct_maxdensity.f90 - pkg/GSW-Fortran/toolbox/gsw_ct_second_derivatives.f90 - pkg/GSW-Fortran/toolbox/gsw_deltasa_atlas.f90 - pkg/GSW-Fortran/toolbox/gsw_deltasa_from_sp.f90 - pkg/GSW-Fortran/toolbox/gsw_dilution_coefficient_t_exact.f90 - pkg/GSW-Fortran/toolbox/gsw_dynamic_enthalpy.f90 - pkg/GSW-Fortran/toolbox/gsw_enthalpy_ct_exact.f90 - pkg/GSW-Fortran/toolbox/gsw_enthalpy_diff.f90 - pkg/GSW-Fortran/toolbox/gsw_enthalpy.f90 - pkg/GSW-Fortran/toolbox/gsw_enthalpy_first_derivatives_ct_exact.f90 - pkg/GSW-Fortran/toolbox/gsw_enthalpy_first_derivatives.f90 - pkg/GSW-Fortran/toolbox/gsw_enthalpy_ice.f90 - pkg/GSW-Fortran/toolbox/gsw_enthalpy_second_derivatives_ct_exact.f90 - pkg/GSW-Fortran/toolbox/gsw_enthalpy_second_derivatives.f90 - pkg/GSW-Fortran/toolbox/gsw_enthalpy_sso_0.f90 - pkg/GSW-Fortran/toolbox/gsw_enthalpy_t_exact.f90 - pkg/GSW-Fortran/toolbox/gsw_entropy_first_derivatives.f90 - pkg/GSW-Fortran/toolbox/gsw_entropy_from_pt.f90 - pkg/GSW-Fortran/toolbox/gsw_entropy_from_t.f90 - pkg/GSW-Fortran/toolbox/gsw_entropy_ice.f90 - pkg/GSW-Fortran/toolbox/gsw_entropy_part.f90 - pkg/GSW-Fortran/toolbox/gsw_entropy_part_zerop.f90 - pkg/GSW-Fortran/toolbox/gsw_entropy_second_derivatives.f90 - pkg/GSW-Fortran/toolbox/gsw_fdelta.f90 - pkg/GSW-Fortran/toolbox/gsw_frazil_properties.f90 - pkg/GSW-Fortran/toolbox/gsw_frazil_properties_potential.f90 - pkg/GSW-Fortran/toolbox/gsw_frazil_properties_potential_poly.f90 - pkg/GSW-Fortran/toolbox/gsw_frazil_ratios_adiabatic.f90 - pkg/GSW-Fortran/toolbox/gsw_frazil_ratios_adiabatic_poly.f90 - pkg/GSW-Fortran/toolbox/gsw_geo_strf_dyn_height.f90 - pkg/GSW-Fortran/toolbox/gsw_geo_strf_dyn_height_pc.f90 - pkg/GSW-Fortran/toolbox/gsw_gibbs.f90 - pkg/GSW-Fortran/toolbox/gsw_gibbs_ice.f90 - pkg/GSW-Fortran/toolbox/gsw_gibbs_ice_part_t.f90 - pkg/GSW-Fortran/toolbox/gsw_gibbs_ice_pt0.f90 - pkg/GSW-Fortran/toolbox/gsw_gibbs_ice_pt0_pt0.f90 - pkg/GSW-Fortran/toolbox/gsw_gibbs_pt0_pt0.f90 - pkg/GSW-Fortran/toolbox/gsw_grav.f90 - pkg/GSW-Fortran/toolbox/gsw_helmholtz_energy_ice.f90 - pkg/GSW-Fortran/toolbox/gsw_hill_ratio_at_sp2.f90 - pkg/GSW-Fortran/toolbox/gsw_ice_fraction_to_freeze_seawater.f90 - pkg/GSW-Fortran/toolbox/gsw_internal_energy.f90 - pkg/GSW-Fortran/toolbox/gsw_internal_energy_ice.f90 - pkg/GSW-Fortran/toolbox/gsw_ipv_vs_fnsquared_ratio.f90 - pkg/GSW-Fortran/toolbox/gsw_kappa_const_t_ice.f90 - pkg/GSW-Fortran/toolbox/gsw_kappa.f90 - pkg/GSW-Fortran/toolbox/gsw_kappa_ice.f90 - pkg/GSW-Fortran/toolbox/gsw_kappa_t_exact.f90 - pkg/GSW-Fortran/toolbox/gsw_latentheat_evap_ct.f90 - pkg/GSW-Fortran/toolbox/gsw_latentheat_evap_t.f90 - pkg/GSW-Fortran/toolbox/gsw_latentheat_melting.f90 - pkg/GSW-Fortran/toolbox/gsw_linear_interp_sa_ct.f90 - pkg/GSW-Fortran/toolbox/gsw_melting_ice_equilibrium_sa_ct_ratio.f90 - pkg/GSW-Fortran/toolbox/gsw_melting_ice_equilibrium_sa_ct_ratio_poly.f90 - pkg/GSW-Fortran/toolbox/gsw_melting_ice_into_seawater.f90 - pkg/GSW-Fortran/toolbox/gsw_melting_ice_sa_ct_ratio.f90 - pkg/GSW-Fortran/toolbox/gsw_melting_ice_sa_ct_ratio_poly.f90 - pkg/GSW-Fortran/toolbox/gsw_melting_seaice_equilibrium_sa_ct_ratio.f90 - pkg/GSW-Fortran/toolbox/gsw_melting_seaice_equilibrium_sa_ct_ratio_poly.f90 - pkg/GSW-Fortran/toolbox/gsw_melting_seaice_into_seawater.f90 - pkg/GSW-Fortran/toolbox/gsw_melting_seaice_sa_ct_ratio.f90 - pkg/GSW-Fortran/toolbox/gsw_melting_seaice_sa_ct_ratio_poly.f90 - pkg/GSW-Fortran/toolbox/gsw_nsquared.f90 - pkg/GSW-Fortran/toolbox/gsw_pot_enthalpy_from_pt_ice.f90 - pkg/GSW-Fortran/toolbox/gsw_pot_enthalpy_from_pt_ice_poly.f90 - pkg/GSW-Fortran/toolbox/gsw_pot_enthalpy_ice_freezing.f90 - pkg/GSW-Fortran/toolbox/gsw_pot_enthalpy_ice_freezing_first_derivatives.f90 - pkg/GSW-Fortran/toolbox/gsw_pot_enthalpy_ice_freezing_first_derivatives_poly.f90 - pkg/GSW-Fortran/toolbox/gsw_pot_enthalpy_ice_freezing_poly.f90 - pkg/GSW-Fortran/toolbox/gsw_pot_rho_t_exact.f90 - pkg/GSW-Fortran/toolbox/gsw_pressure_coefficient_ice.f90 - pkg/GSW-Fortran/toolbox/gsw_pressure_freezing_ct.f90 - pkg/GSW-Fortran/toolbox/gsw_pt0_cold_ice_poly.f90 - pkg/GSW-Fortran/toolbox/gsw_pt0_from_t.f90 - pkg/GSW-Fortran/toolbox/gsw_pt0_from_t_ice.f90 - pkg/GSW-Fortran/toolbox/gsw_pt_first_derivatives.f90 - pkg/GSW-Fortran/toolbox/gsw_pt_from_ct.f90 - pkg/GSW-Fortran/toolbox/gsw_pt_from_entropy.f90 - pkg/GSW-Fortran/toolbox/gsw_pt_from_pot_enthalpy_ice.f90 - pkg/GSW-Fortran/toolbox/gsw_pt_from_pot_enthalpy_ice_poly_dh.f90 - pkg/GSW-Fortran/toolbox/gsw_pt_from_pot_enthalpy_ice_poly.f90 - pkg/GSW-Fortran/toolbox/gsw_pt_from_t.f90 - pkg/GSW-Fortran/toolbox/gsw_pt_from_t_ice.f90 - pkg/GSW-Fortran/toolbox/gsw_pt_second_derivatives.f90 - pkg/GSW-Fortran/toolbox/gsw_rho_alpha_beta.f90 - pkg/GSW-Fortran/toolbox/gsw_rho.f90 - pkg/GSW-Fortran/toolbox/gsw_rho_first_derivatives.f90 - pkg/GSW-Fortran/toolbox/gsw_rho_first_derivatives_wrt_enthalpy.f90 - pkg/GSW-Fortran/toolbox/gsw_rho_ice.f90 - pkg/GSW-Fortran/toolbox/gsw_rho_second_derivatives.f90 - pkg/GSW-Fortran/toolbox/gsw_rho_second_derivatives_wrt_enthalpy.f90 - pkg/GSW-Fortran/toolbox/gsw_rho_t_exact.f90 - pkg/GSW-Fortran/toolbox/gsw_rr68_interp_sa_ct.f90 - pkg/GSW-Fortran/toolbox/gsw_saar.f90 - pkg/GSW-Fortran/toolbox/gsw_saar_init.f90 - pkg/GSW-Fortran/toolbox/gsw_sa_freezing_estimate.f90 - pkg/GSW-Fortran/toolbox/gsw_sa_freezing_from_ct.f90 - pkg/GSW-Fortran/toolbox/gsw_sa_freezing_from_ct_poly.f90 - pkg/GSW-Fortran/toolbox/gsw_sa_freezing_from_t.f90 - pkg/GSW-Fortran/toolbox/gsw_sa_freezing_from_t_poly.f90 - pkg/GSW-Fortran/toolbox/gsw_sa_from_rho.f90 - pkg/GSW-Fortran/toolbox/gsw_sa_from_sp_baltic.f90 - pkg/GSW-Fortran/toolbox/gsw_sa_from_sp.f90 - pkg/GSW-Fortran/toolbox/gsw_sa_from_sstar.f90 - pkg/GSW-Fortran/toolbox/gsw_sa_p_inrange.f90 - pkg/GSW-Fortran/toolbox/gsw_seaice_fraction_to_freeze_seawater.f90 - pkg/GSW-Fortran/toolbox/gsw_sigma0.f90 - pkg/GSW-Fortran/toolbox/gsw_sigma1.f90 - pkg/GSW-Fortran/toolbox/gsw_sigma2.f90 - pkg/GSW-Fortran/toolbox/gsw_sigma3.f90 - pkg/GSW-Fortran/toolbox/gsw_sigma4.f90 - pkg/GSW-Fortran/toolbox/gsw_sound_speed.f90 - pkg/GSW-Fortran/toolbox/gsw_sound_speed_ice.f90 - pkg/GSW-Fortran/toolbox/gsw_sound_speed_t_exact.f90 - pkg/GSW-Fortran/toolbox/gsw_specvol_alpha_beta.f90 - pkg/GSW-Fortran/toolbox/gsw_specvol_anom_standard.f90 - pkg/GSW-Fortran/toolbox/gsw_specvol.f90 - pkg/GSW-Fortran/toolbox/gsw_specvol_first_derivatives.f90 - pkg/GSW-Fortran/toolbox/gsw_specvol_first_derivatives_wrt_enthalpy.f90 - pkg/GSW-Fortran/toolbox/gsw_specvol_ice.f90 - pkg/GSW-Fortran/toolbox/gsw_specvol_second_derivatives.f90 - pkg/GSW-Fortran/toolbox/gsw_specvol_second_derivatives_wrt_enthalpy.f90 - pkg/GSW-Fortran/toolbox/gsw_specvol_sso_0.f90 - pkg/GSW-Fortran/toolbox/gsw_specvol_t_exact.f90 - pkg/GSW-Fortran/toolbox/gsw_sp_from_c.f90 - pkg/GSW-Fortran/toolbox/gsw_sp_from_sa_baltic.f90 - pkg/GSW-Fortran/toolbox/gsw_sp_from_sa.f90 - pkg/GSW-Fortran/toolbox/gsw_sp_from_sk.f90 - pkg/GSW-Fortran/toolbox/gsw_sp_from_sr.f90 - pkg/GSW-Fortran/toolbox/gsw_sp_from_sstar.f90 - pkg/GSW-Fortran/toolbox/gsw_spiciness0.f90 - pkg/GSW-Fortran/toolbox/gsw_spiciness1.f90 - pkg/GSW-Fortran/toolbox/gsw_spiciness2.f90 - pkg/GSW-Fortran/toolbox/gsw_sr_from_sp.f90 - pkg/GSW-Fortran/toolbox/gsw_sstar_from_sa.f90 - pkg/GSW-Fortran/toolbox/gsw_sstar_from_sp.f90 - pkg/GSW-Fortran/toolbox/gsw_t_deriv_chem_potential_water_t_exact.f90 - pkg/GSW-Fortran/toolbox/gsw_t_freezing_exact.f90 - pkg/GSW-Fortran/toolbox/gsw_t_freezing.f90 - pkg/GSW-Fortran/toolbox/gsw_t_freezing_first_derivatives.f90 - pkg/GSW-Fortran/toolbox/gsw_t_freezing_first_derivatives_poly.f90 - pkg/GSW-Fortran/toolbox/gsw_t_freezing_poly.f90 - pkg/GSW-Fortran/toolbox/gsw_t_from_ct.f90 - pkg/GSW-Fortran/toolbox/gsw_t_from_pt0_ice.f90 - pkg/GSW-Fortran/toolbox/gsw_thermobaric.f90 - pkg/GSW-Fortran/toolbox/gsw_turner_rsubrho.f90 - pkg/GSW-Fortran/toolbox/gsw_util_indx.f90 - pkg/GSW-Fortran/toolbox/gsw_util_interp1q_int.f90 - pkg/GSW-Fortran/toolbox/gsw_util_sort_real.f90 - pkg/GSW-Fortran/toolbox/gsw_util_xinterp1.f90 - pkg/GSW-Fortran/toolbox/gsw_z_from_p.f90 -# choose above set MOM6_INFRA interface - config_src/infra/${MOM6_INFRA}/MOM_coms_infra.F90 - config_src/infra/${MOM6_INFRA}/MOM_constants.F90 - config_src/infra/${MOM6_INFRA}/MOM_couplertype_infra.F90 - config_src/infra/${MOM6_INFRA}/MOM_cpu_clock_infra.F90 - config_src/infra/${MOM6_INFRA}/MOM_data_override_infra.F90 - config_src/infra/${MOM6_INFRA}/MOM_diag_manager_infra.F90 - config_src/infra/${MOM6_INFRA}/MOM_domain_infra.F90 - config_src/infra/${MOM6_INFRA}/MOM_ensemble_manager_infra.F90 - config_src/infra/${MOM6_INFRA}/MOM_error_infra.F90 - config_src/infra/${MOM6_INFRA}/MOM_interp_infra.F90 - config_src/infra/${MOM6_INFRA}/MOM_io_infra.F90 - config_src/infra/${MOM6_INFRA}/MOM_time_manager.F90 -) - -list( APPEND MOM6_SRCS - config_src/drivers/FMS_cap/MOM_surface_forcing_gfdl.F90 - config_src/drivers/FMS_cap/ocean_model_MOM.F90 - # oda - config_src/external/ODA_hooks/kdtree.f90 - config_src/external/ODA_hooks/ocean_da_core.F90 - config_src/external/ODA_hooks/ocean_da_types.F90 - config_src/external/ODA_hooks/write_ocean_obs.F90 - # tracer - config_src/external/GFDL_ocean_BGC/FMS_coupler_util.F90 - config_src/external/GFDL_ocean_BGC/generic_tracer.F90 - config_src/external/GFDL_ocean_BGC/generic_tracer_utils.F90 - # drifters-particles - config_src/external/drifters/MOM_particles.F90 - config_src/external/drifters/MOM_particles_types.F90 -) - - -esma_mepo_style(mom6 MOM6_rel_path REL_PATH ..) -set (MOM6_path ${CMAKE_CURRENT_SOURCE_DIR}/${MOM6_rel_path}) - -set (SRCS) -foreach (file ${MOM6_SRCS}) - list (APPEND SRCS ${MOM6_path}/${file}) -endforeach () - -esma_add_library (${this} - SRCS ${SRCS} - DEPENDENCIES fms_r8 - INCLUDES - $ -# choose above set MOM6_infra interface - $ - $ - TYPE SHARED -) - -target_compile_definitions (${this} PRIVATE use_netCDF) - -# This 'resets' the Intel DEBUG flags for MOM6. The stock debug flags use -# 'all,noarg_temp_created' which seem to be too aggressive for FMS/MOM6. This -# moves them back to the 'bounds,uninit' GEOS used to build with. -if (CMAKE_Fortran_COMPILER_ID MATCHES "Intel" AND CMAKE_BUILD_TYPE MATCHES Debug) - string(REPLACE "all,noarg_temp_created" "bounds,uninit" _tmp "${GEOS_Fortran_FLAGS_DEBUG}") - set (CMAKE_Fortran_FLAGS_DEBUG "${_tmp}") -endif () - -# Specs for r8 version -string(REPLACE " " ";" tmp ${FREAL8}) -foreach (flag ${tmp}) - target_compile_options (${this} PRIVATE $<$:${flag}>) -endforeach () diff --git a/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM_GEOS5PlugMod/.gitignore b/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM_GEOS5PlugMod/.gitignore deleted file mode 100644 index ece5d8b7c..000000000 --- a/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM_GEOS5PlugMod/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -/@mom -/mom -/mom@ diff --git a/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM_GEOS5PlugMod/CMakeLists.txt b/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM_GEOS5PlugMod/CMakeLists.txt deleted file mode 100644 index 487767223..000000000 --- a/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM_GEOS5PlugMod/CMakeLists.txt +++ /dev/null @@ -1,22 +0,0 @@ -esma_set_this () - -set (SRCS - MOM_GEOS5PlugMod.F90 - ) - -if (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/seawater.F90) - list (APPEND SRCS seawater.F90) -endif () - -esma_add_library (${this} - SRCS ${SRCS} - SUBCOMPONENTS @mom - DEPENDENCIES MAPL - TYPE SHARED - ) - -# Specs for r8 version -string(REPLACE " " ";" tmp ${FREAL8}) -foreach (flag ${tmp}) - target_compile_options (${this} PRIVATE $<$:${flag}>) -endforeach () diff --git a/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM_GEOS5PlugMod/MOM_GEOS5PlugMod.F90 b/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM_GEOS5PlugMod/MOM_GEOS5PlugMod.F90 deleted file mode 100644 index b47d047b6..000000000 --- a/GEOSogcm_GridComp/GEOS_OceanGridComp/MOM_GEOS5PlugMod/MOM_GEOS5PlugMod.F90 +++ /dev/null @@ -1,2156 +0,0 @@ -! $Id$ - -#include "MAPL_Generic.h" - -! GEOS-5 default real kind - -#define G5KIND 4 -#define REAL_ real(kind=G5KIND) - -module MOM_GEOS5PlugMod - -!BOP -! !MODULE: MOM5_GEOS5PlugMod -- wrapper for MOM5. - -!DESCRIPTION: -! A MAPL/ESMF Gridded Component that acts as a wrapper for MOM. -! It uses ESMF AND MAPL. It has heavy dependencies on FMS and MOM. -! -! This should be built like MOM, so that its default reals -! are the same as MOM's. It may also be an adequate plug for HIM. -! -! It does not use the configuration. -! Its time step is the clocks time step. -! Each run invocation runs one time step. -! - -!YV: Notes: MLD here is not MLD, but boundary layer depth (hblt) from KPP -! Barotropic stream function (PSI) is not filled. These need to be fixed - -!USES: - use ESMF - use MAPL - use MAPL_ConstantsMod, only: MAPL_TICE - -! These MOM dependencies are all we are currently using. - - use constants_mod, only: constants_init - use diag_manager_mod, only: diag_manager_init, diag_manager_end - use field_manager_mod, only: field_manager_init, field_manager_end - - use fms_mod, only: fms_init, fms_end - use fms_io_mod, only: fms_io_exit - - use mpp_domains_mod, only: domain2d, mpp_update_domains - - use time_manager_mod, only: set_calendar_type, time_type - use time_manager_mod, only: set_time, set_date - use time_manager_mod, only: JULIAN - use time_manager_mod, only: operator( + ) - - use ocean_model_mod, only: ocean_model_init, update_ocean_model, ocean_model_end, ocean_model_restart - use ocean_types_mod, only: ocean_public_type, ice_ocean_boundary_type - -! MAT ocean_state_type renamed due to GNU build issue with simultaneous MOM5/MOM6 model - use ocean_model_mod, only: get_ocean_domain, mom5_ocean_state_type - -! mjs added these two - - use ocean_model_mod, only: mom4_get_dimensions - use ocean_model_mod, only: ocean_model_data_get - use ocean_model_mod, only: mom4_get_latlon_UVsurf, mom4_get_UVsurfB - use ocean_model_mod, only: mom4_get_thickness, mom4_get_tsurf, mom4_get_ssurf - use ocean_model_mod, only: mom4_get_pointers_to_variables, mom4_get_streamfunction, mom4_get_mld - use ocean_model_mod, only: mom4_get_prog_tracer_index, mom4_put_prog_tracer, mom4_get_prog_tracer - use ocean_model_mod, only: mom4_get_diag_tracer_index, mom4_get_diag_tracer - use ocean_model_mod, only: mom4_get_temperature_index, mom4_get_salinity_index, & - mom4_get_uv, mom4_get_latlon_uv, mom4_get_density - use ocean_model_mod, only: mom4_get_3D_tmask, mom4_set_swheat, mom4_set_swheat_fr - -! This was added for a to b; Balaji was reluctant to expose ice_grid_mod. - - use mpp_parameter_mod, only: AGRID, SCALAR_PAIR - use mpp_io_mod, only: MPP_RDONLY, MPP_NETCDF - use mpp_io_mod, only: mpp_open, mpp_close - use fms_mod, only: read_data - -! Nothing on the MOM side is visible through this module. - - implicit none - private - - !PUBLIC MEMBER FUNCTIONS: - public :: SetServices -!EOP - -! These are the MOM-side bulletin boards, where things are in -! MOM's precision and the B grid - - type MOM_MAPL_Type - type(ocean_public_type) :: Ocean - type(ice_ocean_boundary_type) :: Ice_ocean_boundary - end type MOM_MAPL_Type - - type MOM_MAPLWrap_Type - type(MOM_MAPL_Type), pointer :: Ptr - end type MOM_MAPLWrap_Type - - logical :: DUAL_OCEAN - -contains - - -!BOP - -! !IROUTINE: SetServices -- Sets ESMF services for this component - -! !INTERFACE: - - subroutine SetServices ( GC, RC ) - -! !ARGUMENTS: - - type(ESMF_GridComp), intent(INOUT) :: GC ! gridded component - integer, optional :: RC ! return code - -! !DESCRIPTION: The SetServices for the PhysicsGcm GC needs to register its -! Initialize and Run. It uses the MAPL_Generic construct for defining -! state specs and couplings among its children. In addition, it creates the -! children GCs (AGCM and OGCM) and runs their -! respective SetServices. - -!EOP - -!============================================================================= -! -! ErrLog Variables - - character(len=ESMF_MAXSTR) :: IAm - integer :: STATUS - character(len=ESMF_MAXSTR) :: COMP_NAME - -! Locals - type (MAPL_MetaComp), pointer :: MAPL - integer :: iDUAL_OCEAN - -!============================================================================= - -! Begin... - -! Get my name and set-up traceback handle -! --------------------------------------- - - Iam = 'SetServices' - call ESMF_GridCompGet( GC, NAME=COMP_NAME, RC=STATUS ) - VERIFY_(STATUS) - Iam = trim(COMP_NAME) // Iam - -! Get the MAPL object -! ------------------- - - call MAPL_GetObjectFromGC ( GC, MAPL, RC=STATUS) - VERIFY_(STATUS) - - call MAPL_GetResource(MAPL, iDUAL_OCEAN, 'DUAL_OCEAN:', default=0, RC=STATUS ) - DUAL_OCEAN = iDUAL_OCEAN /= 0 - - -!BOS - -! !IMPORT STATE: - - call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'TAUX', & - LONG_NAME = 'Agrid_eastward_stress_on_ocean', & - UNITS = 'N m-2', & - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'TAUY', & - LONG_NAME = 'Agrid_northward_stress_on_ocean', & - UNITS = 'N m-2', & - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'PS', & - LONG_NAME = 'Surface Atmospheric Pressure', & - UNITS = 'Pa', & - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'PICE', & - LONG_NAME = 'pressure due to ice weight', & - UNITS = 'Pa', & - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'SWHEAT', & - LONG_NAME = 'solar_heating_rate', & - UNITS = 'W m-2', & - DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, & - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddImportSpec(GC ,& - LONG_NAME = 'surface_net_downward_longwave_flux',& - UNITS = 'W m-2' ,& - SHORT_NAME = 'LWFLX' ,& - DIMS = MAPL_DimsHorzOnly ,& - VLOCATION = MAPL_VLocationNone ,& - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddImportSpec(GC, & - LONG_NAME = 'upward_sensible_heat_flux' ,& - UNITS = 'W m-2' ,& - SHORT_NAME = 'SHFLX' ,& - DIMS = MAPL_DimsHorzOnly ,& - VLOCATION = MAPL_VLocationNone ,& - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddImportSpec(GC, & - LONG_NAME = 'evaporation' ,& - UNITS = 'kg m-2 s-1' ,& - SHORT_NAME = 'QFLUX' ,& - DIMS = MAPL_DimsHorzOnly ,& - VLOCATION = MAPL_VLocationNone ,& - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'RAIN', & - LONG_NAME = 'ocean_rainfall',& - UNITS = 'kg m-2 s-1', & - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'SNOW', & - LONG_NAME = 'ocean_snowfall',& - UNITS = 'kg m-2 s-1', & - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'SFLX', & - LONG_NAME = 'salt_flux_from_sea_ice_to_ocean', & - UNITS = 'kg m-2 s-1', & - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'PENUVR', & - LONG_NAME = 'net_downward_penetrating_direct_UV_flux', & - UNITS = 'W m-2', & - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'PENPAR', & - LONG_NAME = 'net_downward_penetrating_direct_PAR_flux', & - UNITS = 'W m-2', & - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'PENUVF', & - LONG_NAME = 'net_downward_penetrating_diffuse_UV_flux', & - UNITS = 'W m-2', & - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'PENPAF', & - LONG_NAME = 'net_downward_penetrating_diffuse_PAR_flux', & - UNITS = 'W m-2', & - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddImportSpec(GC ,& - LONG_NAME = 'net_surface_downwelling_nir_beam_flux',& - UNITS = 'W m-2' ,& - SHORT_NAME = 'DRNIR' ,& - DIMS = MAPL_DimsHorzOnly ,& - VLOCATION = MAPL_VLocationNone ,& - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddImportSpec(GC ,& - LONG_NAME = 'net_surface_downwelling_nir_diffuse_flux',& - UNITS = 'W m-2' ,& - SHORT_NAME = 'DFNIR' ,& - DIMS = MAPL_DimsHorzOnly ,& - VLOCATION = MAPL_VLocationNone ,& - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'TR', & - LONG_NAME = 'tracer_mixing_ratios', & - UNITS = '1', & - DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, & - DATATYPE = MAPL_BundleItem, & - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddImportSpec(GC, & - LONG_NAME = 'river_discharge_at_ocean_points',& - UNITS = 'kg m-2 s-1' ,& - SHORT_NAME = 'DISCHARGE' ,& - DIMS = MAPL_DimsHorzOnly ,& - VLOCATION = MAPL_VLocationNone ,& - RC=STATUS ) - VERIFY_(STATUS) - - - call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'STROCNXB', & - LONG_NAME = 'x_stress_at_base_of_ice_weighted_by_aiu', & - UNITS = 'N m-2', & - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'STROCNYB', & - LONG_NAME = 'y_stress_at_base_of_ice_weighted_by_aiu', & - UNITS = 'N m-2', & - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & - RC=STATUS ) - - VERIFY_(STATUS) - - call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'AICEU', & - LONG_NAME = 'ice_concentration_of_grid_cell_Bgrid', & - UNITS = '1', & - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & - RC=STATUS ) - VERIFY_(STATUS) - - if (dual_ocean) then - call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'DEL_TEMP', & - LONG_NAME = 'temperature correction to top level MOM (Tsst-Tmom', & - UNITS = 'K', & - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & - RC=STATUS ) - VERIFY_(STATUS) - end if - -! !EXPORT STATE: - -! Run1 exports - - call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'UW', & - LONG_NAME = 'surface_Agrid_eastward_velocity', & - UNITS = 'm s-1 ', & - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'VW', & - LONG_NAME = 'surface_Agrid_northward_velocity', & - UNITS = 'm s-1 ', & - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'UWB', & - LONG_NAME = 'surface_Bgrid_X_velocity', & - UNITS = 'm s-1 ', & - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'VWB', & - LONG_NAME = 'surface_Bgrid_Y_velocity', & - UNITS = 'm s-1 ', & - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'TW', & - LONG_NAME = 'surface_temperature', & - UNITS = 'K', & - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'SW', & - LONG_NAME = 'surface_salinity', & - UNITS = 'psu', & - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'MOM_3D_MASK', & - LONG_NAME = 'Mom4_ocean_mask_at_t-points', & - UNITS = '1', & - DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, & - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'AREA', & - LONG_NAME = 'Mom4_ocean_area_at_t-points', & - UNITS = 'm+2', & - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & - RC=STATUS ) - VERIFY_(STATUS) - - - call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'SSH', & - LONG_NAME = 'sea_level_height', & - UNITS = 'm', & - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'SLV', & - LONG_NAME = 'sea_level_with_ice_loading', & - UNITS = 'm', & - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'FRZMLT', & - LONG_NAME = 'freeze_melt_potential', & - UNITS = 'W m-2', & - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & - RC=STATUS ) - VERIFY_(STATUS) - -! Diagnostic exports - - - call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'DH', & - LONG_NAME = 'layer_thickness', & - UNITS = 'm', & - DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, & - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'RHO', & - LONG_NAME = 'density', & - UNITS = 'kg m-3', & - DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, & - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'MASSCELLO', & - LONG_NAME = 'mass_per_unit_area', & - UNITS = 'kg m-2', & - DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, & - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'HC', & - LONG_NAME = 'heat_content', & - UNITS = 'J m-2', & - DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, & - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'U', & - LONG_NAME = 'eastward_current', & - UNITS = 'm s-1', & - DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, & - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'V', & - LONG_NAME = 'northward_current', & - UNITS = 'm s-1', & - DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, & - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'UX', & - LONG_NAME = 'x_current', & - UNITS = 'm s-1', & - DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, & - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'VX', & - LONG_NAME = 'y_current', & - UNITS = 'm s-1', & - DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, & - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'T', & - LONG_NAME = 'potential_temperature', & - UNITS = 'K', & - DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, & - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'TCON', & - LONG_NAME = 'conservative_temperature', & - UNITS = 'K', & - DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, & - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'S', & - LONG_NAME = 'salinity', & - UNITS = 'psu', & - DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, & - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'WMO', & - LONG_NAME = 'upward_mass_transport', & - UNITS = 'tonne s-1', & - DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, & - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'WMOSQ', & - LONG_NAME = 'upward_mass_transport_squared', & - UNITS = 'tonne2 s-2', & - DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, & - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'TOSSQ', & - LONG_NAME = 'surface_temperature_squared', & - UNITS = 'K2', & - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'PBO', & - LONG_NAME = 'pressure_at_sea_floor', & - UNITS = 'dbar', & - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'OMLDAMAX', & - LONG_NAME = 'maximum_mixed_layer_thickness', & - UNITS = 'm', & - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'DEPTH', & - LONG_NAME = 'layer_depth', & - UNITS = 'm', & - DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, & - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'MLD', & - LONG_NAME = 'mixed_layer_depth', & - UNITS = 'm', & - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'PSI', & - LONG_NAME = 'barotropic_streamfunction', & - UNITS = 'kg s-1', & - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'SWFRAC', & - LONG_NAME = 'shortwave_fractional_decay', & - UNITS = '1', & - DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, & - RC=STATUS ) - VERIFY_(STATUS) - -!EOS - -! Set the Initialize, Run, Finalize entry points -! ---------------------------------------------- - - call MAPL_GridCompSetEntryPoint ( GC, ESMF_METHOD_INITIALIZE, Initialize, RC=status) - VERIFY_(STATUS) - call MAPL_GridCompSetEntryPoint ( GC, ESMF_METHOD_RUN, Run, RC=status) - VERIFY_(STATUS) - call MAPL_GridCompSetEntryPoint ( GC, ESMF_METHOD_FINALIZE, Finalize, RC=status) - VERIFY_(STATUS) - call MAPL_GridCompSetEntryPoint ( GC, ESMF_METHOD_WRITERESTART, Record, RC=status) - VERIFY_(STATUS) - if (dual_ocean) then - call MAPL_GridCompSetEntryPoint ( GC, ESMF_METHOD_RUN, Run2, RC=status) - VERIFY_(STATUS) - end if - -! Set the Profiling timers -! ------------------------ - - call MAPL_TimerAdd(GC, name="INITIALIZE" ,RC=STATUS) - VERIFY_(STATUS) - call MAPL_TimerAdd(GC, name="RUN" ,RC=STATUS) - VERIFY_(STATUS) - call MAPL_TimerAdd(GC, name="RUN2" ,RC=STATUS) - VERIFY_(STATUS) - call MAPL_TimerAdd(GC, name="FINALIZE" ,RC=STATUS) - VERIFY_(STATUS) - -! Generic SetServices -! ------------------- - - call MAPL_GenericSetServices ( GC, RC=STATUS ) - VERIFY_(STATUS) - -! All done -! -------- - - RETURN_(ESMF_SUCCESS) - - end subroutine SetServices - - -!BOP - -! !IROUTINE: INITIALIZE -- Initialize method for ExternalOcean wrapper - -! !INTERFACE: - - subroutine Initialize ( GC, IMPORT, EXPORT, CLOCK, RC ) - -! !ARGUMENTS: - - type(ESMF_GridComp), intent(INOUT) :: GC ! Gridded component - type(ESMF_State), intent(INOUT) :: IMPORT ! Import state - type(ESMF_State), intent(INOUT) :: EXPORT ! Export state - type(ESMF_Clock), intent(INOUT) :: CLOCK ! The clock - integer, optional, intent( OUT) :: RC ! Error code: - -!EOP - -! ErrLog Variables - - character(len=ESMF_MAXSTR) :: IAm - integer :: STATUS - character(len=ESMF_MAXSTR) :: COMP_NAME - -! Locals - - integer :: FMSlayout(2) - integer :: counts(7) - integer :: Comm - integer :: isc,iec,jsc,jec - integer :: IM, JM, LM - integer :: IMW, JMW - integer :: YEAR,MONTH,DAY,HR,MN,SC - -! Locals with MOM types - - type(time_type) :: Time - type(time_type) :: DT - -! Locals with ESMF and MAPL types - - type(ESMF_VM) :: VM - type (MAPL_MetaComp), pointer :: MAPL - type(ESMF_Grid) :: Grid - type(ESMF_Time) :: MyTime - type(ESMF_TimeInterval) :: TINT - -! Locals - - type(ice_ocean_boundary_type), pointer :: boundary - type(ocean_public_type), pointer :: Ocean - type(mom5_ocean_state_type), pointer :: Ocean_State - type(MOM_MAPL_Type), pointer :: MOM_MAPL_internal_state - type(MOM_MAPLWrap_Type) :: wrap - - integer :: DT_OCEAN - - REAL_, pointer :: TW (:,:) - REAL_, pointer :: SW (:,:) - REAL_, pointer :: OMLDAMAX (:,:) - REAL_, pointer :: DH (:,:,:) - REAL_, pointer :: AREA(:,:) - REAL_, pointer :: MASK(:,:,:) - - real, allocatable :: Tmp3(:,:,:), Tmp2(:,:) - - REAL_, pointer, dimension(:, :) :: mld, psi, sea_lev, ssh, pbo - REAL_, pointer, dimension(:, :, :) :: TL, SL - integer :: i,j - -! Begin... - -! Get the target components name and set-up traceback handle. -! ----------------------------------------------------------- - - Iam = "Initialize" - call ESMF_GridCompGet( gc, NAME=comp_name, RC=status ) - VERIFY_(STATUS) - Iam = trim(comp_name) // trim(Iam) - - -! Get my internal MAPL_Generic state -!----------------------------------- - - call MAPL_GetObjectFromGC ( GC, MAPL, RC=STATUS) - VERIFY_(STATUS) - -! Profilers -!---------- - - call MAPL_TimerOn(MAPL,"TOTAL" ) - call MAPL_TimerOn(MAPL,"INITIALIZE") - -! Get the grid, configuration -!---------------------------- - - call ESMF_GridCompGet( GC, grid=Grid, RC=status ) - VERIFY_(STATUS) - -! Get the layout from the grid -!----------------------------- - - call ESMF_VMGetCurrent(VM, rc=STATUS) - VERIFY_(STATUS) - -! Get the dimensions of the DElayout -!----------------------------------- - - call MAPL_Get(MAPL, NX=FMSlayout(1), NY=FMSlayout(2), RC=STATUS ) - VERIFY_(STATUS) - -! Set the time for MOM -!--------------------- - - call ESMF_ClockGet(CLOCK, currTIME=MyTime, TimeStep=TINT, RC=STATUS) - VERIFY_(STATUS) - - call ESMF_TimeGet (MyTime, & - YY=YEAR, MM=MONTH, DD=DAY, & - H=HR, M =MN, S =SC, & - RC=STATUS ) - VERIFY_(STATUS) - - CALL ESMF_TimeIntervalGet(TINT, S=DT_OCEAN, RC=status) - VERIFY_(status) - -! Allocate this instance of the internal state and put it in wrapper. -! ------------------------------------------------------------------- - - allocate( MOM_MAPL_internal_state, stat=status ) - VERIFY_(STATUS) - - wrap%ptr => MOM_MAPL_internal_state - -! Save pointer to the wrapped internal state in the GC -! ---------------------------------------------------- - - call ESMF_UserCompSetInternalState ( GC, 'MOM_MAPL_state',wrap,status ) - VERIFY_(STATUS) - - Boundary => MOM_MAPL_internal_state%Ice_ocean_boundary - Ocean => MOM_MAPL_internal_state%Ocean - -! FMS initialization using the communicator from the VM -!------------------------------------------------------ - - call ESMF_VMGet(VM, mpiCommunicator=Comm, rc=STATUS) - VERIFY_(STATUS) - - call fms_init(Comm) - -! Do MOM stuff -!------------- - - call constants_init - call field_manager_init - call diag_manager_init - call set_calendar_type (JULIAN ) - DT = set_time (DT_OCEAN, 0) - Time = set_date (YEAR,MONTH,DAY,HR,MN,SC) - call ocean_model_init (Ocean, Ocean_state, Time, Time) - -! Check local sizes of two horizontal dimensions -!----------------------------------------------- - - call mom4_get_dimensions(isc, iec, jsc, jec, nk_out=LM) - call MAPL_GridGet(GRID, localCellCountPerDim=counts, RC=status) - VERIFY_(STATUS) - - IM=iec-isc+1 - JM=jec-jsc+1 - - ASSERT_(counts(1)==IM) - ASSERT_(counts(2)==JM) - -! Allocate MOM's flux bulletin board. -!------------------------------------ - - allocate ( Boundary% u_flux (isc:iec,jsc:jec), & - Boundary% v_flux (isc:iec,jsc:jec), & - Boundary% t_flux (isc:iec,jsc:jec), & - Boundary% q_flux (isc:iec,jsc:jec), & - Boundary% salt_flux (isc:iec,jsc:jec), & - Boundary% lw_flux (isc:iec,jsc:jec), & - Boundary% sw_flux_vis_dir (isc:iec,jsc:jec), & - Boundary% sw_flux_vis_dif (isc:iec,jsc:jec), & - Boundary% sw_flux_nir_dir (isc:iec,jsc:jec), & - Boundary% sw_flux_nir_dif (isc:iec,jsc:jec), & - Boundary% lprec (isc:iec,jsc:jec), & - Boundary% fprec (isc:iec,jsc:jec), & - Boundary% runoff (isc:iec,jsc:jec), & - Boundary% calving (isc:iec,jsc:jec), & - Boundary% runoff_hflx (isc:iec,jsc:jec), & - Boundary% calving_hflx (isc:iec,jsc:jec), & - Boundary% p (isc:iec,jsc:jec), & - stat=STATUS ) - VERIFY_(STATUS) - -! Clear the fluxes we will not be using -!-------------------------------------- - - Boundary%u_flux = 0.0 - Boundary%v_flux = 0.0 - Boundary%t_flux = 0.0 - Boundary%q_flux = 0.0 - Boundary%salt_flux = 0.0 - Boundary%lw_flux = 0.0 - Boundary%sw_flux_vis_dir = 0.0 - Boundary%sw_flux_vis_dif = 0.0 - Boundary%sw_flux_nir_dir = 0.0 - Boundary%sw_flux_nir_dif = 0.0 - Boundary%lprec = 0.0 - Boundary%fprec = 0.0 - Boundary%runoff = 0.0 - Boundary%calving = 0.0 - Boundary%runoff_hflx = 0.0 - Boundary%calving_hflx = 0.0 - Boundary%p = 0.0 - -! Profilers -! --------- - - call MAPL_TimerOff(MAPL,"INITIALIZE") - call MAPL_TimerOff(MAPL,"TOTAL" ) - -! Generic initialize -! ------------------ - - call MAPL_GenericInitialize( GC, IMPORT, EXPORT, CLOCK, RC=status ) - VERIFY_(STATUS) - -! Make sure exports neede by the parent prior to our run call are initialized -!---------------------------------------------------------------------------- - - call MAPL_GetPointer(EXPORT, TW, 'TW' , alloc=.true., RC=STATUS) - VERIFY_(STATUS) - call MAPL_GetPointer(EXPORT, SW, 'SW' , alloc=.true., RC=STATUS) - VERIFY_(STATUS) - call MAPL_GetPointer(EXPORT, DH, 'DH' , alloc=.true., RC=STATUS) - VERIFY_(STATUS) - call MAPL_GetPointer(EXPORT, MASK, 'MOM_3D_MASK', alloc=.true., RC=STATUS) - VERIFY_(STATUS) - call MAPL_GetPointer(EXPORT, AREA, 'AREA', alloc=.true., RC=STATUS) - VERIFY_(STATUS) - call MAPL_GetPointer(EXPORT, OMLDAMAX, 'OMLDAMAX' , alloc=.true., RC=STATUS) - VERIFY_(STATUS) - call MAPL_GetPointer(EXPORT, mld, 'MLD', alloc=.true., RC=STATUS) - VERIFY_(STATUS) - call MAPL_GetPointer(EXPORT, psi, 'PSI', alloc=.true., RC=STATUS) - VERIFY_(STATUS) - call MAPL_GetPointer(EXPORT, sea_lev, 'SLV', alloc=.true., RC=STATUS) - VERIFY_(STATUS) - call MAPL_GetPointer(EXPORT, ssh, 'SSH', alloc=.true., RC=STATUS) - VERIFY_(STATUS) - call MAPL_GetPointer(EXPORT, pbo, 'PBO', alloc=.true., RC=STATUS) - VERIFY_(STATUS) - call MAPL_GetPointer(EXPORT, TL, 'T', alloc=.true., RC=STATUS) - VERIFY_(STATUS) - call MAPL_GetPointer(EXPORT, SL, 'S', alloc=.true., RC=STATUS) - VERIFY_(STATUS) - -! Get the 3-D MOM data -!--------------------- - - allocate(Tmp3(IM,JM,LM),stat=status); VERIFY_(STATUS) - - call mom4_get_3D_tmask(Tmp3) - MASK = real(Tmp3,kind=G5KIND) - - call mom4_get_thickness(Tmp3) - where(MASK > 0.0) - DH = real(Tmp3,kind=G5KIND) - elsewhere - DH = MAPL_UNDEF - end where - - call mom4_get_salinity_index(i) - call mom4_get_prog_tracer(i,fld=Tmp3) - where(MASK > 0.0) - SL = real(Tmp3,kind=G5KIND) - elsewhere - SL = MAPL_UNDEF - end where - -! Convert conservative temp to potential if necessary - i=-1 - call mom4_get_diag_tracer_index(i,'pot_temp') - if(i .eq. -1) then - call mom4_get_temperature_index(i) - call mom4_get_prog_tracer(i,fld=Tmp3) - where(MASK > 0.0) - TL = real(Tmp3+MAPL_TICE,kind=G5KIND) - elsewhere - TL = MAPL_UNDEF - end where - else - call mom4_get_diag_tracer(i,fld=Tmp3) - where(MASK > 0.0) - TL = real(Tmp3+MAPL_TICE,kind=G5KIND) - elsewhere - TL = MAPL_UNDEF - end where - end if - - deallocate(Tmp3) - -! Get the 2-D MOM data -!--------------------- - allocate(Tmp2(IM,JM),stat=status); VERIFY_(STATUS) - - call mom4_get_Tsurf(Ocean,Tmp2) - where(MASK(:,:,1) > 0.0) - TW = real(Tmp2,kind=G5KIND) - elsewhere - TW = MAPL_UNDEF - end where - - call mom4_get_Ssurf(Ocean,Tmp2) - where(MASK(:,:,1) > 0.0) - SW = real(Tmp2,kind=G5KIND) - elsewhere - SW = MAPL_UNDEF - end where - - if(associated(area)) then - call ocean_model_data_get(Ocean_State, Ocean, 'area', Tmp2, isc, jsc) - AREA = real(Tmp2,kind=G5KIND) - end if - - if(associated(sea_lev)) then - call ocean_model_data_get(Ocean_State, Ocean, 'sea_lev', Tmp2, isc, jsc) - sea_lev = real(merge(tsource = tmp2, fsource = real(MAPL_UNDEF), mask = (mask(:, :, 1) > 0.0)), kind=G5KIND) - end if - - if(associated(ssh)) then - call ocean_model_data_get(Ocean_State, Ocean, 'eta_t', Tmp2, isc, jsc) - ssh = real(merge(tsource = tmp2, fsource = real(MAPL_UNDEF), mask = (mask(:, :, 1) > 0.0)), kind=G5KIND) - end if - - if(associated(pbo)) then - call ocean_model_data_get(Ocean_State, Ocean, 'pbot_t', tmp2, isc, jsc) - pbo = real(merge(tsource = 1.0e-04*tmp2, fsource = real(MAPL_UNDEF), mask = (mask(:, :, 1) > 0.0)),kind=G5KIND) - end if - - tmp2=mom4_get_mld() - OMLDAMAX = real(merge(tsource = tmp2, fsource = real(MAPL_UNDEF), mask = (mask(:, :, 1) > 0.0)), kind=G5KIND) - - deallocate(Tmp2) - -! All Done -!--------- - - RETURN_(ESMF_SUCCESS) - end subroutine Initialize - - -!================================================================================= - -!BOP - -! !IROUTINE: Run -- Run method for External Model Plug - -! !INTERFACE: - - subroutine Run ( gc, import, export, clock, rc ) - -! !ARGUMENTS: - - type(ESMF_GridComp), intent(INOUT) :: gc ! Gridded component - type(ESMF_State), intent(INOUT) :: import ! Import state - type(ESMF_State), intent(INOUT) :: export ! Export state - type(ESMF_Clock), intent(INOUT) :: clock ! The supervisor clock - integer, optional, intent( OUT) :: rc ! Error code: - type(ESMF_State) :: INTERNAL ! Internal state - -!EOP - -! ErrLog Variables - - character(len=ESMF_MAXSTR) :: IAm - integer :: STATUS - character(len=ESMF_MAXSTR) :: COMP_NAME - -! Locals - - integer :: IM, JM, LM - integer :: IMw, JMw - integer :: I - integer :: J - - integer :: steady_state_ocean = 0 - logical :: ocean_seg_start = .true. - logical :: ocean_seg_end = .true. - -! Required exports - - REAL_, pointer :: TW (:,:) - REAL_, pointer :: SW (:,:) - REAL_, pointer :: UW (:,:) - REAL_, pointer :: VW (:,:) - REAL_, pointer :: UWB (:,:) - REAL_, pointer :: VWB (:,:) - REAL_, pointer :: DH (:,:,:) - REAL_, pointer :: SSH (:,:) - REAL_, pointer :: SLV (:,:) - REAL_, pointer :: FRZMLT (:,:) - REAL_, pointer :: MASK(:,:,:) - REAL_, pointer :: AREA(:,:) - REAL_, pointer :: DEPTH(:,:,:) - -! Optional Exports - - REAL_, pointer :: TL (:,:,:) - REAL_, pointer :: SL (:,:,:) - REAL_, pointer :: RL (:,:,:) - REAL_, pointer :: UL (:,:,:) - REAL_, pointer :: VL (:,:,:) - REAL_, pointer :: UX (:,:,:) - REAL_, pointer :: VX (:,:,:) - REAL_, pointer :: WRHOT(:,:,:) - REAL_, pointer :: WRHOTSQ(:,:,:) - REAL_, pointer :: TSSQ(:,:) - REAL_, pointer :: TCON(:,:,:) - REAL_, pointer :: PBO(:,:) - REAL_, pointer :: MASS(:,:,:) - REAL_, pointer :: HC(:,:,:) - REAL_, pointer :: OMLDAMAX(:,:) - REAL_, pointer :: SWFRAC(:,:,:) - -! Imports - REAL_, pointer :: TAUX(:,:) - REAL_, pointer :: TAUY(:,:) - REAL_, pointer :: PS (:,:) - REAL_, pointer :: PICE(:,:) - REAL_, pointer :: HEAT(:,:,:) - REAL_, pointer :: TRACER(:,:,:) - REAL_, pointer :: LWFLX(:,:) - REAL_, pointer :: SHFLX(:,:) - REAL_, pointer :: QFLUX(:,:) - REAL_, pointer :: RAIN(:,:) - REAL_, pointer :: SNOW(:,:) - REAL_, pointer :: SFLX(:,:) - REAL_, pointer :: PENUVR(:,:) - REAL_, pointer :: PENPAR(:,:) - REAL_, pointer :: PENUVF(:,:) - REAL_, pointer :: PENPAF(:,:) - REAL_, pointer :: DRNIR(:,:) - REAL_, pointer :: DFNIR(:,:) - REAL_, pointer :: DISCHARGE(:,:) - REAL_, pointer :: STROCNXB(:,:) - REAL_, pointer :: STROCNYB(:,:) - REAL_, pointer :: AICEU(:,:) - -! Temporaries - - real, allocatable :: U(:,:) - real, allocatable :: V(:,:) - real, allocatable :: H(:,:,:) - real, allocatable :: G(:,:,:) - real, allocatable :: cos_rot(:,:) - real, allocatable :: sin_rot(:,:) - real :: EPSLN - - type(MAPL_MetaComp), pointer :: MAPL - type(MOM_MAPL_Type), pointer :: MOM_MAPL_internal_state - type(MOM_MAPLWrap_Type) :: wrap - type(ice_ocean_boundary_type), pointer :: boundary - type(ocean_public_type), pointer :: Ocean - type(mom5_ocean_state_type), pointer :: Ocean_State - type(domain2d) :: OceanDomain - integer :: isc,iec,jsc,jec - integer :: isd,ied,jsd,jed - - integer :: YEAR,MONTH,DAY,HR,MN,SC - type(time_type) :: Time - type(time_type) :: DT - - integer :: ii, jj - integer :: cnt,l - integer :: tracer_index - real :: sum, pice_scaling = 1.0 - integer :: DT_OCEAN - real, parameter :: CW = 3992.10322329649 - - integer :: na - type(ESMF_FieldBundle) :: TR - type(ESMF_Field) :: Field - type(ESMF_Array) :: Array - character(len=13) :: TRNAME - type(ESMF_Time) :: MyTime - type(ESMF_TimeInterval) :: TINT - - REAL_, pointer, dimension(:, :) :: mld, psi - - REAL_, pointer, dimension(:,:) :: LATS - REAL_, pointer, dimension(:,:) :: LONS -! Begin -!------ - - -! Get the component's name and set-up traceback handle. -! ----------------------------------------------------- - Iam = "Run" - call ESMF_GridCompGet( gc, NAME=comp_name, RC=status ) - VERIFY_(status) - Iam = trim(comp_name) // Iam - -! Get my internal MAPL_Generic state -!----------------------------------- - - call MAPL_GetObjectFromGC ( GC, MAPL, RC=status) - VERIFY_(STATUS) - - - call MAPL_Get(MAPL, & - INTERNAL_ESMF_STATE = INTERNAL, & - LATS = LATS , & - LONS = LONS , & - RC=STATUS ) - VERIFY_(STATUS) - -! Profilers -!---------- - - call MAPL_TimerOn (MAPL,"TOTAL") - call MAPL_TimerOn (MAPL,"RUN" ) - -! Get the Plug's private internal state -!-------------------------------------- - - CALL ESMF_UserCompGetInternalState( GC, 'MOM_MAPL_state', WRAP, STATUS ) - VERIFY_(STATUS) - - MOM_MAPL_internal_state => WRAP%PTR - -! Aliases to MOM types -!--------------------- - - Boundary => MOM_MAPL_internal_state%Ice_ocean_boundary - Ocean => MOM_MAPL_internal_state%Ocean - - - call get_ocean_domain(OceanDomain) - call mom4_get_dimensions(isc, iec, jsc, jec, isd, ied, jsd, jed, LM) - - IM=iec-isc+1 - JM=jec-jsc+1 - -! Temporaries with MOM default reals -!----------------------------------- - - allocate(U(IM,JM ), stat=STATUS); VERIFY_(STATUS) - allocate(V(IM,JM ), stat=STATUS); VERIFY_(STATUS) - allocate(H(IM,JM,LM), stat=STATUS); VERIFY_(STATUS) - allocate(G(IM,JM,LM), stat=STATUS); VERIFY_(STATUS) - allocate(cos_rot(IM,JM ), stat=STATUS); VERIFY_(STATUS) - allocate(sin_rot(IM,JM ), stat=STATUS); VERIFY_(STATUS) - -! Get IMPORT pointers -!-------------------- - - call MAPL_GetPointer(IMPORT, TAUX, 'TAUX' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(IMPORT, TAUY, 'TAUY' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(IMPORT, PS, 'PS' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(IMPORT, PICE, 'PICE' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(IMPORT, HEAT, 'SWHEAT', RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(IMPORT, LWFLX, 'LWFLX' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(IMPORT, SHFLX, 'SHFLX' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(IMPORT, QFLUX, 'QFLUX' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(IMPORT, RAIN, 'RAIN' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(IMPORT, SNOW, 'SNOW' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(IMPORT, SFLX, 'SFLX' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(IMPORT, PENUVR, 'PENUVR' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(IMPORT, PENPAR, 'PENPAR' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(IMPORT, PENUVF, 'PENUVF' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(IMPORT, PENPAF, 'PENPAF' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(IMPORT, DRNIR, 'DRNIR' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(IMPORT, DFNIR, 'DFNIR' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(IMPORT, DISCHARGE, 'DISCHARGE', RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(IMPORT, STROCNXB, 'STROCNXB', RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(IMPORT, STROCNYB, 'STROCNYB', RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(IMPORT, AICEU, 'AICEU', RC=STATUS); VERIFY_(STATUS) - -! Get EXPORT pointers -!-------------------- - - call MAPL_GetPointer(EXPORT, UW, 'UW' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(EXPORT, VW, 'VW' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(EXPORT, UWB, 'UWB' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(EXPORT, VWB, 'VWB' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(EXPORT, TW, 'TW' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(EXPORT, SW, 'SW' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(EXPORT, SSH, 'SSH', RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(EXPORT, SLV, 'SLV', RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(EXPORT, FRZMLT, 'FRZMLT', RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(EXPORT, DEPTH, 'DEPTH', RC=STATUS); VERIFY_(STATUS) - - call MAPL_GetPointer(EXPORT, DH, 'DH' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(EXPORT, MASK, 'MOM_3D_MASK', RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(EXPORT, AREA, 'AREA', RC=STATUS); VERIFY_(STATUS) - - call MAPL_GetPointer(EXPORT, TL, 'T' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(EXPORT, RL, 'RHO' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(EXPORT, MASS, 'MASSCELLO' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(EXPORT, HC, 'HC' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(EXPORT, SL, 'S' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(EXPORT, UL, 'U' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(EXPORT, VL, 'V' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(EXPORT, UX, 'UX' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(EXPORT, VX, 'VX' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(EXPORT, WRHOT,'WMO' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(EXPORT, WRHOTSQ,'WMOSQ', RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(EXPORT, TSSQ, 'TOSSQ' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(EXPORT, PBO, 'PBO' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(EXPORT, TCON, 'TCON' ,RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(EXPORT, OMLDAMAX, 'OMLDAMAX', RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(EXPORT, mld, 'MLD', RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(EXPORT, psi, 'PSI', RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(EXPORT, SWFRAC, 'SWFRAC', RC=STATUS); VERIFY_(STATUS) - - call mapl_getresource(mapl, pice_scaling, Label = "MOM_PICE_SCALING:", default = 1.0, rc = status); VERIFY_(status) - boundary%P = pice_scaling*real(PICE, kind = KIND(Boundary%P)) - boundary%lw_flux = real(LWFLX, kind=KIND(Boundary%P)) ! Long wave flux: both positive down - boundary%t_flux = real(SHFLX, kind=KIND(Boundary%P)) ! Sencible heat flux: both positive up - boundary%q_flux = real(QFLUX, kind=KIND(Boundary%P)) ! Evaporation: both positive up - boundary%lprec = real(RAIN, kind=KIND(Boundary%P)) ! Liquid precipitation: both positive down - boundary%fprec = real(SNOW, kind=KIND(Boundary%P)) ! Frozen precipitation: both positive down - boundary%salt_flux =-real(SFLX, kind=KIND(Boundary%P)) ! Salt flux: MOM positive up, GEOS positive down - - boundary%runoff = real(DISCHARGE,kind=KIND(Boundary%P)) - -! All shortwave components are positive down in MOM and in GEOS -!--------------------------------------------------------------- - boundary%sw_flux_vis_dir = real(PENUVR+PENPAR, kind=KIND(Boundary%P)) - boundary%sw_flux_vis_dif = real(PENUVF+PENPAF, kind=KIND(Boundary%P)) - boundary%sw_flux_nir_dir = real(DRNIR, kind=KIND(Boundary%P)) - boundary%sw_flux_nir_dif = real(DFNIR, kind=KIND(Boundary%P)) - -! Precision conversion -!--------------------- - - H = real(HEAT, kind=KIND(H)) - -! KPP requires fractional shortwave decay (i.e. penetrated shortwave at T levels normalized by surface -! shortwave flux). We compute it from surface shortwave flux and shotwave heating here. -!----------------------------------------------------------------------------------------------------- - U=real(PENUVR+PENPAR+PENUVF+PENPAF+DRNIR+DFNIR, kind=KIND(U)) - - where(U>0.0) - V=1.0 - U=1.0/U - elsewhere - V=0.0 ! short wave fraction should be 0 when surface flux is 0 - end where - - do l=1,LM - G(:,:,l)=V-0.5*H(:,:,l)*U - V=V-H(:,:,l)*U - end do - G=max(0.0,G) ! this protects from tiny negatives at depth where sw heating is very small - call mom4_set_swheat_fr(G) - - if(associated(SWFRAC)) then - where(MASK > 0.0) - SWFRAC = real(G,kind=G5KIND) - elsewhere - SWFRAC = MAPL_UNDEF - end where - end if - -! Subtract surface flux from the top level heating rate, because MOM ocean_sbc adds surface sw flux to -! Tprog(index_temp)%stf (surface temp tracer flux). -!-------------------------------------------------- - U=real(PENUVR+PENPAR+PENUVF+PENPAF+DRNIR+DFNIR, kind=KIND(U)) - H(:,:,1) = H(:,:,1)-U - call mom4_set_swheat(H) - -! Convert input stresses over water to B grid -!-------------------------------------------- - U = 0.0 - V = 0.0 - call transformA2B(real(TAUX,kind=kind(U)), real(TAUY,kind=kind(V)), U, V) - -! Rotate input stress over water along i,j of tripolar grid, and combine with stress under ice -!--------------------------------------------------------------------------------------------- - call ocean_model_data_get(Ocean_State, Ocean, 'cos_rot', cos_rot, isc, jsc) - call ocean_model_data_get(Ocean_State, Ocean, 'sin_rot', sin_rot, isc, jsc) - - Boundary%U_flux = (U*cos_rot + V*sin_rot)*(1-AICEU) - STROCNXB - Boundary%V_flux = (-U*sin_rot + V*cos_rot)*(1-AICEU) - STROCNYB - -! Set the time for MOM -!--------------------- - - call ESMF_ClockGet(CLOCK, currTIME=MyTime, TimeStep=TINT, RC=STATUS) - VERIFY_(STATUS) - - call ESMF_TimeGet (MyTime, & - YY=YEAR, MM=MONTH, DD=DAY, & - H=HR, M =MN, S =SC, & - RC=STATUS ) - VERIFY_(STATUS) - - CALL ESMF_TimeIntervalGet(TINT, S=DT_OCEAN, RC=status) - VERIFY_(status) - - DT = set_time (DT_OCEAN, 0) - Time = set_date (YEAR,MONTH,DAY,HR,MN,SC) - -! Copy tracers from IMPORT bundle to MOM internal state -!------------------------------------------------------ - - call ESMF_StateGet(IMPORT, 'TR', TR, RC=STATUS ) - VERIFY_(STATUS) - call ESMF_FieldBundleGet(TR,FieldCount=NA, RC=STATUS) - VERIFY_(STATUS) - - TRNAME = 'GENtracer_XXX' - - do I=1,NA - call ESMF_FieldBundleGet(TR, I, FIELD, RC=STATUS) - VERIFY_(STATUS) - call ESMF_FieldGet(field=field, array=Array, RC=STATUS) - VERIFY_(STATUS) - call ESMF_ArrayGet(Array, farrayPtr=Tracer, RC=STATUS) - VERIFY_(STATUS) - - H = real(TRACER, kind=KIND(U)) - - write(TRNAME(11:13),'(I3.3)') I - call mom4_get_prog_tracer_index(tracer_index,TRNAME) - if(tracer_index > 0) call mom4_put_prog_tracer(tracer_index,H) - end do - -! Run MOM for one time step -!-------------------------- - - call mapl_getresource(mapl, steady_state_ocean, Label = "steady_state_ocean:", default = 0, rc = status); VERIFY_(status) - if(steady_state_ocean == 0) call update_ocean_model(Boundary, Ocean_State, Ocean, Time, DT) - -! Copy tracers from MOM internal state to IMPORT bundle -!------------------------------------------------------ - - do I=1,NA - call ESMF_FieldBundleGet(TR, I, FIELD, RC=STATUS) - VERIFY_(STATUS) - call ESMF_FieldGet(field=field, array=Array, RC=STATUS) - VERIFY_(STATUS) - call ESMF_ArrayGet(Array, farrayPtr=Tracer, RC=STATUS) - VERIFY_(STATUS) - - write(TRNAME(11:13),'(I3.3)') I - call mom4_get_prog_tracer_index(tracer_index,TRNAME) - if(tracer_index > 0) call mom4_get_prog_tracer(tracer_index,H) - - where(MASK > 0.0) - TRACER = real(H, kind=KIND(TRACER)) - elsewhere - TRACER = MAPL_UNDEF - end where - - end do - - -! Get export fields - -! Required Exports at G5 precision -!--------------------------------- - - call mom4_get_Tsurf(Ocean,U) - where(MASK(:,:,1) > 0.0) - TW = real(U, kind=G5KIND) - elsewhere - TW = MAPL_UNDEF - end where - - call mom4_get_Ssurf(Ocean,U) - where(MASK(:,:,1) > 0.0) - SW = real(U, kind=G5KIND) - elsewhere - SW = MAPL_UNDEF - end where - - call mom4_get_salinity_index(i) - call mom4_get_prog_tracer(i,fld=H) - where(MASK > 0.0) - SL = real(H,kind=G5KIND) - elsewhere - SL = MAPL_UNDEF - end where - -! Convert conservative temp to potential if necessary - i=-1 - call mom4_get_diag_tracer_index(i,'pot_temp') - if(i .eq. -1) then - call mom4_get_temperature_index(i) - call mom4_get_prog_tracer(i,fld=H) - where(MASK > 0.0) - TL = real(H+MAPL_TICE,kind=G5KIND) - elsewhere - TL = MAPL_UNDEF - end where - else - call mom4_get_diag_tracer(i,fld=H) - where(MASK > 0.0) - TL = real(H+MAPL_TICE,kind=G5KIND) - elsewhere - TL = MAPL_UNDEF - end where - end if - - call mom4_get_thickness(H) - where(MASK > 0.0) - DH = real(H, kind=G5KIND) - end where - -! Optional Exports at G5 precision -!--------------------------------- -! Get the A grid currents at MOM precision -!----------------------------------------- - if(associated(UW) .or. associated(VW)) then - call mom4_get_latlon_UVsurf(OCEAN, U, V, STATUS) - VERIFY_(STATUS) - endif - - if(associated(UW )) then - where(MASK(:,:,1) > 0.0) - UW = real(U, kind=G5KIND) - elsewhere - UW=0.0 - end where - endif - - if(associated(VW )) then - where(MASK(:,:,1) > 0.0) - VW = real(V, kind=G5KIND) - elsewhere - VW=0.0 - end where - end if - -! Get the B grid currents at MOM precision -!----------------------------------------- - if(associated(UWB) .or. associated(VWB)) then - call mom4_get_UVsurfB(OCEAN, U, V, STATUS) - VERIFY_(STATUS) - endif - - if(associated(UWB )) then - where(MASK(:,:,1)>0.0) - UWB = real(U, kind=G5KIND) - elsewhere - UWB=0.0 - end where - endif - - if(associated(VWB )) then - where(MASK(:,:,1)>0.0) - VWB = real(V, kind=G5KIND) - elsewhere - VWB=0.0 - end where - end if - - if(associated(RL )) then - call mom4_get_density (H) - where(MASK > 0.0) - RL = real(H,kind=G5KIND) - elsewhere - RL = MAPL_UNDEF - end where - end if - - if(associated(MASS )) then - call mom4_get_density (H) - where(MASK > 0.0) - MASS = DH*real(H,kind=G5KIND) - elsewhere - MASS = MAPL_UNDEF - end where - end if - - if(associated(HC )) then - call mom4_get_density (H) - call mom4_get_temperature_index(i) - call mom4_get_prog_tracer(i,fld=G) - where(MASK > 0.0) - HC = CW*DH*real(H*(G+MAPL_TICE),kind=G5KIND) - elsewhere - HC = MAPL_UNDEF - end where - end if - -!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - - - if(associated(TCON )) then -! Convert potential temp to conservativ if necessary - i=-1 - call mom4_get_diag_tracer_index(i,'con_temp') - if(i .eq. -1) then - call mom4_get_temperature_index(i) - call mom4_get_prog_tracer(i,fld=H) - where(MASK > 0.0) - TCON = real(H+MAPL_TICE,kind=G5KIND) - elsewhere - TCON = MAPL_UNDEF - end where - else - call mom4_get_diag_tracer(i,fld=H) - where(MASK > 0.0) - TCON = real(H+MAPL_TICE,kind=G5KIND) - elsewhere - TCON = MAPL_UNDEF - end where - end if - end if - - if(associated(UL) .or. associated(VL)) then - call mom4_get_latlon_UV(G, H, STATUS) - VERIFY_(STATUS) - - if(associated(UL )) then - where(MASK > 0.0) - UL = real(G,kind=G5KIND) - elsewhere - UL = MAPL_UNDEF - end where - end if - - if(associated(VL )) then - where(MASK > 0.0) - VL = real(H,kind=G5KIND) - elsewhere - VL = MAPL_UNDEF - end where - end if - endif - - if(associated(UX) .or. associated(VX)) then - call mom4_get_UV(G, H, STATUS) - VERIFY_(STATUS) - - if(associated(UX )) then - where(MASK > 0.0) - UX = real(G,kind=G5KIND) - elsewhere - UX = MAPL_UNDEF - end where - end if - - if(associated(VX )) then - where(MASK > 0.0) - VX = real(H,kind=G5KIND) - elsewhere - VX = MAPL_UNDEF - end where - end if - endif - - if(associated(WRHOT)) then - call ocean_model_data_get(Ocean_State, Ocean, 'wrhot', H, isc, jsc) - do l=1,LM - where(MASK(:,:,l) > 0.0) - WRHOT(:,:,l) = real(H(:,:,l), kind = G5KIND) - WRHOT(:,:,l) = WRHOT(:,:,l)*AREA*1.e-3 - elsewhere - WRHOT(:,:,l) = MAPL_UNDEF - end where - end do - end if - - if(associated(WRHOTSQ)) then - call ocean_model_data_get(Ocean_State, Ocean, 'wrhot', H, isc, jsc) - do l=1,LM - where(MASK(:,:,l) > 0.0) - WRHOTSQ(:,:,l) = real(H(:,:,l), kind = G5KIND) - WRHOTSQ(:,:,l) = WRHOTSQ(:,:,l)*AREA*1e-3 - WRHOTSQ(:,:,l) = WRHOTSQ(:,:,l)*WRHOTSQ(:,:,l) - elsewhere - WRHOTSQ(:,:,l) = MAPL_UNDEF - end where - end do - end if - - if(associated(SSH)) then - call ocean_model_data_get(Ocean_State, Ocean, 'eta_t', U, isc, jsc) - where(MASK(:,:,1) > 0.0) - SSH = real(U, kind = G5KIND) - elsewhere - SSH = MAPL_UNDEF - end where - end if - - if(associated(SLV)) then - call ocean_model_data_get(Ocean_State, Ocean, 'sea_lev', U, isc, jsc) - where(MASK(:,:,1)>0.0) - SLV = real(U, kind = G5KIND) - elsewhere - SLV=0.0 - end where - end if - - if(associated(FRZMLT)) then - ! frazil in mom5 already contains melt potential - call ocean_model_data_get(Ocean_State, Ocean, 'frazil', U, isc, jsc) - where(MASK(:,:,1)>0.0) - FRZMLT = real(U, kind = G5KIND) - elsewhere - FRZMLT = 0.0 - end where - end if - - if(associated(PBO)) then - call ocean_model_data_get(Ocean_State, Ocean, 'pbot_t', U, isc, jsc) - where(MASK(:,:,1) > 0.0) - PBO = real(U*1e-4, kind = G5KIND) - elsewhere - PBO = MAPL_UNDEF - end where - end if - - if(associated(DEPTH)) then - call ocean_model_data_get(Ocean_State, Ocean, 'geodepth_zt', H, isc, jsc) - DEPTH = real(H, kind = G5KIND) - end if - - if(associated(TSSQ)) then - where(MASK(:,:,1) > 0.0) - TSSQ = TW*TW - elsewhere - TSSQ = MAPL_UNDEF - end where - end if - - U=mom4_get_mld() - if(HR==0 .and. MN==0 .and. SC==0) then - OMLDAMAX = real(U, kind = G5KIND) - else - OMLDAMAX = max(OMLDAMAX , real(U, kind = G5KIND)) - endif - - if(associated(mld)) then - mld = mask(:, :, 1)*u - endif - if(associated(psi)) then - psi = mask(:, :, 1)*mom4_get_streamfunction() - endif - - deallocate(H) - deallocate(G) - deallocate(U,V) - deallocate(cos_rot,sin_rot) - - call MAPL_TimerOff(MAPL,"RUN" ) - call MAPL_TimerOff(MAPL,"TOTAL" ) - -! All Done -!--------- - RETURN_(ESMF_SUCCESS) - contains - - subroutine transformA2B(U, V, uvx, uvy) - real, dimension(:,:) :: U, V - real :: uvx(isc:,jsc:) - real :: uvy(isc:,jsc:) - - integer :: i, j - real, allocatable :: TX(:,:), TY(:,:) - - - allocate(tx(isd:ied,jsd:jed), stat=STATUS); VERIFY_(STATUS) - allocate(ty(isd:ied,jsd:jed), stat=STATUS); VERIFY_(STATUS) - - tx(isc:iec, jsc:jec) = U - ty(isc:iec, jsc:jec) = V - - call mpp_update_domains(tx, ty, OceanDomain, gridtype=AGRID, flags=SCALAR_PAIR) - - do j = jsc, jec - do i = isc, iec - sum = 0.0 - cnt = 0 - do ii = 0,1 - do jj = 0,1 - if (tx(i+ii,j+jj) /= MAPL_Undef) then - cnt = cnt+1 - sum = sum + tx(i+ii,j+jj) - end if - end do - end do - if (cnt /= 0) then - uvx(i,j) = sum/real(cnt) - else - uvx(i,j) = 0.0 - end if - - sum = 0.0 - cnt = 0 - do ii = 0,1 - do jj = 0,1 - if (ty(i+ii,j+jj) /= MAPL_Undef) then - cnt = cnt+1 - sum = sum + ty(i+ii,j+jj) - end if - end do - end do - if (cnt /= 0) then - uvy(i,j) = sum/real(cnt) - else - uvy(i,j) = 0.0 - end if - enddo - enddo - deallocate(ty, tx) - end subroutine transformA2B - end subroutine Run - -!================================================================================= - -!BOP - -! !IROUTINE: Run2 -- Run2 method, needed only when in dual_ocean mode. Apply correction to top-level MOM temperature, based on DEL_TEMP - -! !INTERFACE: - - subroutine Run2 ( gc, import, export, clock, rc ) - -! !ARGUMENTS: - - type(ESMF_GridComp), intent(INOUT) :: gc ! Gridded component - type(ESMF_State), intent(INOUT) :: import ! Import state - type(ESMF_State), intent(INOUT) :: export ! Export state - type(ESMF_Clock), intent(INOUT) :: clock ! The supervisor clock - integer, optional, intent( OUT) :: rc ! Error code: - type(ESMF_State) :: INTERNAL ! Internal state - -!EOP - -! ErrLog Variables - - character(len=ESMF_MAXSTR) :: IAm - integer :: STATUS - character(len=ESMF_MAXSTR) :: COMP_NAME - -! Locals - - integer :: IM, JM, LM - integer :: tracer_index - - -! Imports - REAL_, pointer :: DEL_TEMP(:,:) - -! Temporaries - - real, allocatable :: T(:,:,:) - -! Pointers to export - REAL_, pointer :: MASK(:,:,:) - - type(MAPL_MetaComp), pointer :: MAPL - type(MOM_MAPL_Type), pointer :: MOM_MAPL_internal_state - type(MOM_MAPLWrap_Type) :: wrap -! type(ice_ocean_boundary_type), pointer :: boundary -! type(ocean_public_type), pointer :: Ocean -! type(mom5_ocean_state_type), pointer :: Ocean_State -! type(domain2d) :: OceanDomain - integer :: isc,iec,jsc,jec - integer :: isd,ied,jsd,jed - -! Begin -!------ - - -! Get the component's name and set-up traceback handle. -! ----------------------------------------------------- - Iam = "Run2" - call ESMF_GridCompGet( gc, NAME=comp_name, RC=status ) - VERIFY_(status) - Iam = trim(comp_name) // Iam - -! Get my internal MAPL_Generic state -!----------------------------------- - - call MAPL_GetObjectFromGC ( GC, MAPL, RC=status) - VERIFY_(STATUS) - - -! Profilers -!---------- - - call MAPL_TimerOn (MAPL,"TOTAL") - call MAPL_TimerOn (MAPL,"RUN2" ) - -! Get the Plug's private internal state -!-------------------------------------- - - CALL ESMF_UserCompGetInternalState( GC, 'MOM_MAPL_state', WRAP, STATUS ) - VERIFY_(STATUS) - - MOM_MAPL_internal_state => WRAP%PTR - -! Aliases to MOM types -!--------------------- - -! Boundary => MOM_MAPL_internal_state%Ice_ocean_boundary -! Ocean => MOM_MAPL_internal_state%Ocean - - -! call get_ocean_domain(OceanDomain) - call mom4_get_dimensions(isc, iec, jsc, jec, isd, ied, jsd, jed, LM) - - IM=iec-isc+1 - JM=jec-jsc+1 - -! Temporaries with MOM default reals -!----------------------------------- - - allocate(T(IM,JM,LM), stat=STATUS); VERIFY_(STATUS) - -! Get IMPORT pointers -!-------------------- - - call MAPL_GetPointer(IMPORT, DEL_TEMP, 'DEL_TEMP', RC=STATUS); VERIFY_(STATUS) - -! Get EXPORT pointers -!-------------------- - ! by now this should be allocated, so 'alloc=.true.' is needed - call MAPL_GetPointer(EXPORT, MASK, 'MOM_3D_MASK', RC=STATUS) - VERIFY_(STATUS) - - - call mom4_get_temperature_index(tracer_index) - ASSERT_(tracer_index > 0) ! temperature index is valid - call mom4_get_prog_tracer(tracer_index,fld=T) - - where(MASK(:,:,1) > 0.0) ! correct only ocean points - !ALT: Note that we modify only top level of T - ! we do not need to worry about temperature units - ! since we are applying difference - - ! some relaxation ??? here or in guest ??? - - T(:,:,1) = T(:,:,1) + DEL_TEMP - - end where - call mom4_put_prog_tracer(tracer_index,T) - - deallocate(T) - - call MAPL_TimerOff(MAPL,"RUN2" ) - call MAPL_TimerOff(MAPL,"TOTAL") - -! All Done -!--------- - - RETURN_(ESMF_SUCCESS) - end subroutine Run2 - -!BOP - -! !IROUTINE: Finalize -- Finalize method for GuestOcean wrapper - -! !INTERFACE: - - subroutine Finalize ( gc, import, export, clock, rc ) - -! !ARGUMENTS: - - type(ESMF_GridComp), intent(INOUT) :: gc ! Gridded component - type(ESMF_State), intent(INOUT) :: import ! Import state - type(ESMF_State), intent(INOUT) :: export ! Export state - type(ESMF_Clock), intent(INOUT) :: clock ! The supervisor clock - integer, optional, intent( OUT) :: rc ! Error code: - -!EOP - - type (MAPL_MetaComp), pointer:: MAPL - type(ESMF_Time) :: MyTime - type(MOM_MAPL_Type), pointer :: MOM_MAPL_internal_state - type(MOM_MAPLWrap_Type) :: wrap - type(ocean_public_type), pointer :: Ocean - type(mom5_ocean_state_type), pointer :: Ocean_State - -! ErrLog Variables - - character(len=ESMF_MAXSTR) :: IAm - integer :: STATUS - character(len=ESMF_MAXSTR) :: COMP_NAME - -! Locals with MOM types - - type(time_type) :: Time - integer :: YEAR,MONTH,DAY,HR,MN,SC - -! Get the target components name and set-up traceback handle. -! ----------------------------------------------------------- - - Iam = "Finalize" - call ESMF_GridCompGet( gc, NAME=comp_name, RC=status ) - VERIFY_(STATUS) - Iam = trim(comp_name) // Iam - -! Get my internal MAPL_Generic state -!----------------------------------- - - call MAPL_GetObjectFromGC ( GC, MAPL, RC=status) - VERIFY_(STATUS) - -! Profilers -!---------- - - call MAPL_TimerOn(MAPL,"TOTAL" ) - call MAPL_TimerOn(MAPL,"FINALIZE") - -! Get the Plug's private internal state -!-------------------------------------- - - CALL ESMF_UserCompGetInternalState( GC, 'MOM_MAPL_state', WRAP, STATUS ) - VERIFY_(STATUS) - - MOM_MAPL_internal_state => WRAP%PTR - - Ocean => MOM_MAPL_internal_state%Ocean - -! Set the times for MOM -!---------------------- - - call ESMF_ClockGet( CLOCK, currTime=MyTime, RC=STATUS) - VERIFY_(status) - - call ESMF_TimeGet (MyTime, & - YY=YEAR, MM=MONTH, DD=DAY, & - H=HR, M =MN, S =SC, & - RC=STATUS ) - VERIFY_(STATUS) - - Time = set_date(YEAR,MONTH,DAY,HR,MN,SC) - - call ocean_model_end (Ocean, Ocean_State, Time) - call diag_manager_end(Time ) - call field_manager_end - - call fms_io_exit -! call fms_end - - call MAPL_TimerOff(MAPL,"FINALIZE") - call MAPL_TimerOff(MAPL,"TOTAL" ) - -! Generic Finalize -! ------------------ - - call MAPL_GenericFinalize( GC, IMPORT, EXPORT, CLOCK, RC=status ) - VERIFY_(STATUS) - -! All Done -!--------- - - RETURN_(ESMF_SUCCESS) - end subroutine Finalize - - -!==================================================================== - -! !IROUTINE: Record -- Record method for GuestOcean wrapper (write intermediate restarts) - -! !INTERFACE: - - subroutine Record ( gc, import, export, clock, rc ) - -! !ARGUMENTS: - - type(ESMF_GridComp), intent(INOUT) :: gc ! Gridded component - type(ESMF_State), intent(INOUT) :: import ! Import state - type(ESMF_State), intent(INOUT) :: export ! Export state - type(ESMF_Clock), intent(INOUT) :: clock ! The supervisor clock - integer, optional, intent( OUT) :: rc ! Error code: - -!EOP - - type (MAPL_MetaComp), pointer :: MAPL - type(MOM_MAPL_Type), pointer :: MOM_MAPL_internal_state - type(MOM_MAPLWrap_Type) :: wrap - type(mom5_ocean_state_type), pointer :: Ocean_State - -! ErrLog Variables - - character(len=ESMF_MAXSTR) :: IAm - integer :: STATUS - character(len=ESMF_MAXSTR) :: COMP_NAME - -! Locals - character(len=14) :: timeStamp - logical :: doRecord - -! Get the target components name and set-up traceback handle. -! ----------------------------------------------------------- - - Iam = "Record" - call ESMF_GridCompGet( gc, NAME=comp_name, RC=status ) - VERIFY_(STATUS) - Iam = trim(comp_name) // Iam - -! Get my internal MAPL_Generic state -!----------------------------------- - - call MAPL_GetObjectFromGC ( GC, MAPL, RC=status) - VERIFY_(STATUS) - -! Profilers -!---------- - - call MAPL_TimerOn(MAPL,"TOTAL") - - doRecord = MAPL_RecordAlarmIsRinging(MAPL, MODE=MAPL_Write2Disk, RC=status) - VERIFY_(STATUS) - - if (doRecord) then - -! Get the Plug's private internal state -!-------------------------------------- - - CALL ESMF_UserCompGetInternalState( GC, 'MOM_MAPL_state', WRAP, STATUS ) - VERIFY_(STATUS) - - MOM_MAPL_internal_state => WRAP%PTR - - call MAPL_DateStampGet(clock, timeStamp, rc=status) - VERIFY_(STATUS) - - call ocean_model_restart (Ocean_State, timeStamp) - VERIFY_(STATUS) - - end if - - call MAPL_TimerOff(MAPL,"TOTAL") - RETURN_(ESMF_SUCCESS) - - end subroutine Record - -!==================================================================== - -end module MOM_GEOS5PlugMod - -subroutine SetServices(gc, rc) - use ESMF - use MOM_GEOS5PlugMod, only : mySetservices=>SetServices - type(ESMF_GridComp) :: gc - integer, intent(out) :: rc - call mySetServices(gc,rc=rc) -end subroutine From c023222d2d3d0fea2cfe6307be1e06846bd8f20a Mon Sep 17 00:00:00 2001 From: sanAkel Date: Wed, 23 Feb 2022 16:55:37 -0500 Subject: [PATCH 21/28] missed MAPL get pointer, now fixed. --- .../GEOSdatasea_GridComp/GEOS_DataSeaGridComp.F90 | 4 +++- .../GEOS_OradBioGridComp/GEOS_OradBioGridComp.F90 | 3 +++ GEOSogcm_GridComp/GEOS_OradGridComp/GEOS_OradGridComp.F90 | 2 ++ 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/GEOSogcm_GridComp/GEOS_OceanGridComp/GEOSdatasea_GridComp/GEOS_DataSeaGridComp.F90 b/GEOSogcm_GridComp/GEOS_OceanGridComp/GEOSdatasea_GridComp/GEOS_DataSeaGridComp.F90 index 1b3a514fa..3899362c4 100644 --- a/GEOSogcm_GridComp/GEOS_OceanGridComp/GEOSdatasea_GridComp/GEOS_DataSeaGridComp.F90 +++ b/GEOSogcm_GridComp/GEOS_OceanGridComp/GEOSdatasea_GridComp/GEOS_DataSeaGridComp.F90 @@ -89,13 +89,15 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) Iam = trim(COMP_NAME) // Iam - ! Set the Run entry point ! ----------------------- call MAPL_GridCompSetEntryPoint ( GC, ESMF_METHOD_RUN, Run, RC=STATUS) VERIFY_(STATUS) + call MAPL_GetObjectFromGC ( GC, MAPL, RC=STATUS) + VERIFY_(STATUS) + call MAPL_GetResource (MAPL, ocean_data_type, Label="OCEAN_DATA_TYPE:", DEFAULT="Binary", __RC__ ) ! Binary or ExtData ! This new SSS data feature will be ExtData based ONLY; 'None' would set sss=30, as it was done with binary SST data diff --git a/GEOSogcm_GridComp/GEOS_OradBioGridComp/GEOS_OradBioGridComp.F90 b/GEOSogcm_GridComp/GEOS_OradBioGridComp/GEOS_OradBioGridComp.F90 index d59480300..f7f6ec21f 100644 --- a/GEOSogcm_GridComp/GEOS_OradBioGridComp/GEOS_OradBioGridComp.F90 +++ b/GEOSogcm_GridComp/GEOS_OradBioGridComp/GEOS_OradBioGridComp.F90 @@ -132,6 +132,9 @@ subroutine SetServices ( GC, RC ) ! Set the state variable specs. ! ----------------------------- + call MAPL_GetObjectFromGC ( GC, MAPL, RC=STATUS) + VERIFY_(STATUS) + call MAPL_GetResource (MAPL, ocean_data_type, Label="OCEAN_DATA_TYPE:", DEFAULT="Binary", __RC__ ) ! Binary or ExtData !BOC diff --git a/GEOSogcm_GridComp/GEOS_OradGridComp/GEOS_OradGridComp.F90 b/GEOSogcm_GridComp/GEOS_OradGridComp/GEOS_OradGridComp.F90 index 4046bf835..4ece65782 100644 --- a/GEOSogcm_GridComp/GEOS_OradGridComp/GEOS_OradGridComp.F90 +++ b/GEOSogcm_GridComp/GEOS_OradGridComp/GEOS_OradGridComp.F90 @@ -92,6 +92,8 @@ subroutine SetServices ( GC, RC ) ! Set the state variable specs. ! ----------------------------- + call MAPL_GetObjectFromGC ( GC, MAPL, RC=STATUS) + VERIFY_(STATUS) call MAPL_GetResource (MAPL,ocean_data_type, Label="OCEAN_DATA_TYPE:", DEFAULT="Binary", __RC__ ) ! Binary or ExtData From a4c542c170b81048083bae86d00141fa5ed95d4e Mon Sep 17 00:00:00 2001 From: sanAkel Date: Wed, 23 Feb 2022 22:47:33 -0500 Subject: [PATCH 22/28] Since extData can be only .true. or .false.; latter reverting to binary data, replaced character strings with simpler logical variables. --- .../GEOS_DataSeaGridComp.F90 | 26 +++++++++---------- GEOSogcm_GridComp/GEOS_OgcmGridComp.F90 | 16 +++++++----- .../GEOS_OradBioGridComp.F90 | 8 +++--- .../GEOS_OradGridComp/GEOS_OradGridComp.F90 | 8 +++--- .../GEOS_DataSeaIceGridComp.F90 | 14 +++++----- 5 files changed, 37 insertions(+), 35 deletions(-) diff --git a/GEOSogcm_GridComp/GEOS_OceanGridComp/GEOSdatasea_GridComp/GEOS_DataSeaGridComp.F90 b/GEOSogcm_GridComp/GEOS_OceanGridComp/GEOSdatasea_GridComp/GEOS_DataSeaGridComp.F90 index 3899362c4..09621055e 100644 --- a/GEOSogcm_GridComp/GEOS_OceanGridComp/GEOSdatasea_GridComp/GEOS_DataSeaGridComp.F90 +++ b/GEOSogcm_GridComp/GEOS_OceanGridComp/GEOSdatasea_GridComp/GEOS_DataSeaGridComp.F90 @@ -23,8 +23,8 @@ module GEOS_DataSeaGridCompMod public SetServices - character(len=ESMF_MAXSTR) :: ocean_data_type - character(len=ESMF_MAXSTR) :: ocean_sss_data + logical :: ocean_extData + logical :: ocean_sssData ! !DESCRIPTION: ! @@ -98,10 +98,10 @@ subroutine SetServices ( GC, RC ) call MAPL_GetObjectFromGC ( GC, MAPL, RC=STATUS) VERIFY_(STATUS) - call MAPL_GetResource (MAPL, ocean_data_type, Label="OCEAN_DATA_TYPE:", DEFAULT="Binary", __RC__ ) ! Binary or ExtData + call MAPL_GetResource (MAPL, ocean_extData, Label="OCEAN_EXT_DATA:", DEFAULT=.FALSE., __RC__ ) ! .TRUE. or .FALSE. - ! This new SSS data feature will be ExtData based ONLY; 'None' would set sss=30, as it was done with binary SST data - call MAPL_GetResource (MAPL, ocean_sss_data, Label="OCEAN_SSS_DATA:", DEFAULT="None", __RC__ ) ! None or ExtData + ! This new SSS data feature will be ExtData based ONLY; No SSS data would set sss=30, as it was done with binary SST data + call MAPL_GetResource (MAPL, ocean_sssData, Label="OCEAN_SSS_DATA:", DEFAULT=.FALSE., __RC__ ) ! .TRUE. or .FALSE. ! Set the state variable specs. ! ----------------------------- @@ -113,7 +113,7 @@ subroutine SetServices ( GC, RC ) ! !Export state: - if (ocean_data_type == 'ExtData') then + if (ocean_extData) then call MAPL_AddImportSpec(GC, & SHORT_NAME = 'DATA_SST', & LONG_NAME = 'sea_surface_temperature', & @@ -122,7 +122,7 @@ subroutine SetServices ( GC, RC ) VLOCATION = MAPL_VLocationNone, RC=STATUS) endif - if (ocean_sss_data == 'ExtData') then + if (ocean_sssData) then call MAPL_AddImportSpec(GC, & SHORT_NAME = 'DATA_SSS', & LONG_NAME = 'sea_surface_salinity', & @@ -305,7 +305,7 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) call ESMF_ClockGet(CLOCK, currTime=CurrentTime, RC=STATUS) VERIFY_(STATUS) - if (ocean_data_type == 'Binary') then + if (.not. ocean_extData) then ! Get the SST bcs file name from the resource file ! ------------------------------------------------- call MAPL_GetResource(MAPL,DATASeaFILE,LABEL="DATA_SST_FILE:", RC=STATUS) @@ -335,7 +335,7 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) ! SSS is usually bulk SSS !------------------------- - if (ocean_sss_data == 'ExtData') then + if (ocean_sssData) then allocate(SSS(IM, JM), stat=STATUS); VERIFY_(STATUS) endif @@ -347,11 +347,11 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) ! Read bulk SST from retrieval !------------------------------ - if (ocean_data_type == 'ExtData') then + if (ocean_extData) then call MAPL_GetPointer(import, data_sst, 'DATA_SST', __RC__) sst = data_sst ! netcdf variable - if (ocean_sss_data == 'ExtData') then ! and bulk SSS (from retrieval) + if (ocean_sssData) then ! and bulk SSS (from retrieval) call MAPL_GetPointer(import, data_sss, 'DATA_SSS', __RC__) SSS = data_sss ! netcdf variable endif @@ -415,7 +415,7 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) end if if(associated(SW)) then - if (ocean_sss_data == 'ExtData') then + if (ocean_sssData) then SW = SSS ! SA: every SST data point must have SSS (in PSU) as well else SW = 30.0 ! SA: for now @@ -426,7 +426,7 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) !--------- deallocate(SST, STAT=STATUS); VERIFY_(STATUS) - if (ocean_sss_data == 'ExtData') then + if (ocean_sssData) then deallocate(SSS, STAT=STATUS); VERIFY_(STATUS) endif diff --git a/GEOSogcm_GridComp/GEOS_OgcmGridComp.F90 b/GEOSogcm_GridComp/GEOS_OgcmGridComp.F90 index 7e50a8a14..ad8ce9a0e 100644 --- a/GEOSogcm_GridComp/GEOS_OgcmGridComp.F90 +++ b/GEOSogcm_GridComp/GEOS_OgcmGridComp.F90 @@ -61,8 +61,8 @@ module GEOS_OgcmGridCompMod integer :: DO_OBIO integer :: DO_DATAATM - character(len=ESMF_MAXSTR) :: ocean_data_type - character(len=ESMF_MAXSTR) :: ocean_sss_data + logical :: ocean_extData + logical :: ocean_sssData !if DO_OBIO =/ 0 integer, parameter :: NUM_DUDP = 5 @@ -205,10 +205,10 @@ subroutine SetServices ( GC, RC ) _ASSERT(DO_OBIO ==0,'needs informative message') end if - call MAPL_GetResource (MAPL, ocean_data_type, Label="OCEAN_DATA_TYPE:", DEFAULT="Binary", __RC__ ) ! Binary or ExtData + call MAPL_GetResource (MAPL, ocean_extData, Label="OCEAN_EXT_DATA:", DEFAULT=.FALSE., __RC__ ) ! .TRUE. or .FALSE. if (DO_DATASEAONLY==1) then ! Fake-ocean (i.e., data ocean). ! This check is strictly for sss only because of data kpar that is used when DO_DATASEAONLY == 0. - call MAPL_GetResource (MAPL, ocean_sss_data, Label="OCEAN_SSS_DATA:", DEFAULT="None", __RC__ ) ! None or ExtData + call MAPL_GetResource (MAPL, ocean_sssData, Label="OCEAN_SSS_DATA:", DEFAULT=.FALSE., __RC__ ) ! .TRUE. or .FALSE. endif ! Set the Run and initialize entry points @@ -780,16 +780,18 @@ subroutine SetServices ( GC, RC ) ! Children's imports are in the ocean grid and are all satisfied ! by OGCM from exchange grid quantities. - if (ocean_data_type == 'ExtData') then + if (ocean_extData) then if (DO_DATASEAONLY==1) then ! fake-ocean (i.e., data ocean) - if (ocean_sss_data == 'ExtData') then + if (ocean_sssData) then call MAPL_TerminateImport ( GC, ["DATA_SST","DATA_SSS", "DATA_ICE","DATA_KPAR"], [ocean,ocean,seaice,orad], RC=STATUS ) else ! no (None) data_sss call MAPL_TerminateImport ( GC, ["DATA_SST", "DATA_ICE","DATA_KPAR"], [ocean, seaice,orad], RC=STATUS ) endif else ! we get real ocean and sea ice in case of coupled model, and only data KPAR is used. - call MAPL_TerminateImport ( GC, ["DATA_KPAR"], [orad], RC=STATUS ) + call MAPL_TerminateImport ( GC, ["DATA_KPAR"], [orad], RC=STATUS ) ! need to terminate others as well: cosz, discharge, frocean, pice, taux, tauy endif + else + call MAPL_TerminateImport ( GC, ALL=.true., __RC__) endif ! Set the Profiling timers diff --git a/GEOSogcm_GridComp/GEOS_OradBioGridComp/GEOS_OradBioGridComp.F90 b/GEOSogcm_GridComp/GEOS_OradBioGridComp/GEOS_OradBioGridComp.F90 index f7f6ec21f..ce2692986 100644 --- a/GEOSogcm_GridComp/GEOS_OradBioGridComp/GEOS_OradBioGridComp.F90 +++ b/GEOSogcm_GridComp/GEOS_OradBioGridComp/GEOS_OradBioGridComp.F90 @@ -25,7 +25,7 @@ module GEOS_OradBioGridCompMod integer, parameter :: NB_CHOU_NIR = 3 ! Number of near-IR bands integer, parameter :: NB_CHOU = NB_CHOU_UV + NB_CHOU_NIR ! Total number of bands - character(len=ESMF_MAXSTR) :: ocean_data_type + logical :: ocean_extData #include "definebio.h" #include "comlte.h" @@ -135,7 +135,7 @@ subroutine SetServices ( GC, RC ) call MAPL_GetObjectFromGC ( GC, MAPL, RC=STATUS) VERIFY_(STATUS) - call MAPL_GetResource (MAPL, ocean_data_type, Label="OCEAN_DATA_TYPE:", DEFAULT="Binary", __RC__ ) ! Binary or ExtData + call MAPL_GetResource (MAPL, ocean_extData, Label="OCEAN_EXT_DATA:", DEFAULT=.FALSE., __RC__ ) ! .TRUE. or .FALSE. !BOC @@ -445,7 +445,7 @@ subroutine SetServices ( GC, RC ) RC=STATUS ) VERIFY_(STATUS) - if (ocean_data_type == 'ExtData') then + if (ocean_extData) then call MAPL_AddImportSpec(GC, & SHORT_NAME = 'data_kpar', & LONG_NAME = 'PAR_extinction_coefficient', & @@ -822,7 +822,7 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) ! Get KPAR from data file !------------------------ - if (ocean_data_type == 'Binary') then + if (.not. ocean_extData) then call MAPL_GetResource(MAPL,DATAFILE,LABEL="KPAR_FILE:" , RC=STATUS) VERIFY_(STATUS) call MAPL_ReadForcing(MAPL,'KPAR',DATAFILE,CURRENTTIME,KPAR, RC=STATUS) diff --git a/GEOSogcm_GridComp/GEOS_OradGridComp/GEOS_OradGridComp.F90 b/GEOSogcm_GridComp/GEOS_OradGridComp/GEOS_OradGridComp.F90 index 4ece65782..603c1d23c 100644 --- a/GEOSogcm_GridComp/GEOS_OradGridComp/GEOS_OradGridComp.F90 +++ b/GEOSogcm_GridComp/GEOS_OradGridComp/GEOS_OradGridComp.F90 @@ -23,7 +23,7 @@ module GEOS_OradGridCompMod public SetServices - character(len=ESMF_MAXSTR) :: ocean_data_type + logical :: ocean_extData ! !DESCRIPTION: ! @@ -95,7 +95,7 @@ subroutine SetServices ( GC, RC ) call MAPL_GetObjectFromGC ( GC, MAPL, RC=STATUS) VERIFY_(STATUS) - call MAPL_GetResource (MAPL,ocean_data_type, Label="OCEAN_DATA_TYPE:", DEFAULT="Binary", __RC__ ) ! Binary or ExtData + call MAPL_GetResource (MAPL, ocean_extData, Label="OCEAN_EXT_DATA:", DEFAULT=.FALSE., __RC__ ) ! .TRUE. or .FALSE. !BOS @@ -124,7 +124,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) - if (ocean_data_type == 'ExtData') then + if (ocean_extData) then call MAPL_AddImportSpec(GC, & SHORT_NAME = 'data_kpar', & LONG_NAME = 'PAR_extinction_coefficient', & @@ -506,7 +506,7 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) ! Get KPAR from data file !------------------------ - if (ocean_data_type == 'Binary') then + if (.not. ocean_extData) then call MAPL_GetResource(MAPL,DATAFILE,LABEL="KPAR_FILE:" , RC=STATUS) VERIFY_(STATUS) diff --git a/GEOSogcm_GridComp/GEOSseaice_GridComp/GEOSdataseaice_GridComp/GEOS_DataSeaIceGridComp.F90 b/GEOSogcm_GridComp/GEOSseaice_GridComp/GEOSdataseaice_GridComp/GEOS_DataSeaIceGridComp.F90 index 7f518c301..0a79f01c7 100644 --- a/GEOSogcm_GridComp/GEOSseaice_GridComp/GEOSdataseaice_GridComp/GEOS_DataSeaIceGridComp.F90 +++ b/GEOSogcm_GridComp/GEOSseaice_GridComp/GEOSdataseaice_GridComp/GEOS_DataSeaIceGridComp.F90 @@ -35,7 +35,7 @@ module GEOS_DataSeaIceGridCompMod integer :: NUM_SNOW_LAYERS_ALL integer :: DO_CICE_THERMO - character(len=ESMF_MAXSTR) :: ocean_data_type + logical :: ocean_extData ! !DESCRIPTION: ! @@ -111,7 +111,7 @@ subroutine SetServices ( GC, RC ) call MAPL_GetResource ( MAPL, DO_CICE_THERMO, Label="USE_CICE_Thermo:" , DEFAULT=0, RC=STATUS) VERIFY_(STATUS) - call MAPL_GetResource ( MAPL, ocean_data_type, Label="OCEAN_DATA_TYPE:", DEFAULT="Binary", __RC__ ) ! Binary or ExtData + call MAPL_GetResource ( MAPL, ocean_extData, Label="OCEAN_EXT_DATA:", DEFAULT=.FALSE., __RC__ ) ! .TRUE. or .FALSE. cice_init_: if (DO_CICE_THERMO /= 0) then if(MAPL_AM_I_ROOT()) print *, 'Using Data Sea Ice GC to do CICE Thermo in AMIP mode' @@ -141,7 +141,7 @@ subroutine SetServices ( GC, RC ) ! !Import state: - if (ocean_data_type == 'ExtData') then + if (ocean_extData) then call MAPL_AddImportSpec(GC, & SHORT_NAME = 'DATA_ICE', & LONG_NAME = 'sea_ice_concentration', & @@ -476,7 +476,7 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) ! Pointers to Imports !-------------------- - if (ocean_data_type == 'ExtData') then + if (ocean_extData) then call MAPL_GetPointer(IMPORT, DATA_ice , 'DATA_ICE', __RC__) endif @@ -521,7 +521,7 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) call ESMF_ClockGet(CLOCK, currTime=CurrentTime, rc=STATUS) VERIFY_(STATUS) - if (ocean_data_type == 'Binary') then + if (.not. ocean_extData) then ! Get the file name from the resource file !----------------------------------------- call MAPL_GetResource(MAPL,DataFrtFile,LABEL="DATA_FRT_FILE:", RC=STATUS) @@ -572,7 +572,7 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) if (DO_CICE_THERMO == 0) then if(associated(FR)) then - if (ocean_data_type == 'ExtData') then + if (ocean_extData) then FR = data_ice ! netcdf variable else ! binary call MAPL_ReadForcing(MAPL,'FRT',DataFrtFile, CURRENTTIME, FR, INIT_ONLY=FCST, __RC__) @@ -584,7 +584,7 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) endif end if else - if (ocean_data_type == 'ExtData') then + if (ocean_extData) then frt = data_ice ! netcdf variable else ! binary call MAPL_ReadForcing(MAPL,'FRT',DataFrtFile, CURRENTTIME, FRT, INIT_ONLY=FCST, __RC__) From f49d2ab3125583df46d54d0caf5614fd8d63c762 Mon Sep 17 00:00:00 2001 From: sanAkel Date: Thu, 24 Feb 2022 17:22:23 -0500 Subject: [PATCH 23/28] Mixed up upper- and lower-case strings in spec declaration. Now fixed. --- GEOSogcm_GridComp/GEOS_OradBioGridComp/GEOS_OradBioGridComp.F90 | 2 +- GEOSogcm_GridComp/GEOS_OradGridComp/GEOS_OradGridComp.F90 | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/GEOSogcm_GridComp/GEOS_OradBioGridComp/GEOS_OradBioGridComp.F90 b/GEOSogcm_GridComp/GEOS_OradBioGridComp/GEOS_OradBioGridComp.F90 index ce2692986..471d8cb09 100644 --- a/GEOSogcm_GridComp/GEOS_OradBioGridComp/GEOS_OradBioGridComp.F90 +++ b/GEOSogcm_GridComp/GEOS_OradBioGridComp/GEOS_OradBioGridComp.F90 @@ -447,7 +447,7 @@ subroutine SetServices ( GC, RC ) if (ocean_extData) then call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'data_kpar', & + SHORT_NAME = 'DATA_KPAR', & LONG_NAME = 'PAR_extinction_coefficient', & UNITS = 'm-1', & DIMS = MAPL_DimsHorzOnly, & diff --git a/GEOSogcm_GridComp/GEOS_OradGridComp/GEOS_OradGridComp.F90 b/GEOSogcm_GridComp/GEOS_OradGridComp/GEOS_OradGridComp.F90 index 603c1d23c..957ad3fc6 100644 --- a/GEOSogcm_GridComp/GEOS_OradGridComp/GEOS_OradGridComp.F90 +++ b/GEOSogcm_GridComp/GEOS_OradGridComp/GEOS_OradGridComp.F90 @@ -126,7 +126,7 @@ subroutine SetServices ( GC, RC ) if (ocean_extData) then call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'data_kpar', & + SHORT_NAME = 'DATA_KPAR', & LONG_NAME = 'PAR_extinction_coefficient', & UNITS = 'm-1', & DIMS = MAPL_DimsHorzOnly, & From f17a37d6297fb2befe7da821a03d99d1b9b8ecd7 Mon Sep 17 00:00:00 2001 From: sanAkel Date: Wed, 2 Mar 2022 13:15:47 -0500 Subject: [PATCH 24/28] to ignore (contents of) CICE6 and SIS2 --- .../GEOSseaice_GridComp/CICE_GEOSPlug/.gitignore | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 GEOSogcm_GridComp/GEOSseaice_GridComp/CICE_GEOSPlug/.gitignore diff --git a/GEOSogcm_GridComp/GEOSseaice_GridComp/CICE_GEOSPlug/.gitignore b/GEOSogcm_GridComp/GEOSseaice_GridComp/CICE_GEOSPlug/.gitignore new file mode 100644 index 000000000..6c280fbfa --- /dev/null +++ b/GEOSogcm_GridComp/GEOSseaice_GridComp/CICE_GEOSPlug/.gitignore @@ -0,0 +1,7 @@ +/@cice6 +/cice6 +/cice6@ + +/@sis2 +/sis2 +/sis2@ From 37c2f3533cd52cd2e736ad3fa86ecf057083beae Mon Sep 17 00:00:00 2001 From: Lawrence Takacs Date: Fri, 4 Mar 2022 09:48:01 -0500 Subject: [PATCH 25/28] Updates required for using Cubed-Sphere Observed Predip File --- .../GEOS_PhysicsGridComp.F90 | 11 +- .../GEOS_SurfaceGridComp.F90 | 118 ++++++++++++++---- 2 files changed, 104 insertions(+), 25 deletions(-) diff --git a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOS_PhysicsGridComp.F90 b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOS_PhysicsGridComp.F90 index 0744555f6..eec5856d3 100644 --- a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOS_PhysicsGridComp.F90 +++ b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOS_PhysicsGridComp.F90 @@ -1137,7 +1137,9 @@ subroutine SetServices ( GC, RC ) !---------------- call MAPL_AddConnectivity ( GC, & - SHORT_NAME = (/'PCU ','PLS ','SNO ','ICE ','FRZR'/), & + SHORT_NAME = (/'PCU ', 'PLS ', 'SNO ', & + 'ICE ', 'FRZR ', 'TPREC ', & + 'CN_PRCP' /), & DST_ID = SURF, & SRC_ID = MOIST, & RC=STATUS ) @@ -1198,8 +1200,8 @@ subroutine SetServices ( GC, RC ) ! ----------------- call MAPL_AddConnectivity ( GC, & - SHORT_NAME = (/ 'Q ', 'RH2 ', 'CN_PRCP ', & - 'TPREC ', 'SNO ', 'DQDT ', & + SHORT_NAME = (/ 'Q ', 'RH2 ', & + 'SNO ', 'DQDT ', & 'FCLD ', 'LS_PRCP ', 'CNV_MFC ', & 'CNV_MFD ', 'QL ', 'PFL_CN ', & 'PFL_LSAN', 'PFI_CN ', 'PFI_LSAN', & @@ -1235,7 +1237,8 @@ subroutine SetServices ( GC, RC ) 'CN ', 'RHOS ', 'WET2 ', & 'SNOMAS ', 'SNOWDP ', 'ITY ', & 'LHFX ', 'Q2M ', 'Q10M ', & - 'T10M ', 'WCSF ' /), & + 'T10M ', 'WCSF ', 'CN_PRCP ', & + 'PRECTOT ' /), & DST_ID = CHEM, & SRC_ID = SURF, & RC=STATUS ) diff --git a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSsurface_GridComp/GEOS_SurfaceGridComp.F90 b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSsurface_GridComp/GEOS_SurfaceGridComp.F90 index ec1fc9805..5fdccc1a4 100644 --- a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSsurface_GridComp/GEOS_SurfaceGridComp.F90 +++ b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSsurface_GridComp/GEOS_SurfaceGridComp.F90 @@ -48,6 +48,7 @@ module GEOS_SurfaceGridCompMod use ESMF use MAPL + use MAPL_ESMFFieldBundleRead use GEOS_UtilsMod use GEOS_LakeGridCompMod, only : LakeSetServices => SetServices @@ -461,6 +462,30 @@ subroutine SetServices ( GC, RC ) RC=STATUS ) VERIFY_(STATUS) +! Total precip from MOIST (for backwards compatibility when not using PRECIP_FILE) +! -------------------------------------------------------------------------------- + call MAPL_AddImportSpec(GC, & + SHORT_NAME='TPREC', & + LONG_NAME ='total_precipitation', & + UNITS ='kg m-2 s-1', & + DEFAULT = MAPL_UNDEF, & + DIMS = MAPL_DimsHorzOnly, & + VLOCATION = MAPL_VLocationNone, & + RESTART = MAPL_RestartSkip, RC=STATUS ) + VERIFY_(STATUS) + +! Convective precip from MOIST (for backwards compatibility when not using PRECIP_FILE) +! ------------------------------------------------------------------------------------- + call MAPL_AddImportSpec(GC, & + SHORT_NAME='CN_PRCP', & + LONG_NAME ='convective_precipitation', & + UNITS ='kg m-2 s-1', & + DEFAULT = MAPL_UNDEF, & + DIMS = MAPL_DimsHorzOnly, & + VLOCATION = MAPL_VLocationNone, & + RESTART = MAPL_RestartSkip, RC=STATUS ) + VERIFY_(STATUS) + call MAPL_AddImportSpec(GC, & LONG_NAME = 'liquid_water_convective_precipitation', & UNITS = 'kg m-2 s-1', & @@ -2002,8 +2027,8 @@ subroutine SetServices ( GC, RC ) RC=STATUS ) VERIFY_(STATUS) - call MAPL_AddExportSpec(GC, & - LONG_NAME = 'total_precipitation', & + call MAPL_AddExportSpec(GC, & + LONG_NAME = 'total_precipitation', & UNITS = 'kg m-2 s-1', & SHORT_NAME = 'PRECTOT', & DIMS = MAPL_DimsHorzOnly, & @@ -2011,7 +2036,16 @@ subroutine SetServices ( GC, RC ) RC=STATUS ) VERIFY_(STATUS) - call MAPL_AddExportSpec(GC, & + call MAPL_AddExportSpec(GC, & + LONG_NAME = 'convective_precipitation', & + UNITS = 'kg m-2 s-1', & + SHORT_NAME = 'CN_PRCP', & + DIMS = MAPL_DimsHorzOnly, & + VLOCATION = MAPL_VLocationNone, & + RC=STATUS ) + VERIFY_(STATUS) + + call MAPL_AddExportSpec(GC, & LONG_NAME = 'snowfall', & UNITS = 'kg m-2 s-1', & SHORT_NAME = 'SNO', & @@ -2020,8 +2054,8 @@ subroutine SetServices ( GC, RC ) RC=STATUS ) VERIFY_(STATUS) - call MAPL_AddExportSpec(GC, & - LONG_NAME = 'icefall', & + call MAPL_AddExportSpec(GC, & + LONG_NAME = 'icefall', & UNITS = 'kg m-2 s-1', & SHORT_NAME = 'ICE', & DIMS = MAPL_DimsHorzOnly, & @@ -2029,7 +2063,7 @@ subroutine SetServices ( GC, RC ) RC=STATUS ) VERIFY_(STATUS) - call MAPL_AddExportSpec(GC, & + call MAPL_AddExportSpec(GC, & LONG_NAME = 'freezing_rain_fall', & UNITS = 'kg m-2 s-1', & SHORT_NAME = 'FRZR', & @@ -5065,7 +5099,10 @@ subroutine RUN2 ( GC, IMPORT, EXPORT, CLOCK, RC ) real, pointer, dimension(:,:) :: SNO => NULL() real, pointer, dimension(:,:) :: ICE => NULL() real, pointer, dimension(:,:) :: FRZR => NULL() + real, pointer, dimension(:,:) :: TPREC => NULL() + real, pointer, dimension(:,:) :: CN_PRCP => NULL() real, pointer, dimension(:,:) :: PRECTOT => NULL() + real, pointer, dimension(:,:) :: PRECCU => NULL() real, pointer, dimension(:,:) :: T2MDEW => NULL() real, pointer, dimension(:,:) :: T2MWET => NULL() @@ -5409,7 +5446,10 @@ subroutine RUN2 ( GC, IMPORT, EXPORT, CLOCK, RC ) ! ! for reading "forced" precip - real, pointer, dimension(:,:) :: PTTe => NULL() + real, pointer, dimension(:,:) :: PTTe => NULL() + Integer :: fieldcount + Type(esmf_field) :: bundle_field + Character(len=ESMF_MAXSTR), allocatable :: fieldnames(:) ! interpolate wind for wind stress real, pointer, dimension(:,:) :: UUA => NULL() @@ -5784,12 +5824,14 @@ subroutine RUN2 ( GC, IMPORT, EXPORT, CLOCK, RC ) ! These are the precips exported by moist !---------------------------------------- - call MAPL_GetPointer(IMPORT, PCU , 'PCU' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(IMPORT, PLS , 'PLS' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(IMPORT, SNOFL , 'SNO' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(IMPORT, ICEFL , 'ICE' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(IMPORT, FRZRFL , 'FRZR' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(IMPORT, TA , 'TA' , RC=STATUS); VERIFY_(STATUS) + call MAPL_GetPointer(IMPORT, PCU , 'PCU' , RC=STATUS); VERIFY_(STATUS) + call MAPL_GetPointer(IMPORT, PLS , 'PLS' , RC=STATUS); VERIFY_(STATUS) + call MAPL_GetPointer(IMPORT, SNOFL , 'SNO' , RC=STATUS); VERIFY_(STATUS) + call MAPL_GetPointer(IMPORT, ICEFL , 'ICE' , RC=STATUS); VERIFY_(STATUS) + call MAPL_GetPointer(IMPORT, FRZRFL , 'FRZR' , RC=STATUS); VERIFY_(STATUS) + call MAPL_GetPointer(IMPORT, TA , 'TA' , RC=STATUS); VERIFY_(STATUS) + call MAPL_GetPointer(IMPORT, TPREC , 'TPREC' , RC=STATUS); VERIFY_(STATUS) + call MAPL_GetPointer(IMPORT, PRECCU , 'CN_PRCP' , RC=STATUS); VERIFY_(STATUS) ! This is the default behavior, with all surface components seeing uncorrected precip !------------------------------------------------------------------------------------ @@ -5813,7 +5855,9 @@ subroutine RUN2 ( GC, IMPORT, EXPORT, CLOCK, RC ) call ESMF_FieldBundleSet(bundle, GRID=GRID, RC=STATUS) VERIFY_(STATUS) - call MAPL_CFIORead( PRECIP_FILE, CurrentTime, Bundle, RC=STATUS) + ! call MAPL_CFIORead( PRECIP_FILE, CurrentTime, Bundle, RC=STATUS) + ! VERIFY_(STATUS) + call MAPL_read_bundle( Bundle,PRECIP_FILE, CurrentTime, RC=status) VERIFY_(STATUS) call ESMFL_BundleGetPointerToData(Bundle,'PRECTOT',PTTe, RC=STATUS) VERIFY_(STATUS) @@ -5827,8 +5871,8 @@ subroutine RUN2 ( GC, IMPORT, EXPORT, CLOCK, RC ) ! Per 05/2019 discussions with Rolf Reichle and Andrea Molod, the ! following treatment is applied: ! In the case of tiny (< 0.1 mm/day) model precip, corrected precip -! is divided by the freezing point. Future development using a ramp -! or more sophisticated approach is desired. +! is parsed by the freezing point into large-scale rain or snow. +! Future development using a ramp or more sophisticated approach is desired. ! Note the original correction precip threshold of 1-4 mm/d was ! deemed too small, and a 273.15 K temperature threshold instead of ! MAPL_ICE ( = 273.16 K ) @@ -5883,10 +5927,25 @@ subroutine RUN2 ( GC, IMPORT, EXPORT, CLOCK, RC ) ! Destroy the bundle and its fields !---------------------------------- - call ESMF_FieldBundleDestroy(bundle, rc=STATUS) + Call ESMF_FieldBundleGet(bundle,fieldcount=fieldcount,rc=status) + VERIFY_(STATUS) + + Allocate(fieldnames(fieldcount)) + Call ESMF_FieldBundleGet(bundle,fieldNameList=fieldnames,rc=status) VERIFY_(STATUS) - deallocate(PTTe) + Do I = 1,fieldCount + Call ESMF_FieldBundleGet(bundle,trim(fieldnames(i)),field=bundle_field,rc=status) + VERIFY_(STATUS) + Call ESMF_FieldDestroy(bundle_field,noGarbage=.true.,rc=status) + VERIFY_(STATUS) + Enddo + deAllocate(fieldnames) + + call ESMF_FieldBundleDestroy(bundle,noGarbage=.true.,rc=STATUS) + VERIFY_(STATUS) + +! deallocate(PTTe) ! Apply latitude taper to replace the model-generated precip ! only at low latitudes, @@ -6871,14 +6930,31 @@ subroutine RUN2 ( GC, IMPORT, EXPORT, CLOCK, RC ) ! including any correction. The uncorrected comes from moist. !------------------------------------------------------------- - call MAPL_GetPointer(EXPORT, PRECTOT, 'PRECTOT', RC=STATUS) + ! Convective Precipitation + ! ------------------------ + call MAPL_GetPointer(EXPORT, CN_PRCP, 'CN_PRCP', ALLOC=.true., RC=STATUS) VERIFY_(STATUS) - if (associated(PRECTOT)) then + if(PRECIP_FILE /= "null") then + TMPTILE = PCUTILE + call MAPL_LocStreamTransform( LOCSTREAM, CN_PRCP, TMPTILE, RC=STATUS) + VERIFY_(STATUS) + else + CN_PRCP = PRECCU + endif + + ! Total Precipitation + ! ------------------- + call MAPL_GetPointer(EXPORT, PRECTOT, 'PRECTOT', ALLOC=.true., RC=STATUS) + VERIFY_(STATUS) + + if(PRECIP_FILE /= "null") then TMPTILE = PCUTILE + PLSTILE + SNOFLTILE + ICEFLTILE + FRZRFLTILE call MAPL_LocStreamTransform( LOCSTREAM, PRECTOT, TMPTILE, RC=STATUS) VERIFY_(STATUS) - end if + else + PRECTOT = TPREC + endif ! New effective temperature and humidity !--------------------------------------- From a4f74484fc30c79be530c01d5b9266b8107be80c Mon Sep 17 00:00:00 2001 From: Lawrence Takacs <52579755+lltakacs@users.noreply.github.com> Date: Fri, 4 Mar 2022 11:58:26 -0500 Subject: [PATCH 26/28] Update GEOS_SurfaceGridComp.F90 Updated default values for latitudinal tapering of Observed Precip File. --- .../GEOSsurface_GridComp/GEOS_SurfaceGridComp.F90 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSsurface_GridComp/GEOS_SurfaceGridComp.F90 b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSsurface_GridComp/GEOS_SurfaceGridComp.F90 index 5fdccc1a4..72379304f 100644 --- a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSsurface_GridComp/GEOS_SurfaceGridComp.F90 +++ b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSsurface_GridComp/GEOS_SurfaceGridComp.F90 @@ -5955,9 +5955,9 @@ subroutine RUN2 ( GC, IMPORT, EXPORT, CLOCK, RC ) VERIFY_(STATUS) TAPER_PRECIP: if(USE_PP_TAPER/=0) then - call MAPL_GetResource ( MAPL, PP_TAPER_LAT_LOW , Label="PP_TAPER_LAT_LOW:" , DEFAULT=42.5, RC=STATUS) + call MAPL_GetResource ( MAPL, PP_TAPER_LAT_LOW , Label="PP_TAPER_LAT_LOW:" , DEFAULT=50.0, RC=STATUS) VERIFY_(STATUS) - call MAPL_GetResource ( MAPL, PP_TAPER_LAT_HIGH, Label="PP_TAPER_LAT_HIGH:", DEFAULT=62.5, RC=STATUS) + call MAPL_GetResource ( MAPL, PP_TAPER_LAT_HIGH, Label="PP_TAPER_LAT_HIGH:", DEFAULT=60.0, RC=STATUS) VERIFY_(STATUS) PP_TAPER_LAT_LOW = PP_TAPER_LAT_LOW *(MAPL_PI/180.) From 650ffeb7fd7aa595f54ce39920be4dab533a1ad9 Mon Sep 17 00:00:00 2001 From: Matthew Thompson Date: Thu, 10 Mar 2022 08:34:27 -0500 Subject: [PATCH 27/28] Updates to support Spack --- .../GEOSgwd_GridComp/CMakeLists.txt | 3 +- .../rrtmg_sw/gcm_model/src/CMakeLists.txt | 3 +- .../CLM40/CMakeLists.txt | 3 +- .../GEOScatchCNCLM40_GridComp/CMakeLists.txt | 3 +- .../CLM45/CMakeLists.txt | 7 ++--- .../GEOScatchCNCLM45_GridComp/CMakeLists.txt | 3 +- .../GEOScatch_GridComp/CMakeLists.txt | 5 ++- .../GEOSroute_GridComp/CMakeLists.txt | 5 +-- .../GEOSvegdyn_GridComp/CMakeLists.txt | 3 +- .../GEOSlandice_GridComp/CMakeLists.txt | 3 +- .../GEOSsaltwater_GridComp/CMakeLists.txt | 3 +- .../Utils/Raster/CMakeLists.txt | 31 +++++++++---------- .../Utils/mk_restarts/CMakeLists.txt | 23 ++++++-------- .../GEOSturbulence_GridComp/CMakeLists.txt | 3 +- .../GEOSdatmodyn_GridComp/CMakeLists.txt | 3 +- GEOSmkiau_GridComp/CMakeLists.txt | 4 +-- .../GEOSdatasea_GridComp/CMakeLists.txt | 5 +-- .../GEOS_OradGridComp/CMakeLists.txt | 3 +- .../GEOSdataseaice_GridComp/CMakeLists.txt | 3 +- 19 files changed, 45 insertions(+), 71 deletions(-) diff --git a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSgwd_GridComp/CMakeLists.txt b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSgwd_GridComp/CMakeLists.txt index 9213795f9..c30d7c136 100644 --- a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSgwd_GridComp/CMakeLists.txt +++ b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSgwd_GridComp/CMakeLists.txt @@ -19,5 +19,4 @@ set (srcs ncar_gwd/gw_drag.F90 ) -esma_add_library (${this} SRCS ${srcs} DEPENDENCIES GEOS_Shared MAPL) -target_include_directories (${this} PUBLIC ${INC_ESMF} ${INC_NETCDF}) +esma_add_library (${this} SRCS ${srcs} DEPENDENCIES GEOS_Shared MAPL esmf NetCDF::NetCDF_Fortran) diff --git a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSradiation_GridComp/GEOSsolar_GridComp/RRTMG/rrtmg_sw/gcm_model/src/CMakeLists.txt b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSradiation_GridComp/GEOSsolar_GridComp/RRTMG/rrtmg_sw/gcm_model/src/CMakeLists.txt index 7e2ac2904..5bff0e6f1 100644 --- a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSradiation_GridComp/GEOSsolar_GridComp/RRTMG/rrtmg_sw/gcm_model/src/CMakeLists.txt +++ b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSradiation_GridComp/GEOSsolar_GridComp/RRTMG/rrtmg_sw/gcm_model/src/CMakeLists.txt @@ -40,7 +40,6 @@ foreach (file ${k_g_srcs}) endforeach () esma_add_library (${this} SRCS ${srcs} ${k_g_srcs} - DEPENDENCIES GEOS_Shared MAPL RRTMG_SW_mods GEOS_RadiationShared) -target_include_directories (${this} PUBLIC ${INC_ESMF} ${INC_NETCDF}) + DEPENDENCIES GEOS_Shared MAPL RRTMG_SW_mods GEOS_RadiationShared esmf NetCDF::NetCDF_Fortran) diff --git a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSsurface_GridComp/GEOSland_GridComp/GEOScatchCN_GridComp/GEOScatchCNCLM40_GridComp/CLM40/CMakeLists.txt b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSsurface_GridComp/GEOSland_GridComp/GEOScatchCN_GridComp/GEOScatchCNCLM40_GridComp/CLM40/CMakeLists.txt index 825217884..ded614d57 100644 --- a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSsurface_GridComp/GEOSland_GridComp/GEOScatchCN_GridComp/GEOScatchCNCLM40_GridComp/CLM40/CMakeLists.txt +++ b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSsurface_GridComp/GEOSland_GridComp/GEOScatchCN_GridComp/GEOScatchCNCLM40_GridComp/CLM40/CMakeLists.txt @@ -39,9 +39,8 @@ set (srcs esma_add_library (${this} SRCS ${srcs} - DEPENDENCIES MAPL GEOS_Shared GEOS_LandShared GEOS_CatchCNShared + DEPENDENCIES MAPL GEOS_Shared GEOS_LandShared GEOS_CatchCNShared esmf NetCDF::NetCDF_Fortran TYPE SHARED) -target_include_directories (${this} PUBLIC ${INC_ESMF} ${INC_NETCDF}) if (is_openmp) target_compile_options(${this} PRIVATE ${OpenMP_Fortran_FLAGS}) diff --git a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSsurface_GridComp/GEOSland_GridComp/GEOScatchCN_GridComp/GEOScatchCNCLM40_GridComp/CMakeLists.txt b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSsurface_GridComp/GEOSland_GridComp/GEOScatchCN_GridComp/GEOScatchCNCLM40_GridComp/CMakeLists.txt index 601d4820b..6cac8566a 100644 --- a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSsurface_GridComp/GEOSland_GridComp/GEOScatchCN_GridComp/GEOScatchCNCLM40_GridComp/CMakeLists.txt +++ b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSsurface_GridComp/GEOSland_GridComp/GEOScatchCN_GridComp/GEOScatchCNCLM40_GridComp/CMakeLists.txt @@ -10,9 +10,8 @@ set (srcs esma_add_library (${this} SRCS ${srcs} - DEPENDENCIES MAPL GEOS_Shared GEOS_LandShared CLM40 GEOS_CatchCNShared + DEPENDENCIES MAPL GEOS_Shared GEOS_LandShared CLM40 GEOS_CatchCNShared esmf NetCDF::NetCDF_Fortran TYPE SHARED) -target_include_directories (${this} PUBLIC ${INC_ESMF} ${INC_NETCDF}) if (is_openmp) target_compile_options(${this} PRIVATE ${OpenMP_Fortran_FLAGS}) diff --git a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSsurface_GridComp/GEOSland_GridComp/GEOScatchCN_GridComp/GEOScatchCNCLM45_GridComp/CLM45/CMakeLists.txt b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSsurface_GridComp/GEOSland_GridComp/GEOScatchCN_GridComp/GEOScatchCNCLM45_GridComp/CLM45/CMakeLists.txt index 5bbc15391..236c53642 100644 --- a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSsurface_GridComp/GEOSland_GridComp/GEOScatchCN_GridComp/GEOScatchCNCLM45_GridComp/CLM45/CMakeLists.txt +++ b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSsurface_GridComp/GEOSland_GridComp/GEOScatchCN_GridComp/GEOScatchCNCLM45_GridComp/CLM45/CMakeLists.txt @@ -30,8 +30,8 @@ set (srcs CNPrecisionControlMod.F90 CNSetValueMod.F90 CNVegStructUpdateMod.F90 - CNVerticalProfileMod.F90 - CNSoilLittVertTranspMod.F90 + CNVerticalProfileMod.F90 + CNSoilLittVertTranspMod.F90 CNWoodProductsMod.F90 CNSummaryMod.F90 CNEcosystemDynMod.F90 @@ -46,9 +46,8 @@ set (srcs esma_add_library (${this} SRCS ${srcs} - DEPENDENCIES MAPL GEOS_LandShared GEOS_CatchCNShared + DEPENDENCIES MAPL GEOS_LandShared GEOS_CatchCNShared esmf NetCDF::NetCDF_Fortran TYPE SHARED) -target_include_directories (${this} PUBLIC ${INC_ESMF} ${INC_NETCDF}) if (is_openmp) target_compile_options(${this} PRIVATE ${OpenMP_Fortran_FLAGS}) diff --git a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSsurface_GridComp/GEOSland_GridComp/GEOScatchCN_GridComp/GEOScatchCNCLM45_GridComp/CMakeLists.txt b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSsurface_GridComp/GEOSland_GridComp/GEOScatchCN_GridComp/GEOScatchCNCLM45_GridComp/CMakeLists.txt index 381efc278..60f99c90a 100644 --- a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSsurface_GridComp/GEOSland_GridComp/GEOScatchCN_GridComp/GEOScatchCNCLM45_GridComp/CMakeLists.txt +++ b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSsurface_GridComp/GEOSland_GridComp/GEOScatchCN_GridComp/GEOScatchCNCLM45_GridComp/CMakeLists.txt @@ -10,9 +10,8 @@ set (srcs esma_add_library (${this} SRCS ${srcs} - DEPENDENCIES MAPL GEOS_Shared GEOS_LandShared CLM45 GEOS_CatchCNShared + DEPENDENCIES MAPL GEOS_Shared GEOS_LandShared CLM45 GEOS_CatchCNShared esmf NetCDF::NetCDF_Fortran TYPE SHARED) -target_include_directories (${this} PUBLIC ${INC_ESMF} ${INC_NETCDF}) if (is_openmp) target_compile_options(${this} PRIVATE ${OpenMP_Fortran_FLAGS}) diff --git a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSsurface_GridComp/GEOSland_GridComp/GEOScatch_GridComp/CMakeLists.txt b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSsurface_GridComp/GEOSland_GridComp/GEOScatch_GridComp/CMakeLists.txt index c0b04c2fc..e186b5487 100644 --- a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSsurface_GridComp/GEOSland_GridComp/GEOScatch_GridComp/CMakeLists.txt +++ b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSsurface_GridComp/GEOSland_GridComp/GEOScatch_GridComp/CMakeLists.txt @@ -3,11 +3,10 @@ esma_set_this () set (srcs GEOS_CatchGridComp.F90 catchment.F90 - catch_incr.F90 + catch_incr.F90 ) esma_add_library (${this} SRCS ${srcs} - DEPENDENCIES MAPL GEOS_LandShared) -target_include_directories (${this} PUBLIC ${INC_ESMF} ${INC_NETCDF}) + DEPENDENCIES MAPL GEOS_LandShared esmf NetCDF::NetCDF_Fortran) diff --git a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSsurface_GridComp/GEOSland_GridComp/GEOSroute_GridComp/CMakeLists.txt b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSsurface_GridComp/GEOSland_GridComp/GEOSroute_GridComp/CMakeLists.txt index e31ecb903..60f42d95e 100644 --- a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSsurface_GridComp/GEOSland_GridComp/GEOSroute_GridComp/CMakeLists.txt +++ b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSsurface_GridComp/GEOSland_GridComp/GEOSroute_GridComp/CMakeLists.txt @@ -5,9 +5,6 @@ set (srcs routing_model.F90 ) -include_directories (${INC_ESMF} ${INC_NETCDF}) - -esma_add_library (${this} SRCS ${srcs} DEPENDENCIES MAPL) -target_include_directories (${this} PUBLIC ${INC_ESMF} ${INC_NETCDF}) +esma_add_library (${this} SRCS ${srcs} DEPENDENCIES MAPL esmf NetCDF::NetCDF_Fortran) install(PROGRAMS build_rivernetwork.py DESTINATION bin) diff --git a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSsurface_GridComp/GEOSland_GridComp/GEOSvegdyn_GridComp/CMakeLists.txt b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSsurface_GridComp/GEOSland_GridComp/GEOSvegdyn_GridComp/CMakeLists.txt index 68da84d6a..eb015adf7 100644 --- a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSsurface_GridComp/GEOSland_GridComp/GEOSvegdyn_GridComp/CMakeLists.txt +++ b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSsurface_GridComp/GEOSland_GridComp/GEOSvegdyn_GridComp/CMakeLists.txt @@ -1,5 +1,4 @@ esma_set_this () -esma_add_library (${this} SRCS GEOS_VegdynGridComp.F90 DEPENDENCIES MAPL) -target_include_directories (${this} PUBLIC ${INC_ESMF} ${INC_NETCDF}) +esma_add_library (${this} SRCS GEOS_VegdynGridComp.F90 DEPENDENCIES MAPL esmf NetCDF::NetCDF_Fortran) diff --git a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSsurface_GridComp/GEOSlandice_GridComp/CMakeLists.txt b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSsurface_GridComp/GEOSlandice_GridComp/CMakeLists.txt index c6ca3dcad..2700070c3 100644 --- a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSsurface_GridComp/GEOSlandice_GridComp/CMakeLists.txt +++ b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSsurface_GridComp/GEOSlandice_GridComp/CMakeLists.txt @@ -2,6 +2,5 @@ esma_set_this () esma_add_library (${this} SRCS GEOS_LandIceGridComp.F90 - DEPENDENCIES MAPL GEOS_Shared GEOS_SurfaceShared + DEPENDENCIES MAPL GEOS_Shared GEOS_SurfaceShared esmf NetCDF::NetCDF_Fortran ) -target_include_directories (${this} PUBLIC ${INC_ESMF} ${INC_NETCDF}) diff --git a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSsurface_GridComp/GEOSsaltwater_GridComp/CMakeLists.txt b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSsurface_GridComp/GEOSsaltwater_GridComp/CMakeLists.txt index 32d05e16c..4b74f8fc1 100644 --- a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSsurface_GridComp/GEOSsaltwater_GridComp/CMakeLists.txt +++ b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSsurface_GridComp/GEOSsaltwater_GridComp/CMakeLists.txt @@ -7,6 +7,5 @@ set (srcs esma_add_library (${this} SRCS ${srcs} - DEPENDENCIES GEOS_Shared MAPL CICE4) -target_include_directories (${this} PUBLIC ${INC_ESMF} ${INC_NETCDF}) + DEPENDENCIES GEOS_Shared MAPL CICE4 esmf NetCDF::NetCDF_Fortran) diff --git a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSsurface_GridComp/Utils/Raster/CMakeLists.txt b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSsurface_GridComp/Utils/Raster/CMakeLists.txt index 8dc2753c6..98956b0cd 100644 --- a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSsurface_GridComp/Utils/Raster/CMakeLists.txt +++ b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSsurface_GridComp/Utils/Raster/CMakeLists.txt @@ -1,28 +1,24 @@ esma_set_this(OVERRIDE raster) set (srcs -date_time_util.F90 -leap_year.F90 -easeV1_conv.F90 +date_time_util.F90 +leap_year.F90 +easeV1_conv.F90 mod_process_hres_data.F90 -easeV2_conv.F90 +easeV2_conv.F90 rasterize.F90 read_riveroutlet.F90 -CubedSphere_GridMod.F90 +CubedSphere_GridMod.F90 rmTinyCatchParaMod.F90 comp_CATCHCN_AlbScale_parameters.F90 zip.c util.c -) +) if(NOT FORTRAN_COMPILER_SUPPORTS_FINDLOC) list(APPEND srcs findloc.F90) endif () -include_directories(${INC_ESMF}) -include_directories(${INC_NETCDF}) - -esma_add_library(${this} SRCS ${srcs} DEPENDENCIES MAPL GEOS_LandShared) -target_link_libraries(${this} PRIVATE OpenMP::OpenMP_Fortran OpenMP::OpenMP_C) +esma_add_library(${this} SRCS ${srcs} DEPENDENCIES MAPL GEOS_LandShared esmf NetCDF::NetCDF_Fortran OpenMP::OpenMP_Fortran OpenMP::OpenMP_C) if(NOT FORTRAN_COMPILER_SUPPORTS_FINDLOC) target_compile_definitions(${this} PRIVATE USE_EXTERNAL_FINDLOC) @@ -31,14 +27,17 @@ endif () # MAT NOTE This should use find_package(ZLIB) but Baselibs currently # confuses find_package(). This is a hack until Baselibs is # reorganized. -set (INC_ZLIB ${BASEDIR}/include/zlib) -target_include_directories(${this} PRIVATE ${INC_ZLIB}) +if (Baselibs_FOUND) + set (INC_ZLIB ${BASEDIR}/include/zlib) + target_include_directories(${this} PRIVATE ${INC_ZLIB}) +else () + find_package(ZLIB) + target_link_libraries(${this} PRIVATE ZLIB::zlib) +endif () ecbuild_add_executable (TARGET chk_clsm_params.x SOURCES chk_clsm_params.F90 LIBS MAPL ${this}) ecbuild_add_executable (TARGET CombineRasters.x SOURCES CombineRasters.F90 LIBS MAPL ${this}) -ecbuild_add_executable (TARGET mkCatchParam.x SOURCES mkCatchParam.F90 LIBS MAPL ${this} ${OpenMP_Fortran_LIBRARIES}) -set_target_properties(mkCatchParam.x PROPERTIES COMPILE_FLAGS "${OpenMP_Fortran_FLAGS}") -set_target_properties(mkCatchParam.x PROPERTIES LINK_FLAGS "${OpenMP_Fortran_FLAGS}") +ecbuild_add_executable (TARGET mkCatchParam.x SOURCES mkCatchParam.F90 LIBS MAPL ${this} OpenMP::OpenMP_Fortran) ecbuild_add_executable (TARGET mkCubeFVRaster.x SOURCES mkCubeFVRaster.F90 LIBS MAPL ${this}) ecbuild_add_executable (TARGET mkLandRaster.x SOURCES mkLandRaster.F90 LIBS MAPL ${this}) ecbuild_add_executable (TARGET mkLatLonRaster.x SOURCES mkLatLonRaster.F90 LIBS MAPL ${this}) diff --git a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSsurface_GridComp/Utils/mk_restarts/CMakeLists.txt b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSsurface_GridComp/Utils/mk_restarts/CMakeLists.txt index 0d162f7f9..74776f1be 100644 --- a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSsurface_GridComp/Utils/mk_restarts/CMakeLists.txt +++ b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSsurface_GridComp/Utils/mk_restarts/CMakeLists.txt @@ -5,25 +5,22 @@ set(srcs ) set (exe_srcs - Scale_Catch.F90 - Scale_CatchCN.F90 - cv_SaltRestart.F90 + Scale_Catch.F90 + Scale_CatchCN.F90 + cv_SaltRestart.F90 SaltIntSplitter.F90 - SaltImpConverter.F90 - mk_CICERestart.F90 - mk_CatchCNRestarts.F90 - mk_CatchRestarts.F90 - mk_LakeLandiceSaltRestarts.F90 + SaltImpConverter.F90 + mk_CICERestart.F90 + mk_CatchCNRestarts.F90 + mk_CatchRestarts.F90 + mk_LakeLandiceSaltRestarts.F90 mk_RouteRestarts.F90 mk_GEOSldasRestarts.F90 -) - -include_directories(${INC_ESMF}) -include_directories(${INC_NETCDF}) +) esma_add_library (${this} SRCS ${srcs} - DEPENDENCIES MAPL) + DEPENDENCIES MAPL esmf NetCDF::NetCDF_Fortran) foreach (src ${exe_srcs}) string (REGEX REPLACE ".F90" "" exe ${src}) diff --git a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSturbulence_GridComp/CMakeLists.txt b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSturbulence_GridComp/CMakeLists.txt index f53cf883b..7303c3642 100644 --- a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSturbulence_GridComp/CMakeLists.txt +++ b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSturbulence_GridComp/CMakeLists.txt @@ -12,5 +12,4 @@ set (srcs esma_add_library (${this} SRCS ${srcs} - DEPENDENCIES GEOS_Shared MAPL) -target_include_directories (${this} PUBLIC ${INC_ESMF} ${INC_NETCDF}) + DEPENDENCIES GEOS_Shared MAPL esmf NetCDF::NetCDF_Fortran) diff --git a/GEOSagcm_GridComp/GEOSsuperdyn_GridComp/GEOSdatmodyn_GridComp/CMakeLists.txt b/GEOSagcm_GridComp/GEOSsuperdyn_GridComp/GEOSdatmodyn_GridComp/CMakeLists.txt index c4341d188..cae5eec4e 100644 --- a/GEOSagcm_GridComp/GEOSsuperdyn_GridComp/GEOSdatmodyn_GridComp/CMakeLists.txt +++ b/GEOSagcm_GridComp/GEOSsuperdyn_GridComp/GEOSdatmodyn_GridComp/CMakeLists.txt @@ -5,6 +5,5 @@ set (srcs stratus_ic.F90 cfmip_ic.F90 NeuralNet.F90 GEOS_DatmoDynGridComp.F90 ) -esma_add_library (${this} SRCS ${srcs} DEPENDENCIES GEOS_Shared MAPL) -target_include_directories (${this} PUBLIC ${INC_ESMF} ${INC_NETCDF}) +esma_add_library (${this} SRCS ${srcs} DEPENDENCIES GEOS_Shared MAPL esmf NetCDF::NetCDF_Fortran) diff --git a/GEOSmkiau_GridComp/CMakeLists.txt b/GEOSmkiau_GridComp/CMakeLists.txt index 3e8cbd83e..4dfb1b377 100644 --- a/GEOSmkiau_GridComp/CMakeLists.txt +++ b/GEOSmkiau_GridComp/CMakeLists.txt @@ -8,8 +8,6 @@ set (srcs DynVec_GridComp.F90 ) -set(dependencies MAPL_cfio_r4 NCEP_sp_r4i4 GEOS_Shared GMAO_mpeu MAPL FVdycoreCubed_GridComp) +set(dependencies MAPL_cfio_r4 NCEP_sp_r4i4 GEOS_Shared GMAO_mpeu MAPL FVdycoreCubed_GridComp esmf NetCDF::NetCDF_Fortran) esma_add_library (${this} SRCS ${srcs} DEPENDENCIES ${dependencies}) -target_include_directories (${this} PUBLIC ${include_INC_ESMF}) -target_include_directories (${this} PUBLIC ${INC_NETCDF}) diff --git a/GEOSogcm_GridComp/GEOS_OceanGridComp/GEOSdatasea_GridComp/CMakeLists.txt b/GEOSogcm_GridComp/GEOS_OceanGridComp/GEOSdatasea_GridComp/CMakeLists.txt index 3bb403a0b..279a006eb 100644 --- a/GEOSogcm_GridComp/GEOS_OceanGridComp/GEOSdatasea_GridComp/CMakeLists.txt +++ b/GEOSogcm_GridComp/GEOS_OceanGridComp/GEOSdatasea_GridComp/CMakeLists.txt @@ -1,6 +1,3 @@ esma_set_this () -esma_add_library (${this} SRCS GEOS_DataSeaGridComp.F90 DEPENDENCIES MAPL) -target_include_directories (${this} PUBLIC ${INC_ESMF} ${INC_NETCDF}) - - +esma_add_library (${this} SRCS GEOS_DataSeaGridComp.F90 DEPENDENCIES MAPL esmf NetCDF::NetCDF_Fortran) diff --git a/GEOSogcm_GridComp/GEOS_OradGridComp/CMakeLists.txt b/GEOSogcm_GridComp/GEOS_OradGridComp/CMakeLists.txt index 81331c51a..6b01049af 100644 --- a/GEOSogcm_GridComp/GEOS_OradGridComp/CMakeLists.txt +++ b/GEOSogcm_GridComp/GEOS_OradGridComp/CMakeLists.txt @@ -1,5 +1,4 @@ esma_set_this () -esma_add_library (${this} SRCS GEOS_OradGridComp.F90 DEPENDENCIES MAPL) -target_include_directories (${this} PUBLIC ${INC_ESMF} ${INC_NETCDF}) +esma_add_library (${this} SRCS GEOS_OradGridComp.F90 DEPENDENCIES MAPL esmf NetCDF::NetCDF_Fortran) diff --git a/GEOSogcm_GridComp/GEOSseaice_GridComp/GEOSdataseaice_GridComp/CMakeLists.txt b/GEOSogcm_GridComp/GEOSseaice_GridComp/GEOSdataseaice_GridComp/CMakeLists.txt index a717857ed..6ffd86c93 100644 --- a/GEOSogcm_GridComp/GEOSseaice_GridComp/GEOSdataseaice_GridComp/CMakeLists.txt +++ b/GEOSogcm_GridComp/GEOSseaice_GridComp/GEOSdataseaice_GridComp/CMakeLists.txt @@ -1,5 +1,4 @@ esma_set_this () -esma_add_library (${this} SRCS GEOS_DataSeaIceGridComp.F90 DEPENDENCIES MAPL CICE4) -target_include_directories (${this} PUBLIC ${INC_ESMF} ${INC_NETCDF}) +esma_add_library (${this} SRCS GEOS_DataSeaIceGridComp.F90 DEPENDENCIES MAPL CICE4 esmf NetCDF::NetCDF_Fortran) From 1b30b53ec6f2c71bb62ee17a99fa440d6d05c5a7 Mon Sep 17 00:00:00 2001 From: Matthew Thompson Date: Thu, 17 Mar 2022 15:35:06 -0400 Subject: [PATCH 28/28] Fix GNU error with character array constructors --- GEOSogcm_GridComp/GEOS_OgcmGridComp.F90 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/GEOSogcm_GridComp/GEOS_OgcmGridComp.F90 b/GEOSogcm_GridComp/GEOS_OgcmGridComp.F90 index ad8ce9a0e..ee3ac2d70 100644 --- a/GEOSogcm_GridComp/GEOS_OgcmGridComp.F90 +++ b/GEOSogcm_GridComp/GEOS_OgcmGridComp.F90 @@ -783,9 +783,9 @@ subroutine SetServices ( GC, RC ) if (ocean_extData) then if (DO_DATASEAONLY==1) then ! fake-ocean (i.e., data ocean) if (ocean_sssData) then - call MAPL_TerminateImport ( GC, ["DATA_SST","DATA_SSS", "DATA_ICE","DATA_KPAR"], [ocean,ocean,seaice,orad], RC=STATUS ) + call MAPL_TerminateImport ( GC, ["DATA_SST ","DATA_SSS ", "DATA_ICE ","DATA_KPAR"], [ocean,ocean,seaice,orad], RC=STATUS ) else ! no (None) data_sss - call MAPL_TerminateImport ( GC, ["DATA_SST", "DATA_ICE","DATA_KPAR"], [ocean, seaice,orad], RC=STATUS ) + call MAPL_TerminateImport ( GC, ["DATA_SST ", "DATA_ICE ","DATA_KPAR"], [ocean, seaice,orad], RC=STATUS ) endif else ! we get real ocean and sea ice in case of coupled model, and only data KPAR is used. call MAPL_TerminateImport ( GC, ["DATA_KPAR"], [orad], RC=STATUS ) ! need to terminate others as well: cosz, discharge, frocean, pice, taux, tauy