! ! This work (Common Community Physics Package), identified by NOAA, NCAR, ! CU/CIRES, is free of known copyright restrictions and is placed in the ! public domain. ! ! THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR ! IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, ! FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL ! THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER ! IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN ! CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ! !> !! @brief Auto-generated API for the CCPP static build !! ! module ccpp_static_api use ccpp_suite_cap, only: suite_init_cap,suite_run_cap,suite_finalize_cap use ccpp_group_fast_physics_cap, only: fast_physics_init_cap,fast_physics_run_cap,fast_physics_finalize_cap use ccpp_group_time_vary_cap, only: time_vary_init_cap,time_vary_run_cap,time_vary_finalize_cap use ccpp_group_radiation_cap, only: radiation_init_cap,radiation_run_cap,radiation_finalize_cap use ccpp_group_physics_cap, only: physics_init_cap,physics_run_cap,physics_finalize_cap use ccpp_group_stochastics_cap, only: stochastics_init_cap,stochastics_run_cap,stochastics_finalize_cap use CCPP_data, only: GFS_Data use CCPP_data, only: GFS_Control use CCPP_data, only: CCPP_interstitial use CCPP_data, only: GFS_Interstitial use CCPP_data, only: CCPP_shared use GFS_typedefs, only: con_t0c use CCPP_data, only: GFS_Data use CCPP_data, only: GFS_Control use CCPP_data, only: CCPP_interstitial use GFS_typedefs, only: con_epsm1 use GFS_typedefs, only: con_hvap use CCPP_data, only: GFS_Interstitial use GFS_typedefs, only: con_rd use GFS_typedefs, only: con_rv use GFS_typedefs, only: con_g use GFS_typedefs, only: con_cp use GFS_typedefs, only: con_cvap use CCPP_data, only: CCPP_shared use GFS_typedefs, only: LTP use GFS_typedefs, only: con_eps use GFS_typedefs, only: con_pi use GFS_typedefs, only: con_fvirt use GFS_typedefs, only: con_cliq implicit none private public :: ccpp_physics_init,ccpp_physics_run,ccpp_physics_finalize contains subroutine ccpp_physics_init(cdata, group_name, ierr) use ccpp_types, only : ccpp_t implicit none type(ccpp_t), intent(inout) :: cdata character(len=*), optional, intent(in) :: group_name integer, intent(out) :: ierr ierr = 0 if (present(group_name)) then if (trim(group_name)=="fast_physics") then ierr = fast_physics_init_cap(cdata=cdata,CCPP_interstitial=CCPP_interstitial) else if (trim(group_name)=="time_vary") then ierr = time_vary_init_cap(GFS_Interstitial=GFS_Interstitial,cdata=cdata,GFS_Data=GFS_Data,GFS_Control=GFS_Control, & CCPP_shared=CCPP_shared) else if (trim(group_name)=="radiation") then ierr = radiation_init_cap() else if (trim(group_name)=="physics") then ierr = physics_init_cap(cdata=cdata,GFS_Control=GFS_Control) else if (trim(group_name)=="stochastics") then ierr = stochastics_init_cap() else write(cdata%errmsg, '(*(a))') "Group " // trim(group_name) // " not found" ierr = 1 end if else ierr = suite_init_cap(GFS_Data=GFS_Data,GFS_Control=GFS_Control,CCPP_interstitial=CCPP_interstitial, & GFS_Interstitial=GFS_Interstitial,CCPP_shared=CCPP_shared,cdata=cdata) end if cdata%errflg = ierr end subroutine ccpp_physics_init subroutine ccpp_physics_run(cdata, group_name, ierr) use ccpp_types, only : ccpp_t implicit none type(ccpp_t), intent(inout) :: cdata character(len=*), optional, intent(in) :: group_name integer, intent(out) :: ierr ierr = 0 if (present(group_name)) then if (trim(group_name)=="fast_physics") then ierr = fast_physics_run_cap(cdata=cdata,CCPP_shared=CCPP_shared,CCPP_interstitial=CCPP_interstitial) else if (trim(group_name)=="time_vary") then ierr = time_vary_run_cap(cdata=cdata,GFS_Data=GFS_Data,GFS_Control=GFS_Control,CCPP_shared=CCPP_shared) else if (trim(group_name)=="radiation") then ierr = radiation_run_cap(cdata=cdata,GFS_Interstitial=GFS_Interstitial,GFS_Data=GFS_Data,GFS_Control=GFS_Control, & LTP=LTP) else if (trim(group_name)=="physics") then ierr = physics_run_cap(GFS_Control=GFS_Control,GFS_Data=GFS_Data,con_epsm1=con_epsm1,con_hvap=con_hvap, & GFS_Interstitial=GFS_Interstitial,con_rd=con_rd,con_rv=con_rv,con_g=con_g, & con_cp=con_cp,con_cvap=con_cvap,CCPP_shared=CCPP_shared,con_t0c=con_t0c, & con_eps=con_eps,con_pi=con_pi,cdata=cdata,con_fvirt=con_fvirt,con_cliq=con_cliq) else if (trim(group_name)=="stochastics") then ierr = stochastics_run_cap(cdata=cdata,GFS_Data=GFS_Data,GFS_Control=GFS_Control) else write(cdata%errmsg, '(*(a))') "Group " // trim(group_name) // " not found" ierr = 1 end if else ierr = suite_run_cap(con_t0c=con_t0c,GFS_Data=GFS_Data,GFS_Control=GFS_Control,CCPP_interstitial=CCPP_interstitial, & con_epsm1=con_epsm1,con_hvap=con_hvap,GFS_Interstitial=GFS_Interstitial, & con_rd=con_rd,con_rv=con_rv,con_g=con_g,con_cp=con_cp,con_cvap=con_cvap, & CCPP_shared=CCPP_shared,LTP=LTP,con_eps=con_eps,con_pi=con_pi,cdata=cdata, & con_fvirt=con_fvirt,con_cliq=con_cliq) end if cdata%errflg = ierr end subroutine ccpp_physics_run subroutine ccpp_physics_finalize(cdata, group_name, ierr) use ccpp_types, only : ccpp_t implicit none type(ccpp_t), intent(inout) :: cdata character(len=*), optional, intent(in) :: group_name integer, intent(out) :: ierr ierr = 0 if (present(group_name)) then if (trim(group_name)=="fast_physics") then ierr = fast_physics_finalize_cap(cdata=cdata) else if (trim(group_name)=="time_vary") then ierr = time_vary_finalize_cap(cdata=cdata) else if (trim(group_name)=="radiation") then ierr = radiation_finalize_cap() else if (trim(group_name)=="physics") then ierr = physics_finalize_cap(cdata=cdata) else if (trim(group_name)=="stochastics") then ierr = stochastics_finalize_cap() else write(cdata%errmsg, '(*(a))') "Group " // trim(group_name) // " not found" ierr = 1 end if else ierr = suite_finalize_cap(cdata=cdata) end if cdata%errflg = ierr end subroutine ccpp_physics_finalize end module ccpp_static_api