diff --git a/atmos_model.F90 b/atmos_model.F90 index 0fc5d7fe7..d92a7d2b9 100644 --- a/atmos_model.F90 +++ b/atmos_model.F90 @@ -276,16 +276,6 @@ subroutine update_atmos_radiation_physics (Atmos) call atmos_phys_driver_statein (IPD_data, Atm_block, flip_vc) call mpp_clock_end(getClock) -#ifdef CCPP - if (IPD_Control%first_time_step) then - ! Initialize the CCPP framework and physics - call CCPP_step (step="init", nblks=Atm_block%nblks, ierr=ierr) - if (ierr/=0) call mpp_error(FATAL, 'Call to CCPP init step failed') - call CCPP_step (step="physics_init", nblks=Atm_block%nblks, ierr=ierr) - if (ierr/=0) call mpp_error(FATAL, 'Call to CCPP physics_init step failed') - end if -#endif - !--- if dycore only run, set up the dummy physics output state as the input state if (dycore_only) then do nb = 1,Atm_block%nblks @@ -686,6 +676,18 @@ subroutine atmos_model_init (Atmos, Time_init, Time, Time_step) call FV3GFS_restart_read (IPD_Data, IPD_Restart, Atm_block, IPD_Control, Atmos%domain) #endif +#ifdef CCPP + ! Populate the IPD_Data%Statein container with the prognostic state + ! in Atm_block, which contains the initial conditions/restart data. + call atmos_phys_driver_statein (IPD_data, Atm_block, flip_vc) + ! Initialize the CCPP framework + call CCPP_step (step="init", nblks=Atm_block%nblks, ierr=ierr) + if (ierr/=0) call mpp_error(FATAL, 'Call to CCPP init step failed') + ! Initialize the CCPP physics + call CCPP_step (step="physics_init", nblks=Atm_block%nblks, ierr=ierr) + if (ierr/=0) call mpp_error(FATAL, 'Call to CCPP physics_init step failed') +#endif + !--- set the initial diagnostic timestamp diag_time = Time if (output_1st_tstep_rst) then diff --git a/ccpp/physics b/ccpp/physics index 4eaa560af..44f9e596e 160000 --- a/ccpp/physics +++ b/ccpp/physics @@ -1 +1 @@ -Subproject commit 4eaa560af9e88270ed74a72effff6f12899afb1b +Subproject commit 44f9e596ee55af92d3bad12c9cac0bb659333468