! 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