From 2a1e623adbb9d1b6c812959a641647fcb50e2425 Mon Sep 17 00:00:00 2001 From: Lucas Harris Date: Tue, 24 May 2022 21:42:10 -0400 Subject: [PATCH 1/3] Bugfix from Jan-Huey, which created output every dt_atmos for the physics diagnostics --- SHiELD/atmos_model.F90 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/SHiELD/atmos_model.F90 b/SHiELD/atmos_model.F90 index 01c674f..6d461a3 100644 --- a/SHiELD/atmos_model.F90 +++ b/SHiELD/atmos_model.F90 @@ -151,7 +151,7 @@ module atmos_model_mod logical :: dycore_only = .false. logical :: debug = .false. logical :: sync = .false. -logical :: first_time_step = .true. +logical :: first_time_step = .false. logical :: fprint = .true. real, dimension(4096) :: fdiag = 0. ! xic: TODO: this is hard coded, space can run out in some cases. Should make it allocatable. logical :: fdiag_override = .false. ! lmh: if true overrides fdiag and fhzer: all quantities are zeroed out after every calcluation, output interval and accumulation/avg/max/min are controlled by diag_manager, fdiag controls output interval only @@ -627,7 +627,7 @@ subroutine update_atmos_model_state (Atmos) if (mpp_pe() == mpp_root_pe()) write(6,*) ' gfs diags time since last bucket empty: ',time_int/3600.,'hrs' call atmosphere_nggps_diag(Atmos%Time) endif - if (ANY(nint(fdiag(:)*3600.0) == seconds) .or. (fdiag_fix .and. mod(seconds, nint(fdiag(1)*3600.0)) .eq. 0) .or. first_time_step) then + if (ANY(nint(fdiag(:)*3600.0) == seconds) .or. (fdiag_fix .and. mod(seconds, nint(fdiag(1)*3600.0)) .eq. 0) .or. (IPD_Control%kdt == 1 .and. first_time_step)) then if(Atmos%iau_offset > zero) then if( time_int - Atmos%iau_offset*3600. > zero ) then time_int = time_int - Atmos%iau_offset*3600. From d73e2b55052dc53a366ab26407da7e2a3f6c0911 Mon Sep 17 00:00:00 2001 From: Lucas Harris Date: Fri, 9 Sep 2022 09:55:23 -0400 Subject: [PATCH 2/3] Updates for new interface in SHiELD Physics --- SHiELD/atmos_model.F90 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SHiELD/atmos_model.F90 b/SHiELD/atmos_model.F90 index 3a12a90..8d42759 100644 --- a/SHiELD/atmos_model.F90 +++ b/SHiELD/atmos_model.F90 @@ -510,7 +510,7 @@ subroutine atmos_model_init (Atmos, Time_init, Time, Time_step, iau_offset) call register_coarse_diag_manager_controlled_diagnostics(Time, coarse_diagnostic_axes) endif if (.not. dycore_only) & - call FV3GFS_restart_read (IPD_Data, IPD_Restart, Atm_block, IPD_Control, Atmos%domain) + call FV3GFS_restart_read (IPD_Data, IPD_Restart, Atm_block, IPD_Control, Atmos%domain, .true.) if (chksum_debug) then if (mpp_pe() == mpp_root_pe()) print *,'RESTART READ ', IPD_Control%kdt, IPD_Control%fhour call FV3GFS_IPD_checksum(IPD_Control, IPD_Data, Atm_block) From 7d19941f320797fac30873a409db945405794786 Mon Sep 17 00:00:00 2001 From: Lucas Harris Date: Fri, 9 Sep 2022 09:55:36 -0400 Subject: [PATCH 3/3] Fixed solo calendar --- solo/atmos_model.F90 | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/solo/atmos_model.F90 b/solo/atmos_model.F90 index d253244..6fe4502 100644 --- a/solo/atmos_model.F90 +++ b/solo/atmos_model.F90 @@ -82,11 +82,12 @@ program atmos_model !----------------------------------------------------------------------- type(domain2d), save :: atmos_domain ! This variable must be treated as read-only !----------------------------------------------------------------------- - character(len=17) :: calendar = ' ' !< The calendar type used by the current integration. Valid values are + character(len=17) :: calendar = 'no_calendar' !< The calendar type used by the current integration. Valid values are !! consistent with the time_manager module: 'gregorian', 'julian', !! 'noleap', or 'thirty_day'. The value 'no_calendar' cannot be used !! because the time_manager's date !! functions are used. !! All values must be lower case. + !! In solo_core the default is no_calendar integer, dimension(4) :: current_time = (/ 0, 0, 0, 0/) !< The current time integration starts with (DD,HH,MM,SS) integer :: years=0 !< Number of years the current integration will be run integer :: months=0 !< Number of months the current integration will be run