FE-Project
Loading...
Searching...
No Matches
scale_atm_dyn_dgm_driver_base.F90
Go to the documentation of this file.
1!-------------------------------------------------------------------------------
2!> module FElib / Fluid dyn solver / Atmosphere / driver (base)
3!!
4!! @par Description
5!! Driver module for dynamical core based on DGM
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
26
27 !-----------------------------------------------------------------------------
28 implicit none
29 private
30 !-----------------------------------------------------------------------------
31 !
32 !++ Public type & procedure
33 !
34 type, public :: atmdyndgmdriver_base
35 integer :: progvar_num !< Number of prognostic variables
36 type(timeint_rk), allocatable :: tint(:) !< Objects with temporal scheme
38
41
44
45 !-----------------------------------------------------------------------------
46 !
47 !++ Public procedures
48 !
49 !-----------------------------------------------------------------------------
50 !
51 !++ Public parameters & variables
52 !
53
54 !-----------------------------------------------------------------------------
55 !
56 !++ Private procedures & variables
57 !
58 !-------------------
59
60 private :: atmdyndgmdriver_base_init
61 private :: atmdyndgmdriver_base_final
62
63contains
64 subroutine atmdyndgmdriver_base_init( this, &
65 PRGVAR_NUM, LOCAL_MESH_NUM )
66 implicit none
67
68 class(AtmDynDGMDriver_base), intent(inout) :: this
69 integer, intent(in) :: PRGVAR_NUM
70 integer, intent(in) :: LOCAL_MESH_NUM
71 !-----------------------------------------------------------------------------
72
73 this%PROGVAR_NUM = prgvar_num
74 allocate( this%tint(local_mesh_num) )
75
76 return
77 end subroutine atmdyndgmdriver_base_init
78
79 subroutine atmdyndgmdriver_base_final( this )
80 implicit none
81
82 class(AtmDynDGMDriver_base), intent(inout) :: this
83 !-----------------------------------------------------------------------------
84
85 deallocate( this%tint )
86
87 return
88 end subroutine atmdyndgmdriver_base_final
89
90!-- 3D
91
92 subroutine atmdyndgmdriver_base3d_init( this, &
93 prgvar_num, &
94 tint_type, dtsec, &
95 mesh )
96 implicit none
97
98 class(atmdyndgmdriver_base3d), intent(inout) :: this
99 integer, intent(in) :: prgvar_num
100 character(len=*), intent(in) :: tint_type
101 real(dp), intent(in) :: dtsec
102 class(meshbase3d), intent(in), target :: mesh
103
104 class(localmesh3d), pointer :: lcmesh
105 integer :: n
106 !-----------------------------------------------------------------------------
107
108 call atmdyndgmdriver_base_init( this, prgvar_num, mesh%LOCAL_MESH_NUM )
109
110 do n = 1, mesh%LOCAL_MESH_NUM
111 lcmesh => mesh%lcmesh_list(n)
112
113 call this%tint(n)%Init( tint_type, dtsec, prgvar_num, 2, &
114 (/ lcmesh%refElem%Np, lcmesh%NeA /) )
115 end do
116
117 return
118 end subroutine atmdyndgmdriver_base3d_init
119
121 implicit none
122
123 class(atmdyndgmdriver_base3d), intent(inout) :: this
124
125 integer :: n
126 !-----------------------------------------------------------------------------
127
128 do n = 1, size(this%tint)
129 call this%tint(n)%Final()
130 end do
131 call atmdyndgmdriver_base_final( this )
132
133 return
134 end subroutine atmdyndgmdriver_base3d_final
135
module FElib / Fluid dyn solver / Atmosphere / driver (base)
subroutine, public atmdyndgmdriver_base3d_final(this)
subroutine, public atmdyndgmdriver_base3d_init(this, prgvar_num, tint_type, dtsec, mesh)
module FElib / Element / Base
module FElib / Mesh / Local 3D
module FElib / Mesh / Local, Base
module FElib / Mesh / Base 3D
Module common / Runge-Kutta scheme.
Derived type representing a 3D reference element.
Derived type to manage a local 3D computational domain.
Derived type to manage a local computational domain (base type)
Derived type to manage a computational mesh (base type for 3D domain)
Derived type to provide RK scheme.