36 use num_types,
only: rp
37 use field_list,
only: field_list_t
38 use json_module,
only: json_file
39 use json_utils,
only: json_get, json_get_or_default
40 use source_term,
only: source_term_t
41 use coefs,
only: coef_t
42 use neko_config,
only: neko_bcknd_device
43 use utils,
only: neko_error
44 use field,
only: field_t
45 use field_math,
only: field_subcol3
53 type(field_t),
pointer :: chi => null()
55 type(field_t),
pointer :: u => null()
57 type(field_t),
pointer :: v => null()
59 type(field_t),
pointer :: w => null()
63 procedure, pass(this) :: init => &
64 simple_brinkman_source_term_init_from_json
66 procedure, pass(this) :: init_from_components => &
67 simple_brinkman_source_term_init_from_components
69 procedure, pass(this) :: free => simple_brinkman_source_term_free
71 procedure, pass(this) :: compute_ => simple_brinkman_source_term_compute
81 subroutine simple_brinkman_source_term_init_from_json(this, json, fields, &
84 type(json_file),
intent(inout) :: json
85 type(field_list_t),
intent(in),
target :: fields
86 type(coef_t),
intent(in),
target :: coef
87 character(len=*),
intent(in) :: variable_name
94 end subroutine simple_brinkman_source_term_init_from_json
102 subroutine simple_brinkman_source_term_init_from_components(this, &
103 f_x, f_y, f_z, chi, u, v, w, coef)
105 type(field_t),
pointer,
intent(in) :: f_x, f_y, f_z
106 type(field_list_t) :: fields
108 real(kind=rp) :: start_time
109 real(kind=rp) :: end_time
110 type(field_t),
intent(in),
target :: u, v, w
111 type(field_t),
intent(in),
target :: chi
116 end_time = 100000000.0_rp
123 call fields%assign(1, f_x)
124 call fields%assign(2, f_y)
125 call fields%assign(3, f_z)
127 call this%init_base(fields, coef, start_time, end_time)
136 end subroutine simple_brinkman_source_term_init_from_components
139 subroutine simple_brinkman_source_term_free(this)
142 call this%free_base()
143 end subroutine simple_brinkman_source_term_free
149 subroutine simple_brinkman_source_term_compute(this, t, tstep)
151 real(kind=rp),
intent(in) :: t
152 integer,
intent(in) :: tstep
153 type(field_t),
pointer :: fu, fv, fw
155 fu => this%fields%get_by_index(1)
156 fv => this%fields%get_by_index(2)
157 fw => this%fields%get_by_index(3)
159 call field_subcol3(fu, this%u, this%chi)
160 call field_subcol3(fv, this%v, this%chi)
161 call field_subcol3(fw, this%w, this%chi)
163 end subroutine simple_brinkman_source_term_compute
Implements the simple_brinkman_source_term_t type.
A simple Brinkman source term.