10 module procedure vector_norm_scalar
13 module procedure vector_norm2_scalar
16 module procedure scalar_edge_vector
19 module procedure scalar_edge_vector_up
22 module procedure scalar_face_vector
25 module procedure scalar_face_vector_up
28 module procedure scalar_down_vector
29 module procedure vector_down_vector
32 module procedure scalar_up_vector
33 module procedure vector_up_vector
36 module procedure scalar_ddown_vector
37 module procedure vector_ddown_vector
40 module procedure scalar_dup_vector
41 module procedure vector_dup_vector
44 module procedure vector_grad_scalar
47 module procedure scalar_div_vector
50 module procedure scalar_div_dn_vector
53 module procedure scalar_minusdiv_vector
56 module procedure vector_curl_dn_vector
59 module procedure vector_curl_up_vector
64 FUNCTION vector_norm2_scalar (in)
RESULT (out)
65 real,
dimension(:,:,:,:),
intent(in):: in
66 real,
dimension(size(in,1),size(in,2),size(in,3)):: out
68 out = in(:,:,:,1)**2 + in(:,:,:,2)**2 + in(:,:,:,3)**2
69 END FUNCTION vector_norm2_scalar
71 FUNCTION vector_norm_scalar (in)
RESULT (out)
72 real,
dimension(:,:,:,:),
intent(in):: in
73 real,
dimension(size(in,1),size(in,2),size(in,3)):: out
75 out = sqrt(in(:,:,:,1)**2 + in(:,:,:,2)**2 + in(:,:,:,3)**2)
76 END FUNCTION vector_norm_scalar
79 FUNCTION scalar_edge_vector (in)
RESULT (out)
80 real,
dimension(:,:,:),
intent(in):: in
81 real,
dimension(size(in,1),size(in,2),size(in,3),3):: out
83 out(:,:,:,1) = ydn(zdn(in))
84 out(:,:,:,2) = zdn(xdn(in))
85 out(:,:,:,3) = xdn(ydn(in))
86 END FUNCTION scalar_edge_vector
88 FUNCTION scalar_edge_vector_up (in)
RESULT (out)
89 real,
dimension(:,:,:),
intent(in):: in
90 real,
dimension(size(in,1),size(in,2),size(in,3),3):: out
92 out(:,:,:,1) = yup(zup(in))
93 out(:,:,:,2) = zup(xup(in))
94 out(:,:,:,3) = xup(yup(in))
95 END FUNCTION scalar_edge_vector_up
97 FUNCTION scalar_face_vector (in)
RESULT (out)
98 real,
dimension(:,:,:),
intent(in):: in
99 real,
dimension(size(in,1),size(in,2),size(in,3),3):: out
102 out(:,:,:,1) = xdn(in)
103 out(:,:,:,2) = ydn(in)
104 out(:,:,:,3) = zdn(in)
105 END FUNCTION scalar_face_vector
107 FUNCTION scalar_face_vector_up (in)
RESULT (out)
108 real,
dimension(:,:,:),
intent(in):: in
109 real,
dimension(size(in,1),size(in,2),size(in,3),3):: out
112 out(:,:,:,1) = xup(in)
113 out(:,:,:,2) = yup(in)
114 out(:,:,:,3) = zup(in)
115 END FUNCTION scalar_face_vector_up
117 FUNCTION scalar_down_vector (in)
RESULT (out)
118 real,
dimension(:,:,:),
intent(in):: in
119 real,
dimension(size(in,1),size(in,2),size(in,3),3):: out
121 out(:,:,:,1) = xdn(in)
122 out(:,:,:,2) = ydn(in)
123 out(:,:,:,3) = zdn(in)
124 END FUNCTION scalar_down_vector
126 FUNCTION vector_down_vector (in)
RESULT (out)
127 real,
dimension(:,:,:,:),
intent(in):: in
128 real,
dimension(size(in,1),size(in,2),size(in,3),3):: out
130 out(:,:,:,1) = xdn(in(:,:,:,1))
131 out(:,:,:,2) = ydn(in(:,:,:,2))
132 out(:,:,:,3) = zdn(in(:,:,:,3))
133 END FUNCTION vector_down_vector
135 FUNCTION scalar_up_vector (in)
RESULT (out)
136 real,
dimension(:,:,:),
intent(in):: in
137 real,
dimension(size(in,1),size(in,2),size(in,3),3):: out
139 out(:,:,:,1) = xup(in)
140 out(:,:,:,2) = yup(in)
141 out(:,:,:,3) = zup(in)
142 END FUNCTION scalar_up_vector
144 FUNCTION vector_up_vector (in)
RESULT (out)
145 real,
dimension(:,:,:,:),
intent(in):: in
146 real,
dimension(size(in,1),size(in,2),size(in,3),3):: out
148 out(:,:,:,1) = xup(in(:,:,:,1))
149 out(:,:,:,2) = yup(in(:,:,:,2))
150 out(:,:,:,3) = zup(in(:,:,:,3))
151 END FUNCTION vector_up_vector
154 FUNCTION scalar_ddown_vector (ds, in)
RESULT (out)
155 real,
dimension(:,:,:),
intent(in):: in
156 real,
dimension(size(in,1),size(in,2),size(in,3),3):: out
159 out(:,:,:,1) = ddxdn(ds, in)
160 out(:,:,:,2) = ddydn(ds, in)
161 out(:,:,:,3) = ddzdn(ds, in)
162 END FUNCTION scalar_ddown_vector
165 FUNCTION vector_ddown_vector (ds, in)
RESULT (out)
166 real,
dimension(:,:,:,:),
intent(in):: in
167 real,
dimension(size(in,1),size(in,2),size(in,3),3):: out
170 out(:,:,:,1) = ddxdn(ds, in(:,:,:,1))
171 out(:,:,:,2) = ddydn(ds, in(:,:,:,2))
172 out(:,:,:,3) = ddzdn(ds, in(:,:,:,3))
173 END FUNCTION vector_ddown_vector
176 FUNCTION scalar_dup_vector (ds, in)
RESULT (out)
177 real,
dimension(:,:,:),
intent(in):: in
178 real,
dimension(size(in,1),size(in,2),size(in,3),3):: out
181 out(:,:,:,1) = ddxup(ds, in)
182 out(:,:,:,2) = ddyup(ds, in)
183 out(:,:,:,3) = ddzup(ds, in)
184 END FUNCTION scalar_dup_vector
187 FUNCTION vector_dup_vector (ds, in)
RESULT (out)
188 real,
dimension(:,:,:,:),
intent(in):: in
189 real,
dimension(size(in,1),size(in,2),size(in,3),3):: out
192 out(:,:,:,1) = ddxup(ds, in(:,:,:,1))
193 out(:,:,:,2) = ddyup(ds, in(:,:,:,2))
194 out(:,:,:,3) = ddzup(ds, in(:,:,:,3))
195 END FUNCTION vector_dup_vector
198 FUNCTION vector_grad_scalar (mesh, in)
RESULT(out)
199 real,
dimension(:,:,:),
intent(in):: in
200 real,
dimension(size(in,1),size(in,2),size(in,3),3):: out
201 class(
mesh_t),
dimension(:):: mesh
205 out(:,:,:,1) = ddxdn(ds, in)
206 out(:,:,:,2) = ddydn(ds, in)
207 out(:,:,:,3) = ddzdn(ds, in)
210 FUNCTION scalar_div_vector (ds, in)
RESULT (out)
211 real,
dimension(:,:,:,:),
intent(in):: in
212 real,
dimension(size(in,1),size(in,2),size(in,3)):: out
215 out = ddxup(ds, in(:,:,:,1)) + ddyup(ds, in(:,:,:,2)) + ddzup(ds, in(:,:,:,3))
218 FUNCTION scalar_div_dn_vector (ds, in)
RESULT (out)
219 real,
dimension(:,:,:,:),
intent(in):: in
220 real,
dimension(size(in,1),size(in,2),size(in,3)):: out
223 out = ddxdn(ds, in(:,:,:,1)) + ddydn(ds, in(:,:,:,2)) + ddzdn(ds, in(:,:,:,3))
226 FUNCTION scalar_minusdiv_vector (ds, in)
RESULT (out)
227 real,
dimension(:,:,:,:),
intent(in):: in
228 real,
dimension(size(in,1),size(in,2),size(in,3)):: out
231 out = - ddxup(ds, in(:,:,:,1)) - ddyup(ds, in(:,:,:,2)) - ddzup(ds, in(:,:,:,3))
234 FUNCTION vector_curl_dn_vector (ds, in)
RESULT (out)
235 real,
dimension(:,:,:,:),
intent(in):: in
236 real,
dimension(size(in,1),size(in,2),size(in,3),3):: out
239 out(:,:,:,1) = ddydn(ds, in(:,:,:,3)) - ddzdn(ds, in(:,:,:,2))
240 out(:,:,:,2) = ddzdn(ds, in(:,:,:,1)) - ddxdn(ds, in(:,:,:,3))
241 out(:,:,:,3) = ddxdn(ds, in(:,:,:,2)) - ddydn(ds, in(:,:,:,1))
244 FUNCTION vector_curl_up_vector (ds, in)
RESULT (out)
245 real,
dimension(:,:,:,:),
intent(in):: in
246 real,
dimension(size(in,1),size(in,2),size(in,3),3):: out
249 out(:,:,:,1) = ddyup(ds, in(:,:,:,3)) - ddzup(ds, in(:,:,:,2))
250 out(:,:,:,2) = ddzup(ds, in(:,:,:,1)) - ddxup(ds, in(:,:,:,3))
251 out(:,:,:,3) = ddxup(ds, in(:,:,:,2)) - ddyup(ds, in(:,:,:,1))
Template module for mesh.
6th order stagger operators, with self-test procedure