37 use num_types,
only: rp
38 use space,
only: space_t
39 use field,
only: field_t
40 use coefs,
only: coef_t
41 use json_module,
only : json_file
42 use field_series,
only: field_series_t
43 use time_scheme_controller,
only: time_scheme_controller_t
50 procedure(compute_adv_lin), pass(this),
deferred :: compute_linear
51 procedure(compute_adv_lin), pass(this),
deferred :: compute_adjoint
52 procedure(compute_scalar_adv_lin), pass(this),
deferred :: &
53 compute_adjoint_scalar
54 procedure(advection_adjoint_free), pass(this),
deferred :: free
71 module subroutine advection_adjoint_factory(object, json, coef, &
72 ulag, vlag, wlag, dtlag, tlag, time_scheme, use_dummy, slag)
73 class(advection_adjoint_t),
allocatable,
intent(inout) :: object
74 type(json_file),
intent(inout) :: json
75 type(coef_t),
intent(inout),
target :: coef
76 type(field_series_t),
intent(in),
target :: ulag, vlag, wlag
77 real(kind=rp),
intent(in),
target :: dtlag(10)
78 real(kind=rp),
intent(in),
target :: tlag(10)
79 type(time_scheme_controller_t),
intent(in),
target :: time_scheme
80 logical,
optional,
intent(in) :: use_dummy
81 type(field_series_t),
target,
optional,
intent(in) :: slag
82 end subroutine advection_adjoint_factory
100 subroutine compute_adv_lin(this, vx, vy, vz, vxb, vyb, vzb, fx, fy, fz, &
102 import :: advection_adjoint_t
107 class(advection_adjoint_t),
intent(inout) :: this
108 type(space_t),
intent(inout) :: Xh
109 type(coef_t),
intent(inout) :: coef
110 type(field_t),
intent(inout) :: vx, vy, vz
111 type(field_t),
intent(inout) :: vxb, vyb, vzb
112 type(field_t),
intent(inout) :: fx, fy, fz
113 integer,
intent(in) :: n
114 end subroutine compute_adv_lin
128 subroutine compute_scalar_adv_lin(this, vxb, vyb, vzb, s, fs, Xh, coef, &
130 import :: advection_adjoint_t
135 class(advection_adjoint_t),
intent(inout) :: this
136 type(field_t),
intent(inout) :: vxb, vyb, vzb
137 type(field_t),
intent(inout) :: s
138 type(field_t),
intent(inout) :: fs
139 type(space_t),
intent(inout) :: Xh
140 type(coef_t),
intent(inout) :: coef
141 real(kind=rp),
intent(in),
optional :: dt
142 integer,
intent(in) :: n
143 end subroutine compute_scalar_adv_lin
148 subroutine advection_adjoint_free(this)
149 import :: advection_adjoint_t
150 class(advection_adjoint_t),
intent(inout) :: this
151 end subroutine advection_adjoint_free
154 public :: advection_adjoint_t, advection_adjoint_factory
Subroutines to add advection terms to the RHS of a transport equation.
Base abstract type for computing the advection operator.