FV3 Bundle
fv3jedi_lm_physics_mod.F90
Go to the documentation of this file.
2 
6 
9 
10 !> Physics driver for fv3-jedi linearized model
11 !> Just calls its children in turn if turned on
12 
13 implicit none
14 private
16 
18  type(fv3jedi_lm_moist_type) :: fv3jedi_lm_moist
19  type(fv3jedi_lm_turbulence_type) :: fv3jedi_lm_turbulence
20  contains
21  procedure :: create
22  procedure :: init_nl
23  procedure :: init_tl
24  procedure :: init_ad
25  procedure :: step_nl
26  procedure :: step_tl
27  procedure :: step_ad
28  procedure :: delete
30 
31 ! ------------------------------------------------------------------------------
32 contains
33 ! ------------------------------------------------------------------------------
34 
35 subroutine create(self,conf)
36 
37  implicit none
38 
39  class(fv3jedi_lm_physics_type), target, intent(inout) :: self
40  type(fv3jedi_lm_conf), intent(in) :: conf
41 
42  if (conf%do_phy_mst.ne.0) call self%fv3jedi_lm_moist%create(conf)
43  if (conf%do_phy_trb.ne.0) call self%fv3jedi_lm_turbulence%create(conf)
44 
45 endsubroutine create
46 
47 ! ------------------------------------------------------------------------------
48 
49 subroutine init_nl(self,conf,pert,traj)
50 
51  implicit none
52 
53  class(fv3jedi_lm_physics_type), intent(inout) :: self
54  type(fv3jedi_lm_conf), intent(in) :: conf
55  type(fv3jedi_lm_pert), intent(inout) :: pert
56  type(fv3jedi_lm_traj), intent(in) :: traj
57 
58  if (conf%do_phy_mst.ne.0) call self%fv3jedi_lm_moist%init_nl(pert,traj)
59  if (conf%do_phy_trb.ne.0) call self%fv3jedi_lm_turbulence%init_nl(pert,traj)
60 
61 endsubroutine init_nl
62 
63 ! ------------------------------------------------------------------------------
64 
65 subroutine init_tl(self,conf,pert,traj)
66 
67  implicit none
68 
69  class(fv3jedi_lm_physics_type), intent(inout) :: self
70  type(fv3jedi_lm_conf), intent(in) :: conf
71  type(fv3jedi_lm_pert), intent(inout) :: pert
72  type(fv3jedi_lm_traj), intent(in) :: traj
73 
74  if (conf%do_phy_mst.ne.0) call self%fv3jedi_lm_moist%init_tl(pert,traj)
75  if (conf%do_phy_trb.ne.0) call self%fv3jedi_lm_turbulence%init_tl(pert,traj)
76 
77 endsubroutine init_tl
78 
79 ! ------------------------------------------------------------------------------
80 
81 subroutine init_ad(self,conf,pert,traj)
82 
83  implicit none
84 
85  class(fv3jedi_lm_physics_type), intent(inout) :: self
86  type(fv3jedi_lm_conf), intent(in) :: conf
87  type(fv3jedi_lm_pert), intent(inout) :: pert
88  type(fv3jedi_lm_traj), intent(in) :: traj
89 
90  if (conf%do_phy_mst.ne.0) call self%fv3jedi_lm_moist%init_ad(pert,traj)
91  if (conf%do_phy_trb.ne.0) call self%fv3jedi_lm_turbulence%init_ad(pert,traj)
92 
93 endsubroutine init_ad
94 
95 ! ------------------------------------------------------------------------------
96 
97 subroutine step_nl(self,conf,traj)
98 
99  implicit none
100 
101  class(fv3jedi_lm_physics_type), intent(inout), target :: self
102  type(fv3jedi_lm_traj), intent(inout) :: traj
103  type(fv3jedi_lm_conf), intent(in) :: conf
104 
105  if (conf%do_phy_mst.ne.0) call self%fv3jedi_lm_moist%step_nl(conf,traj)
106  if (conf%do_phy_trb.ne.0) call self%fv3jedi_lm_turbulence%step_nl(conf,traj)
107 
108 endsubroutine step_nl
109 
110 ! ------------------------------------------------------------------------------
111 
112 subroutine step_tl(self,conf,traj,pert)
114  implicit none
115 
116  class(fv3jedi_lm_physics_type), target, intent(inout) :: self
117  type(fv3jedi_lm_conf), intent(in) :: conf
118  type(fv3jedi_lm_traj), intent(in) :: traj
119  type(fv3jedi_lm_pert), intent(inout) :: pert
120 
121  if (conf%do_phy_mst.ne.0) call self%fv3jedi_lm_moist%step_tl(conf,traj,pert)
122  if (conf%do_phy_trb.ne.0) call self%fv3jedi_lm_turbulence%step_tl(conf,traj,pert)
123 
124 endsubroutine step_tl
125 
126 ! ------------------------------------------------------------------------------
127 
128 subroutine step_ad(self,conf,traj,pert)
130  implicit none
131 
132  class(fv3jedi_lm_physics_type), target, intent(inout) :: self
133  type(fv3jedi_lm_conf), intent(in) :: conf
134  type(fv3jedi_lm_traj), intent(in) :: traj
135  type(fv3jedi_lm_pert), intent(inout) :: pert
136 
137  if (conf%do_phy_trb.ne.0) call self%fv3jedi_lm_turbulence%step_ad(conf,traj,pert)
138  if (conf%do_phy_mst.ne.0) call self%fv3jedi_lm_moist%step_ad(conf,traj,pert)
139 
140 endsubroutine step_ad
141 
142 ! ------------------------------------------------------------------------------
143 
144 subroutine delete(self,conf)
146  implicit none
147  class(fv3jedi_lm_physics_type), intent(inout) :: self
148  type(fv3jedi_lm_conf), intent(in) :: conf
149 
150  if (conf%do_phy_mst.ne.0) call self%fv3jedi_lm_moist%delete(conf)
151  if (conf%do_phy_trb.ne.0) call self%fv3jedi_lm_turbulence%delete(conf)
152 
153 endsubroutine delete
154 
155 ! ------------------------------------------------------------------------------
156 
157 end module fv3jedi_lm_physics_mod
subroutine init_tl(self, conf, pert, traj)
subroutine init_ad(self, conf, pert, traj)
Definition: conf.py:1
subroutine step_tl(self, conf, traj, pert)
subroutine init_nl(self, conf, pert, traj)
subroutine, public delete(self)
Physics driver for fv3-jedi linearized model Just calls its children in turn if turned on...
subroutine step_nl(self, conf, traj)
subroutine step_ad(self, conf, traj, pert)
subroutine, public create(self, geom, vars)
Constants for the FV3 model.