35 use num_types,
only: rp
36 use space,
only: space_t
37 use field,
only: field_t
38 use coefs,
only: coef_t
39 use json_module,
only : json_file
40 use field_series,
only: field_series_t
41 use time_scheme_controller,
only: time_scheme_controller_t
48 procedure(compute_adv_lin), pass(this),
deferred :: compute_linear
49 procedure(compute_adv_lin), pass(this),
deferred :: compute_adjoint
50 procedure(compute_scalar_adv_lin), pass(this),
deferred :: &
51 compute_adjoint_scalar
52 procedure(advection_adjoint_free), pass(this),
deferred :: free
69 module subroutine advection_adjoint_factory(object, json, coef, &
70 ulag, vlag, wlag, dtlag, tlag, time_scheme, use_dummy, slag)
71 class(advection_adjoint_t),
allocatable,
intent(inout) :: object
72 type(json_file),
intent(inout) :: json
73 type(coef_t),
intent(inout),
target :: coef
74 type(field_series_t),
intent(in),
target :: ulag, vlag, wlag
75 real(kind=rp),
intent(in),
target :: dtlag(10)
76 real(kind=rp),
intent(in),
target :: tlag(10)
77 type(time_scheme_controller_t),
intent(in),
target :: time_scheme
78 logical,
optional,
intent(in) :: use_dummy
79 type(field_series_t),
target,
optional,
intent(in) :: slag
80 end subroutine advection_adjoint_factory
98 subroutine compute_adv_lin(this, vx, vy, vz, vxb, vyb, vzb, fx, fy, fz, &
100 import :: advection_adjoint_t
105 class(advection_adjoint_t),
intent(inout) :: this
106 type(space_t),
intent(inout) :: Xh
107 type(coef_t),
intent(inout) :: coef
108 type(field_t),
intent(inout) :: vx, vy, vz
109 type(field_t),
intent(inout) :: vxb, vyb, vzb
110 type(field_t),
intent(inout) :: fx, fy, fz
111 integer,
intent(in) :: n
112 end subroutine compute_adv_lin
126 subroutine compute_scalar_adv_lin(this, vxb, vyb, vzb, s, fs, Xh, coef, &
128 import :: advection_adjoint_t
133 class(advection_adjoint_t),
intent(inout) :: this
134 type(field_t),
intent(inout) :: vxb, vyb, vzb
135 type(field_t),
intent(inout) :: s
136 type(field_t),
intent(inout) :: fs
137 type(space_t),
intent(inout) :: Xh
138 type(coef_t),
intent(inout) :: coef
139 real(kind=rp),
intent(in),
optional :: dt
140 integer,
intent(in) :: n
141 end subroutine compute_scalar_adv_lin
146 subroutine advection_adjoint_free(this)
147 import :: advection_adjoint_t
148 class(advection_adjoint_t),
intent(inout) :: this
149 end subroutine advection_adjoint_free
152 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.