Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
! Created by Andrey Debolskiy on 20.11.2024.
module scm_state_data
implicit none
type stateBLDataType
real, allocatable:: u(:), v(:), temp(:), theta(:) ,qv(:)
real, allocatable:: rho(:)
real, allocatable :: lwp(:), cloud_frac(:), s_e(:)
real, allocatable:: km(:), kh(:)
real, allocatable:: vdctq(:)
real, allocatable:: vdcuv(:)
real :: HPBLA_diag
real :: p0
integer :: ktvdm=10
integer :: ktvd
integer :: kpbl
integer :: ktop
integer :: kmax
end type stateBLDataType
public scm_data_allocate
public scm_data_deallocate
public scm_data_copy
contains
subroutine scm_data_allocate(bl_data, kmax)
implicit none
type(stateBLDataType),intent(inout):: bl_data
integer:: kmax
bl_data%kmax = kmax
allocate(bl_data%u(kmax))
allocate(bl_data%v(kmax))
allocate(bl_data%temp(kmax))
allocate(bl_data%theta(kmax))
allocate(bl_data%qv(kmax))
allocate(bl_data%lwp(kmax))
allocate(bl_data%cloud_frac(kmax))
allocate(bl_data%s_e(kmax))
allocate(bl_data%km(kmax))
allocate(bl_data%kh(kmax))
allocate(bl_data%vdcuv(kmax))
allocate(bl_data%vdctq(kmax))
end subroutine scm_data_allocate
subroutine scm_data_deallocate(bl_data)
implicit none
type(stateBLDataType), intent(inout):: bl_data
deallocate(bl_data%u)
deallocate(bl_data%v)
deallocate(bl_data%temp)
deallocate(bl_data%theta)
deallocate(bl_data%qv)
deallocate(bl_data%lwp)
deallocate(bl_data%cloud_frac)
deallocate(bl_data%s_e)
deallocate(bl_data%km)
deallocate(bl_data%kh)
deallocate(bl_data%vdcuv)
deallocate(bl_data%vdctq)
end subroutine scm_data_deallocate
subroutine scm_data_copy(bl, bl_old)
implicit none
type(stateBLDataType),intent(in):: bl_old
type(stateBLDataType),intent(out):: bl
if (bl%kmax /= bl_old%kmax) then
write(*,*) 'error in copy BLData: size is not compatible'
else
bl%u = bl_old%u
bl%v = bl_old%v
bl%temp = bl_old%temp
bl%theta = bl_old%theta
bl%qv = bl_old%qv
bl%lwp = bl_old%lwp
bl%cloud_frac= bl_old%cloud_frac
bl%s_e = bl_old%s_e
bl%km = bl_old%km
bl%kh = bl_old%kh
bl%vdcuv = bl_old%vdcuv
bl%vdctq = bl_old%vdctq
bl%hpbla_diag = bl_old%hpbla_diag
bl%p0 = bl_old%p0
bl%ktvdm = bl_old%ktvdm
bl%kpbl = bl_old%kpbl
bl%ktop = bl_old%ktop
end if
end subroutine scm_data_copy
end module scm_state_data