FE-Project
Loading...
Searching...
No Matches
mod_user_base.F90
Go to the documentation of this file.
1!-------------------------------------------------------------------------------
10!-------------------------------------------------------------------------------
11#include "scalelib.h"
13
14 !-----------------------------------------------------------------------------
15 !
16 !++ used modules
17 !
18 use scale_precision
19 use scale_io
20 use scale_prof
21
23 use mod_experiment, only: experiment
24
25 !-----------------------------------------------------------------------------
26 implicit none
27 private
28 !-----------------------------------------------------------------------------
29 !
30 !++ Public procedure
31 !
32 type, public :: userbase
33 logical :: user_do
34 contains
35 procedure :: mkinit_base => user_base_mkinit
36 generic :: mkinit => mkinit_base
37 procedure :: mkfinal => user_base_mkfinal
38 procedure :: setup_base => user_base_setup
39 generic :: setup => setup_base
40 procedure :: final => user_base_final
41 procedure :: calc_tendency => user_base_calc_tendency
42 procedure :: update_pre => user_base_update_pre
43 procedure :: update => user_base_update
44 end type userbase
45
46 !-----------------------------------------------------------------------------
47 !
48 !++ Public parameters & variables
49 !
50 !-----------------------------------------------------------------------------
51 !
52 !++ Private procedure
53 !
54 !-----------------------------------------------------------------------------
55 !
56 !++ Private parameters & variables
57 !
58
59 !-----------------------------------------------------------------------------
60contains
61 subroutine user_base_mkinit( this, atm, exp )
62 implicit none
63 class(userbase), intent(inout) :: this
64 class(atmoscomponent), intent(inout) :: atm
65 class(experiment), intent(inout) :: exp
66 !------------------------------------------
67
68 call exp%SetInitCond( atm%mesh, &
69 atm%vars%PROGVARS_manager, atm%vars%AUXVARS_manager, &
70 atm%vars%QTRCVARS_manager )
71
72 return
73 end subroutine user_base_mkinit
74
75 subroutine user_base_mkfinal( this )
76 implicit none
77 class(userbase), intent(inout) :: this
78 !------------------------------------------
79 return
80 end subroutine user_base_mkfinal
81
82 subroutine user_base_setup( this, atm, user_do )
83 implicit none
84 class(userbase), intent(inout) :: this
85 class(atmoscomponent), intent(inout) :: atm
86 logical, intent(in) :: user_do
87 !------------------------------------------
88
89 this%USER_do = user_do
90
91 return
92 end subroutine user_base_setup
93
94 subroutine user_base_final( this )
95 implicit none
96 class(userbase), intent(inout) :: this
97 !------------------------------------------
98 return
99 end subroutine user_base_final
100
101 subroutine user_base_calc_tendency( this, atm )
102 implicit none
103 class(userbase), intent(inout) :: this
104 class(atmoscomponent), intent(inout) :: atm
105 !------------------------------------------
106
107 return
108 end subroutine user_base_calc_tendency
109
110 subroutine user_base_update_pre( this, atm )
111 implicit none
112 class(userbase), intent(inout) :: this
113 class(atmoscomponent), intent(inout) :: atm
114 !------------------------------------------
115 return
116 end subroutine user_base_update_pre
117
118 subroutine user_base_update( this, atm )
119 implicit none
120 class(userbase), intent(inout) :: this
121 class(atmoscomponent), intent(inout) :: atm
122 !------------------------------------------
123 return
124 end subroutine user_base_update
125
126end module mod_user_base
module ATMOSPHERE component
module USER_base
subroutine user_base_mkinit(this, atm, exp)