FE-Project
Loading...
Searching...
No Matches
scale_atm_dyn_dgm_nonhydro3d_rhot_heve_numflux_gpu.F90
Go to the documentation of this file.
1!-------------------------------------------------------------------------------
2!> module FElib / Fluid dyn solver / Atmosphere / Nonhydrostatic model / HEVE / Numflux
3!!
4!! @par Description
5!! An module for numerical fluxes for HEVE atmospheric dynamical process which runs on GPU.
6!!
7!! @author Yuta Kawai, Team SCALE
8!<
9!-------------------------------------------------------------------------------
10#include "scaleFElib.h"
12 !-----------------------------------------------------------------------------
13 !
14 !++ Used modules
15 !
16 use scale_precision
17 use scale_io
18 use scale_prc
19 use scale_prof
20 use scale_const, only: &
21 grav => const_grav, &
22 rdry => const_rdry, &
23 cpdry => const_cpdry, &
24 cvdry => const_cvdry, &
25 pres00 => const_pre00
26
28 use scale_element_base, only: &
36
38 dens_vid => prgvar_ddens_id, rhot_vid => prgvar_drhot_id, &
39 momx_vid => prgvar_momx_id, momy_vid => prgvar_momy_id, &
40 momz_vid => prgvar_momz_id, &
42
43 !-----------------------------------------------------------------------------
44 implicit none
45 private
46 !-----------------------------------------------------------------------------
47 !
48 !++ Public procedures
49 !
52
53 !-----------------------------------------------------------------------------
54 !
55 !++ Public parameters & variables
56 !
57
58 !-----------------------------------------------------------------------------
59 !
60 !++ Private procedures & variables
61 !
62 !-------------------
63
64contains
66 del_flux, & ! (out)
67 ddens_, momx_, momy_, momz_, drhot_, dpres, & ! (in)
68 dens_hyd, pres_hyd, therm_hyd, rtot, cvtot, cptot, & ! (in)
69 gsqrt, g13, g23, nx, ny, nz, & ! (in)
70 vmapm, vmapp, lmesh, elem, lmesh2d, elem2d ) ! (in)
71
72 implicit none
73
74 class(localmesh3d), intent(in) :: lmesh
75 class(elementbase3d), intent(in) :: elem
76 class(localmesh2d), intent(in) :: lmesh2d
77 class(elementbase2d), intent(in) :: elem2d
78 real(rp), intent(out) :: del_flux(elem%nfptot,prgvar_num,lmesh%ne)
79 real(rp), intent(in) :: ddens_(elem%np*lmesh%nea)
80 real(rp), intent(in) :: momx_(elem%np*lmesh%nea)
81 real(rp), intent(in) :: momy_(elem%np*lmesh%nea)
82 real(rp), intent(in) :: momz_(elem%np*lmesh%nea)
83 real(rp), intent(in) :: drhot_(elem%np*lmesh%nea)
84 real(rp), intent(in) :: dpres(elem%np*lmesh%nea)
85 real(rp), intent(in) :: dens_hyd(elem%np*lmesh%nea)
86 real(rp), intent(in) :: pres_hyd(elem%np*lmesh%nea)
87 real(rp), intent(in) :: therm_hyd(elem%np*lmesh%nea)
88 real(rp), intent(in) :: rtot (elem%np*lmesh%nea)
89 real(rp), intent(in) :: cvtot(elem%np*lmesh%nea)
90 real(rp), intent(in) :: cptot(elem%np*lmesh%nea)
91 real(rp), intent(in) :: gsqrt(elem%np*lmesh%nea)
92 real(rp), intent(in) :: g13(elem%np*lmesh%nea)
93 real(rp), intent(in) :: g23(elem%np*lmesh%nea)
94 real(rp), intent(in) :: nx(elem%nfptot,lmesh%ne)
95 real(rp), intent(in) :: ny(elem%nfptot,lmesh%ne)
96 real(rp), intent(in) :: nz(elem%nfptot,lmesh%ne)
97 integer, intent(in) :: vmapm(elem%nfptot,lmesh%ne)
98 integer, intent(in) :: vmapp(elem%nfptot,lmesh%ne)
99
100 integer :: ke, fp, i, ip, im
101 integer :: ke2d
102 real(rp) :: vel_m, vel_p, alpha
103 real(rp) :: dpres_m, dpres_p
104 real(rp) :: gsqrtdens_m, gsqrtdens_p
105 real(rp) :: gsqrtrhot_m, gsqrtrhot_p
106 real(rp) :: gsqrtddens_m, gsqrtddens_p
107 real(rp) :: gsqrtmomx_m, gsqrtmomx_p
108 real(rp) :: gsqrtmomy_m, gsqrtmomy_p
109 real(rp) :: gsqrtmomz_m, gsqrtmomz_p
110 real(rp) :: gsqrtdrhot_m, gsqrtdrhot_p
111 real(rp) :: gsqrt_m, gsqrt_p
112 real(rp) :: gsqrtv_m, gsqrtv_p
113 real(rp) :: rgsqrtv_m, rgsqrtv_p
114 real(rp) :: g13_m, g13_p
115 real(rp) :: g23_m, g23_p
116 real(rp) :: gnn_m, gnn_p
117
118 real(rp) :: gamm, rgamm
119 real(rp) :: rp0
120 real(rp) :: rovp0, p0ovr
121
122 real(rp) :: tmp1
123 real(rp) :: del_flux_tmp_momz, del_flux_tmp_momx, del_flux_tmp_momy
124 real(rp) :: gsqrtdpres_m, gsqrtdpres_p
125 real(rp) :: nx_, ny_, nz_, fscale_
126
127 integer :: nes, nee, nfptot
128 !------------------------------------------------------------------------
129
130 gamm = cpdry / cvdry
131 rgamm = cvdry / cpdry
132 rp0 = 1.0_rp / pres00
133 rovp0 = rdry * rp0
134 p0ovr = pres00 / rdry
135
136 nes = lmesh%NeS; nee = lmesh%NeE
137 nfptot = elem%NfpTot
138
139 !$acc parallel present( DDENS_,MOMX_,MOMY_,MOMZ_,DRHOT_,DPRES, &
140 !$acc DENS_hyd,PRES_hyd,THERM_hyd, &
141 !$acc Gsqrt,G13,G23,nx,ny,nz,vmapM,vmapP, &
142 !$acc del_flux, lmesh, elem )
143 !$acc loop gang
144 do ke=nes, nee
145 !$acc loop vector
146 do fp=1, nfptot
147
148 im = vmapm(fp,ke); ip = vmapp(fp,ke)
149 ke2d = lmesh%EMap3Dto2D(ke)
150
151 nx_ = nx(fp,ke); ny_ = ny(fp,ke); nz_ = nz(fp,ke)
152
153 !-
154 gsqrt_m = gsqrt(im)
155 gsqrt_p = gsqrt(ip)
156 gsqrtv_m = gsqrt_m
157 gsqrtv_p = gsqrt_p
158
159 rgsqrtv_m = 1.0_rp / gsqrtv_m
160 rgsqrtv_p = 1.0_rp / gsqrtv_p
161
162 g13_m = g13(im)
163 g13_p = g13(ip)
164 g23_m = g23(im)
165 g23_p = g23(ip)
166
167 gsqrtddens_m = gsqrt_m * ddens_(im)
168 gsqrtddens_p = gsqrt_p * ddens_(ip)
169 gsqrtmomx_m = gsqrt_m * momx_(im)
170 gsqrtmomx_p = gsqrt_p * momx_(ip)
171 gsqrtmomy_m = gsqrt_m * momy_(im)
172 gsqrtmomy_p = gsqrt_p * momy_(ip)
173 gsqrtmomz_m = gsqrt_m * momz_(im)
174 gsqrtmomz_p = gsqrt_p * momz_(ip)
175 gsqrtdrhot_m = gsqrt_m * drhot_(im)
176 gsqrtdrhot_p = gsqrt_p * drhot_(ip)
177
178 dpres_m = dpres(im)
179 dpres_p = dpres(ip)
180
181 gsqrtdens_p = gsqrtddens_p + gsqrt_p * dens_hyd(ip)
182 gsqrtdens_m = gsqrtddens_m + gsqrt_m * dens_hyd(im)
183
184 gsqrtrhot_p = gsqrt_p * therm_hyd(ip) + gsqrtdrhot_p
185 gsqrtrhot_m = gsqrt_m * therm_hyd(im) + gsqrtdrhot_m
186
187 vel_m = ( gsqrtmomx_m * nx_ + gsqrtmomy_m * ny_ &
188 + ( ( gsqrtmomz_m * rgsqrtv_m &
189 + g13_m * gsqrtmomx_m + g23_m * gsqrtmomy_m ) * nz_ ) &
190 ) / gsqrtdens_m
191
192 vel_p = ( gsqrtmomx_p * nx_ + gsqrtmomy_p * ny_ &
193 + ( ( gsqrtmomz_p * rgsqrtv_p &
194 + g13_p * gsqrtmomx_p + g23_p * gsqrtmomy_p ) * nz_ ) &
195 ) / gsqrtdens_p
196
197
198 !--
199
200 tmp1 = abs( nx_ ) + abs( ny_ )
201 gnn_m = tmp1 &
202 + ( 1.0_rp * rgsqrtv_m**2 + g13_m**2 + g23_m**2 ) * abs( nz_ )
203
204 gnn_p = tmp1 &
205 + ( 1.0_rp * rgsqrtv_p**2 + g13_p**2 + g23_p**2 ) * abs( nz_ )
206
207 alpha = max( sqrt( gnn_m * gamm * ( pres_hyd(im) + dpres_m ) * gsqrt_m / gsqrtdens_m ) + abs(vel_m), &
208 sqrt( gnn_p * gamm * ( pres_hyd(ip) + dpres_p ) * gsqrt_p / gsqrtdens_p ) + abs(vel_p) )
209
210
211 !-
212
213 !---------------------------------------
214 fscale_ = 0.5_rp * lmesh%Fscale(fp,ke)
215
216 !- density and potential temperature
217
218 del_flux(fp,dens_vid,ke) = fscale_ * ( &
219 gsqrtdens_p * vel_p - gsqrtdens_m * vel_m &
220 - alpha * ( gsqrtddens_p - gsqrtddens_m ) )
221
222 del_flux(fp,rhot_vid,ke) = fscale_ * ( &
223 gsqrtrhot_p * vel_p - gsqrtrhot_m * vel_m &
224 - alpha * ( gsqrtdrhot_p - gsqrtdrhot_m ) )
225
226 !-
227 gsqrtdpres_m = gsqrt_m * dpres_m
228 gsqrtdpres_p = gsqrt_p * dpres_p
229
230 del_flux(fp,momz_vid,ke) = fscale_ * ( &
231 gsqrtmomz_p * vel_p - gsqrtmomz_m * vel_m &
232 + ( gsqrtdpres_p * rgsqrtv_p &
233 - gsqrtdpres_m * rgsqrtv_m ) * nz_ &
234 - alpha * ( gsqrtmomz_p - gsqrtmomz_m ) )
235
236 del_flux(fp,momx_vid,ke) = fscale_ * ( &
237 gsqrtmomx_p * vel_p - gsqrtmomx_m * vel_m &
238 + ( nx_ + g13_p * nz_ ) * gsqrtdpres_p &
239 - ( nx_ + g13_m * nz_ ) * gsqrtdpres_m &
240 - alpha * ( gsqrtmomx_p - gsqrtmomx_m ) )
241
242 del_flux(fp,momy_vid,ke) = fscale_ * ( &
243 gsqrtmomy_p * vel_p - gsqrtmomy_m * vel_m &
244 + ( ny_ + g23_p * nz_ ) * gsqrtdpres_p &
245 - ( ny_ + g23_m * nz_ ) * gsqrtdpres_m &
246 - alpha * ( gsqrtmomy_p - gsqrtmomy_m ) )
247 end do
248 end do
249 !$acc end parallel
250
251 return
253
255 del_flux, & ! (out)
256 ddens_, momx_, momy_, momz_, drhot_, dpres, & ! (in)
257 dens_hyd, pres_hyd, therm_hyd, rtot, cvtot, cptot, & ! (in)
258 gsqrt, g11, g12, g22, gsqrth, gam, g13, g23, nx, ny, nz, & ! (in)
259 vmapm, vmapp, im2dto3d, lmesh, elem, lmesh2d, elem2d ) ! (in)
260
261 implicit none
262
263 class(localmesh3d), intent(in) :: lmesh
264 class(elementbase3d), intent(in) :: elem
265 class(localmesh2d), intent(in) :: lmesh2d
266 class(elementbase2d), intent(in) :: elem2d
267 real(rp), intent(out) :: del_flux(elem%nfptot,prgvar_num,lmesh%ne)
268 real(rp), intent(in) :: ddens_(elem%np*lmesh%nea)
269 real(rp), intent(in) :: momx_(elem%np*lmesh%nea)
270 real(rp), intent(in) :: momy_(elem%np*lmesh%nea)
271 real(rp), intent(in) :: momz_(elem%np*lmesh%nea)
272 real(rp), intent(in) :: drhot_(elem%np*lmesh%nea)
273 real(rp), intent(in) :: dpres(elem%np*lmesh%nea)
274 real(rp), intent(in) :: dens_hyd(elem%np*lmesh%nea)
275 real(rp), intent(in) :: pres_hyd(elem%np*lmesh%nea)
276 real(rp), intent(in) :: therm_hyd(elem%np*lmesh%nea)
277 real(rp), intent(in) :: rtot (elem%np*lmesh%nea)
278 real(rp), intent(in) :: cvtot(elem%np*lmesh%nea)
279 real(rp), intent(in) :: cptot(elem%np*lmesh%nea)
280 real(rp), intent(in) :: gsqrt(elem%np*lmesh%nea)
281 real(rp), intent(in) :: g11(elem2d%np,lmesh2d%ne)
282 real(rp), intent(in) :: g12(elem2d%np,lmesh2d%ne)
283 real(rp), intent(in) :: g22(elem2d%np,lmesh2d%ne)
284 real(rp), intent(in) :: gsqrth(elem2d%np,lmesh2d%ne)
285 real(rp), intent(in) :: gam(elem%np*lmesh%nea)
286 real(rp), intent(in) :: g13(elem%np*lmesh%nea)
287 real(rp), intent(in) :: g23(elem%np*lmesh%nea)
288 real(rp), intent(in) :: nx(elem%nfptot,lmesh%ne)
289 real(rp), intent(in) :: ny(elem%nfptot,lmesh%ne)
290 real(rp), intent(in) :: nz(elem%nfptot,lmesh%ne)
291 integer, intent(in) :: vmapm(elem%nfptot,lmesh%ne)
292 integer, intent(in) :: vmapp(elem%nfptot,lmesh%ne)
293 integer, intent(in) :: im2dto3d(elem%nfptot)
294
295 integer :: ke, fp, ip, im
296 integer :: ke2d
297 real(rp) :: vel_m, vel_p, alpha
298 real(rp) :: dpres_m, dpres_p
299 real(rp) :: gsqrtdens_m, gsqrtdens_p
300 real(rp) :: gsqrtrhot_m, gsqrtrhot_p
301 real(rp) :: gsqrtddens_m, gsqrtddens_p
302 real(rp) :: gsqrtmomx_m, gsqrtmomx_p
303 real(rp) :: gsqrtmomy_m, gsqrtmomy_p
304 real(rp) :: gsqrtmomz_m, gsqrtmomz_p
305 real(rp) :: gsqrtdrhot_m, gsqrtdrhot_p
306 real(rp) :: gsqrt_m, gsqrt_p
307 real(rp) :: gsqrtv_m, gsqrtv_p
308 real(rp) :: rgsqrtv_m, rgsqrtv_p
309 real(rp) :: g13_m, g13_p
310 real(rp) :: g23_m, g23_p
311 real(rp) :: gnn_m, gnn_p
312 real(rp) :: rgam2_m, rgam2_p
313
314 real(rp) :: gamm
315
316 real(rp) :: tmp1
317 real(rp) :: gsqrtdpres_m, gsqrtdpres_p
318 real(rp) :: nx_, ny_, nz_, fscale_
319
320 integer :: nes, nee, nfptot
321 real(rp) :: g11_, g12_, g22_
322 real(rp) :: gxz_m, gxz_p
323 real(rp) :: gyz_m, gyz_p
324 real(rp) :: g1n_m, g1n_p
325 real(rp) :: g2n_m, g2n_p
326 !------------------------------------------------------------------------
327
328 gamm = cpdry / cvdry
329
330 nes = lmesh%NeS; nee = lmesh%NeE
331 nfptot = elem%NfpTot
332
333 !$acc parallel present( &
334 !$acc DDENS_,MOMX_,MOMY_,MOMZ_,DRHOT_,DPRES, &
335 !$acc DENS_hyd,PRES_hyd,THERM_hyd, &
336 !$acc Gsqrt,G11,G12,G22,G13,G23,gam, &
337 !$acc nx,ny,nz,vmapM,vmapP,iM2Dto3D, &
338 !$acc del_flux,lmesh,elem )
339 !$acc loop gang
340 do ke=nes, nee
341 !$acc loop vector
342 do fp=1, nfptot
343
344 im = vmapm(fp,ke); ip = vmapp(fp,ke)
345 ke2d = lmesh%EMap3Dto2D(ke)
346
347 nx_ = nx(fp,ke); ny_ = ny(fp,ke); nz_ = nz(fp,ke)
348
349 !-
350 gsqrt_m = gsqrt(im)
351 gsqrt_p = gsqrt(ip)
352
353 !-
354 rgam2_m = 1.0_rp / gam(im)**2
355 gsqrtv_m = gsqrt_m * rgam2_m / gsqrth(im2dto3d(fp),ke2d)
356 rgsqrtv_m = 1.0_rp / gsqrtv_m
357
358 rgam2_p = 1.0_rp / gam(ip)**2
359 gsqrtv_p = gsqrt_p * rgam2_p / gsqrth(im2dto3d(fp),ke2d)
360 rgsqrtv_p = 1.0_rp / gsqrtv_p
361
362 !-
363 g13_m = g13(im)
364 g13_p = g13(ip)
365 g23_m = g23(im)
366 g23_p = g23(ip)
367
368 gsqrtddens_m = gsqrt_m * ddens_(im)
369 gsqrtddens_p = gsqrt_p * ddens_(ip)
370 gsqrtmomx_m = gsqrt_m * momx_(im)
371 gsqrtmomx_p = gsqrt_p * momx_(ip)
372 gsqrtmomy_m = gsqrt_m * momy_(im)
373 gsqrtmomy_p = gsqrt_p * momy_(ip)
374 gsqrtmomz_m = gsqrt_m * momz_(im)
375 gsqrtmomz_p = gsqrt_p * momz_(ip)
376 gsqrtdrhot_m = gsqrt_m * drhot_(im)
377 gsqrtdrhot_p = gsqrt_p * drhot_(ip)
378
379 dpres_m = dpres(im)
380 dpres_p = dpres(ip)
381
382 gsqrtdens_p = gsqrtddens_p + gsqrt_p * dens_hyd(ip)
383 gsqrtdens_m = gsqrtddens_m + gsqrt_m * dens_hyd(im)
384
385 gsqrtrhot_p = gsqrt_p * therm_hyd(ip) + gsqrtdrhot_p
386 gsqrtrhot_m = gsqrt_m * therm_hyd(im) + gsqrtdrhot_m
387
388 vel_m = ( gsqrtmomx_m * nx_ + gsqrtmomy_m * ny_ &
389 + ( ( gsqrtmomz_m * rgsqrtv_m &
390 + g13_m * gsqrtmomx_m + g23_m * gsqrtmomy_m ) * nz_ ) &
391 ) / gsqrtdens_m
392
393 vel_p = ( gsqrtmomx_p * nx_ + gsqrtmomy_p * ny_ &
394 + ( ( gsqrtmomz_p * rgsqrtv_p &
395 + g13_p * gsqrtmomx_p + g23_p * gsqrtmomy_p ) * nz_ ) &
396 ) / gsqrtdens_p
397
398
399 !--
400
401 g11_ = g11(im2dto3d(fp),ke2d)
402 g12_ = g12(im2dto3d(fp),ke2d)
403 g22_ = g22(im2dto3d(fp),ke2d)
404 tmp1 = abs( g11_ * nx_ ) + abs( g22_ * ny_ )
405
406 gxz_m = rgam2_m * ( g11_ * g13_m + g12_ * g23_m )
407 gyz_m = rgam2_m * ( g12_ * g13_m + g22_ * g23_m )
408 g1n_m = rgam2_m * ( g11_ * nx_ + g12_ * ny_ )
409 g2n_m = rgam2_m * ( g12_ * nx_ + g22_ * ny_ )
410 gnn_m = rgam2_m * tmp1 &
411 + ( 1.0_rp * rgsqrtv_m**2 + g13_m * gxz_m + g23_m * gyz_m ) * abs( nz_ )
412
413 gxz_p = rgam2_p * ( g11_ * g13_p + g12_ * g23_p )
414 gyz_p = rgam2_p * ( g12_ * g13_p + g22_ * g23_p )
415 g1n_p = rgam2_p * ( g11_ * nx_ + g12_ * ny_ )
416 g2n_p = rgam2_p * ( g12_ * nx_ + g22_ * ny_ )
417 gnn_p = rgam2_p * tmp1 &
418 + ( 1.0_rp * rgsqrtv_p**2 + g13_p * gxz_p + g23_p * gyz_p ) * abs( nz_ )
419
420 alpha = max( sqrt( gnn_m * gamm * ( pres_hyd(im) + dpres_m ) * gsqrt_m / gsqrtdens_m ) + abs(vel_m), &
421 sqrt( gnn_p * gamm * ( pres_hyd(ip) + dpres_p ) * gsqrt_p / gsqrtdens_p ) + abs(vel_p) )
422
423 !---------------------------------------
424 fscale_ = 0.5_rp * lmesh%Fscale(fp,ke)
425
426 !- density and potential temperature
427
428 del_flux(fp,dens_vid,ke) = fscale_ * ( &
429 gsqrtdens_p * vel_p - gsqrtdens_m * vel_m &
430 - alpha * ( gsqrtddens_p - gsqrtddens_m ) )
431
432 del_flux(fp,rhot_vid,ke) = fscale_ * ( &
433 gsqrtrhot_p * vel_p - gsqrtrhot_m * vel_m &
434 - alpha * ( gsqrtdrhot_p - gsqrtdrhot_m ) )
435
436 !-
437 gsqrtdpres_m = gsqrt_m * dpres_m
438 gsqrtdpres_p = gsqrt_p * dpres_p
439
440 del_flux(fp,momz_vid,ke) = fscale_ * ( &
441 gsqrtmomz_p * vel_p - gsqrtmomz_m * vel_m &
442 + ( gsqrtdpres_p * rgsqrtv_p &
443 - gsqrtdpres_m * rgsqrtv_m ) * nz_ &
444 - alpha * ( gsqrtmomz_p - gsqrtmomz_m ) )
445
446 del_flux(fp,momx_vid,ke) = fscale_ * ( &
447 gsqrtmomx_p * vel_p - gsqrtmomx_m * vel_m &
448 + ( g1n_p + gxz_p * nz_ ) * gsqrtdpres_p &
449 - ( g1n_m + gxz_m * nz_ ) * gsqrtdpres_m &
450 - alpha * ( gsqrtmomx_p - gsqrtmomx_m ) )
451
452 del_flux(fp,momy_vid,ke) = fscale_ * ( &
453 gsqrtmomy_p * vel_p - gsqrtmomy_m * vel_m &
454 + ( g2n_p + gyz_p * nz_ ) * gsqrtdpres_p &
455 - ( g2n_m + gyz_m * nz_ ) * gsqrtdpres_m &
456 - alpha * ( gsqrtmomy_p - gsqrtmomy_m ) )
457 end do
458 end do
459 !$acc end parallel
460
461 return
463
module FElib / Fluid dyn solver / Atmosphere / Nonhydrostatic model / Common
module FElib / Fluid dyn solver / Atmosphere / Nonhydrostatic model / HEVE / Numflux
subroutine, public atm_dyn_dgm_nonhydro3d_rhot_heve_numflux_get_generalvc_gpu(del_flux, ddens_, momx_, momy_, momz_, drhot_, dpres, dens_hyd, pres_hyd, therm_hyd, rtot, cvtot, cptot, gsqrt, g13, g23, nx, ny, nz, vmapm, vmapp, lmesh, elem, lmesh2d, elem2d)
subroutine, public atm_dyn_dgm_nonhydro3d_rhot_heve_numflux_get_generalhvc_gpu(del_flux, ddens_, momx_, momy_, momz_, drhot_, dpres, dens_hyd, pres_hyd, therm_hyd, rtot, cvtot, cptot, gsqrt, g11, g12, g22, gsqrth, gam, g13, g23, nx, ny, nz, vmapm, vmapp, im2dto3d, lmesh, elem, lmesh2d, elem2d)
module FElib / Element / Base
module FElib / Element / hexahedron
module FElib / Mesh / Local 2D
module FElib / Mesh / Local 3D
module FElib / Mesh / Base 3D
module FElib / Data / base
Module common / sparsemat.
Derived type representing a 2D reference element.
Derived type representing a 3D reference element.
Derived type representing a hexahedral element.
Derived type representing a local mesh for 2D domain.
Derived type to manage a local 3D computational domain.
Derived type representing a field with 3D local mesh.
Derived type to manage a computational mesh (base type for 3D domain)
Derived type representing a field with 3D mesh.