42 REAL(KIND=8),
DIMENSION(:),
ALLOCATABLE,
PUBLIC ::
m11 44 REAL(KIND=8),
DIMENSION(:),
ALLOCATABLE,
PUBLIC ::
m13 45 REAL(KIND=8),
DIMENSION(:),
ALLOCATABLE,
PUBLIC ::
m1tot 53 TYPE(
coolist),
DIMENSION(:,:),
ALLOCATABLE,
PUBLIC ::
l1 54 TYPE(
coolist),
DIMENSION(:,:),
ALLOCATABLE,
PUBLIC ::
l2 55 TYPE(
coolist),
DIMENSION(:,:),
ALLOCATABLE,
PUBLIC ::
l4 56 TYPE(
coolist),
DIMENSION(:,:),
ALLOCATABLE,
PUBLIC ::
l5 60 TYPE(
coolist),
DIMENSION(:,:),
ALLOCATABLE,
PUBLIC ::
b1 61 TYPE(
coolist),
DIMENSION(:,:),
ALLOCATABLE,
PUBLIC ::
b2 62 TYPE(
coolist),
DIMENSION(:,:),
ALLOCATABLE,
PUBLIC ::
b3 63 TYPE(
coolist),
DIMENSION(:,:),
ALLOCATABLE,
PUBLIC ::
b4 64 TYPE(
coolist),
DIMENSION(:,:),
ALLOCATABLE,
PUBLIC ::
b14 65 TYPE(
coolist),
DIMENSION(:,:),
ALLOCATABLE,
PUBLIC ::
b23 69 REAL(KIND=8),
DIMENSION(:),
ALLOCATABLE ::
dumb_vec 70 REAL(KIND=8),
DIMENSION(:,:),
ALLOCATABLE ::
dumb_mat1 71 REAL(KIND=8),
DIMENSION(:,:),
ALLOCATABLE ::
dumb_mat2 72 REAL(KIND=8),
DIMENSION(:,:),
ALLOCATABLE ::
dumb_mat3 73 REAL(KIND=8),
DIMENSION(:,:),
ALLOCATABLE ::
dumb_mat4 94 INTEGER :: AllocStat,i,j,k,m
96 print*,
'Initializing the decompostion tensors...' 98 print*,
"Initializing the correlation matrices and tensors..." 102 print*,
"Computing the M1 terms..." 105 IF (allocstat /= 0) stop
"*** Not enough memory ! ***" 108 IF (allocstat /= 0) stop
"*** Not enough memory ! ***" 111 IF (allocstat /= 0) stop
"*** Not enough memory ! ***" 114 IF (allocstat /= 0) stop
"*** Not enough memory ! ***" 139 print*,
"Computing the M2 terms..." 141 IF (allocstat /= 0) stop
"*** Not enough memory ! ***" 155 print*,
"Computing the M3 terms..." 157 print*,
"Computing the L subterms..." 159 IF (allocstat /= 0) stop
"*** Not enough memory ! ***" 214 IF (allocstat /= 0) stop
"*** Not enough memory ! ***" 225 print*,
"Computing the B terms..." 227 IF (allocstat /= 0) stop
"*** Not enough memory ! ***" 287 IF (allocstat /= 0) stop
"*** Not enough memory ! ***" 301 print*,
"Computing the M term..." 304 IF (allocstat /= 0) stop
"*** Not enough memory ! ***" 325 IF (allocstat /= 0) stop
"*** Problem to deallocate ! ***" 328 IF (allocstat /= 0) stop
"*** Problem to deallocate ! ***" 331 IF (allocstat /= 0) stop
"*** Problem to deallocate ! ***" type(coolist), dimension(:), allocatable, public lxy
Tensor holding the linear part of the resolved tendencies involving the unresolved variables...
The stochastic models parameters module.
integer ndim
Number of variables (dimension of the model)
real(kind=8), dimension(:,:), allocatable, public corr_i_full
Covariance matrix of the unresolved variables (full version)
subroutine, public add_vec_ijk_to_tensor4(i, j, k, src, dst)
Routine to add a vector to a rank-4 tensor.
subroutine, public copy_coo(src, dst)
Routine to copy a coolist.
subroutine, public add_vec_jk_to_tensor(j, k, src, dst)
Routine to add a vector to a rank-3 tensor.
The resolved-unresolved components decomposition of the tensor.
type(coolist4), dimension(:,:), allocatable, public ydyy
Coolist holding the terms.
real(kind=8), dimension(:), allocatable, public mean_full
Vector holding the mean of the unresolved dynamics (full version)
type(coolist), dimension(:), allocatable, public m12
Second component of the M1 term.
type(coolist), dimension(:,:), allocatable, public l4
Fourth linear tensor.
type(coolist), dimension(:,:), allocatable, public l5
Fifth linear tensor.
subroutine, public coo_to_mat_i(i, src, dst)
Routine to convert a rank-3 tensor coolist component into a matrix.
type(coolist), dimension(:,:), allocatable, public b2
Second quadratic tensor.
subroutine, public coo_to_mat_j(j, src, dst)
Routine to convert a rank-3 tensor coolist component into a matrix.
real(kind=8) function, public mat_trace(A)
real(kind=8), dimension(:), allocatable, public m13
Third component of the M1 term.
type(coolist), dimension(:,:), allocatable, public b14
Joint 1st and 4th tensors.
real(kind=8) function, public mat_contract(A, B)
subroutine, public add_matc_to_tensor(i, src, dst)
Routine to add a matrix to a rank-3 tensor.
Coordinate list. Type used to represent the sparse tensor.
type(coolist), dimension(:,:), allocatable, public dy
Coolist holding the terms.
logical function, public tensor_empty(t)
Test if a rank-3 tensor coolist is empty.
type(coolist), dimension(:), allocatable, public m22
Second tensor of the M2 term.
type(coolist), dimension(:), allocatable, public byxy
Tensor holding the quadratic part of the unresolved tendencies involving both resolved and unresolved...
subroutine, public sparse_mul4_with_mat_kl(coolist_ijkl, mat_kl, res)
Sparse multiplication of a rank-4 tensor coolist with a matrix : .
subroutine, public init_corr_tensor
Subroutine to initialise the correlations tensors.
type(coolist), dimension(:,:), allocatable, public b3
Third quadratic tensor.
The WL tensors used to integrate the model.
type(coolist4), dimension(:,:), allocatable, public mtot
Tensor for the cubic terms.
real(kind=8), dimension(:), allocatable dumb_vec
Dumb vector to be used in the calculation.
type(coolist), dimension(:,:), allocatable, public l1
First linear tensor.
subroutine, public coo_to_mat_ik(src, dst)
Routine to convert a rank-3 tensor coolist component into a matrix with i and k indices.
subroutine, public add_to_tensor(src, dst)
Routine to add a rank-3 tensor to another one.
type(coolist), dimension(:,:), allocatable, public l2
Second linear tensor.
real(kind=8), dimension(:,:), allocatable dumb_mat4
Dummy matrix.
type(coolist), dimension(:), allocatable, public bxxy
Tensor holding the quadratic part of the resolved tendencies involving both resolved and unresolved v...
real(kind=8), dimension(:,:), allocatable dumb_mat3
Dummy matrix.
4d coordinate list. Type used to represent the rank-4 sparse tensor.
subroutine, public matc_to_coo(src, dst)
Routine to convert a matrix to a rank-3 tensor.
subroutine, public sparse_mul3_with_mat(coolist_ijk, mat_jk, res)
Sparse multiplication of a rank-3 tensor coolist with a matrix: .
real(kind=8), dimension(:,:), allocatable dumb_mat2
Dumb matrix to be used in the calculation.
Module to initialize the correlation matrix of the unresolved variables.
real(kind=8), dimension(:,:), allocatable dumb_mat1
Dumb matrix to be used in the calculation.
The model parameters module.
type(coolist), dimension(:), allocatable, public bxyy
Tensor holding the quadratic part of the resolved tendencies involving unresolved variables...
type(coolist), dimension(:,:), allocatable, public b23
Joint 2nd and 3rd tensors.
type(coolist), dimension(:,:), allocatable, public b4
Fourth quadratic tensor.
logical, public mdef
Boolean to (de)activate the computation of the terms.
logical function, public tensor4_empty(t)
Test if a rank-4 tensor coolist is empty.
type(coolist), dimension(:), allocatable, public lyx
Tensor holding the linear part of the unresolved tendencies involving the resolved variables...
type(coolist), dimension(:,:), allocatable, public ltot
Total linear tensor.
type(coolist), dimension(:), allocatable, public byxx
Tensor holding the quadratic part of the unresolved tendencies involving resolved variables...
Module to compute the correlations and derivatives used to compute the memory term of the WL paramete...
subroutine, public init_wl_tensor
Subroutine to initialise the WL tensor.
subroutine, public init_dec_tensor
Subroutine that initialize and compute the decomposed tensors.
real(kind=8), dimension(:), allocatable, public m11
First component of the M1 term.
type(coolist), dimension(:), allocatable, public m21
First tensor of the M2 term.
subroutine, public coo_to_vec_jk(j, k, src, dst)
Routine to convert a rank-3 tensor coolist component into a vector.
type(coolist), dimension(:,:), allocatable, public b1
First quadratic tensor.
real(kind=8), dimension(:), allocatable, public m1tot
Total vector.
integer mems
Number of steps in the memory kernel integral.