FE-Project
Loading...
Searching...
No Matches
mod_user.F90
Go to the documentation of this file.
1!-------------------------------------------------------------------------------
2!> module USER
3!!
4!! @par Description
5!! User defined module (dummy)
6!!
7!! @author Yuta Kawai, Team SCALE
8!!
9!<
10!-------------------------------------------------------------------------------
11#include "scaleFElib.h"
13
14 !-----------------------------------------------------------------------------
15 !
16 !++ used modules
17 !
18 use scale_precision
19 use scale_io
20 use scale_prof
21
22 use mod_atmos_component, only: &
24 use mod_ocean_component, only: &
26 use mod_user_base, only: &
28 !-----------------------------------------------------------------------------
29 implicit none
30 private
31 !-----------------------------------------------------------------------------
32 !
33 !++ Public procedure
34 !
35 type, public, extends(userbase) :: user
36 contains
37 procedure :: mkinit_ => user_mkinit
38 generic :: mkinit => mkinit_
39 procedure :: mkinit_ocn => user_mkinit_ocn
40 procedure :: setup_ => user_setup
41 generic :: setup => setup_
42 end type user
43
44 !-----------------------------------------------------------------------------
45 !
46 !++ Public parameters & variables
47 !
48 !-----------------------------------------------------------------------------
49 !
50 !++ Private procedure
51 !
52 !-----------------------------------------------------------------------------
53 !
54 !++ Private parameters & variables
55 !
56 !-----------------------------------------------------------------------------
57contains
58!OCL SERIAL
59 subroutine user_mkinit( this, atm )
60 implicit none
61 class(user), intent(inout) :: this
62 class(atmoscomponent), intent(inout), target :: atm
63 !------------------------------------------
64 return
65 end subroutine user_mkinit
66!OCL SERIAL
67 subroutine user_mkinit_ocn( this, ocn )
68 implicit none
69 class(user), intent(inout) :: this
70 class(oceancomponent), intent(inout), target :: ocn
71 !------------------------------------------
72 return
73 end subroutine user_mkinit_ocn
74
75!OCL SERIAL
76 subroutine user_setup( this, atm )
77 use scale_prc, only: &
78 prc_abort
79 implicit none
80
81 class(user), intent(inout) :: this
82 class(atmoscomponent), intent(inout) :: atm
83
84 logical :: USER_do = .false.
85 namelist / param_user / &
86 user_do
87
88 integer :: ierr
89 !------------------------------------------
90
91 log_newline
92 log_info("USER_setup",*) 'Setup'
93
94 !--- read namelist
95 rewind(io_fid_conf)
96 read(io_fid_conf,nml=param_user,iostat=ierr)
97 if( ierr < 0 ) then !--- missing
98 log_info("USER_setup",*) 'Not found namelist. Default used.'
99 elseif( ierr > 0 ) then !--- fatal error
100 log_error("USER_setup",*) 'Not appropriate names in namelist PARAM_USER. Check!'
101 call prc_abort
102 endif
103 log_nml(param_user)
104
105 log_newline
106 log_info("USER_setup",*) 'This module is dummy.'
107
108 call this%UserBase%Setup( atm, user_do )
109
110 return
111 end subroutine user_setup
112end module mod_user
module Atmosphere component
module Oceanic component
module USER_base
module USER
Definition mod_user.F90:12
subroutine user_mkinit(this, atm)
Definition mod_user.F90:60
Derived type to manage atmospheric component.
Derived type to manage oceanic component.