40 REAL(KIND=8),
PARAMETER ::
real_eps = 2.2204460492503131e-16
90 IF (i == j) kdelta = 1
98 SUBROUTINE coeff(i,j,k,v)
99 INTEGER,
INTENT(IN) :: i,j,k
100 REAL(KIND=8),
INTENT(IN) :: v
102 IF (.NOT.
ALLOCATED(
aotensor)) stop
"*** coeff routine : tensor not yet allocated ***" 103 IF (.NOT.
ALLOCATED(
aotensor(i)%elems)) stop
"*** coeff routine : tensor not yet allocated ***" 124 INTEGER,
INTENT(IN) :: i,j,k
125 REAL(KIND=8),
INTENT(IN) :: v
134 SUBROUTINE func(i,j,k,v)
135 INTEGER,
INTENT(IN) :: i,j,k
136 REAL(KIND=8),
INTENT(IN) :: v
186 CALL func(
t(i),
a(j),
t(k),-(
ocean%O(i,j,k)))
211 IF (allocstat /= 0) stop
"*** Not enough memory ! ***" 218 IF (allocstat /= 0) stop
"*** Not enough memory ! ***" 222 IF (allocstat /= 0) stop
"*** Deallocation problem ! ***" real(kind=8) nuap
Non-dimensional dissipation in the atmosphere.
real(kind=8) cpa
- Non-dimensional constant short-wave radiation of the atmosphere.
integer ndim
Number of variables (dimension of the model)
integer noc
Number of oceanic basis functions.
subroutine, public init_inprod
Initialisation of the inner product.
real(kind=8) sig0
- Non-dimensional static stability of the atmosphere.
real(kind=8) betp
- Non-dimensional beta parameter
Inner products between the truncated set of basis functions for the ocean and atmosphere streamfuncti...
subroutine coeff(i, j, k, v)
Subroutine to add element in the aotensor structure.
integer function a(i)
Translate the coefficients into effective coordinates.
subroutine, public simplify(tensor)
Routine to simplify a coolist (sparse tensor). For each index , it upper triangularize the matrix ...
real(kind=8) nuop
Non-dimensional dissipation in the ocean.
real(kind=8) kdp
- Non-dimensional internal atmospheric friction coefficient.
real(kind=8) kd
- Non-dimensional bottom atmospheric friction coefficient.
The equation tensor for the coupled ocean-atmosphere model with temperature which allows for an exten...
integer function kdelta(i, j)
Kronecker delta function.
subroutine compute_aotensor(func)
Subroutine to compute the tensor aotensor.
real(kind=8) sc
Ratio of surface to atmosphere temperature.
subroutine add_count(i, j, k, v)
Subroutine to count the elements of the aotensor . Add +1 to count_elems(i) for each value that is ad...
real(kind=8) sbpo
- Long wave radiation lost by ocean to atmosphere & space.
real(kind=8) dp
- Non-dimensional mechanical coupling parameter between the ocean and the atmosphere.
Coordinate list. Type used to represent the sparse tensor.
integer function psi(i)
Translate the coefficients into effective coordinates.
real(kind=8), parameter real_eps
Epsilon to test equality with 0.
integer natm
Number of atmospheric basis functions.
type(atm_tensors), public atmos
Atmospheric tensors.
real(kind=8) lpo
- Non-dimensional sensible + turbulent heat exchange from ocean to atmosphere.
integer function t(i)
Translate the coefficients into effective coordinates.
real(kind=8) sbpa
- Long wave radiation from atmosphere absorbed by ocean.
integer, dimension(:), allocatable count_elems
Vector used to count the tensor elements.
The model parameters module.
subroutine init_params
Parameters initialisation routine.
real(kind=8) lsbpa
- Long wave radiation lost by atmosphere to space & ocean.
real(kind=8) lpa
- Non-dimensional sensible + turbulent heat exchange from atmosphere to ocean.
type(coolist), dimension(:), allocatable, public aotensor
- Tensor representation of the tendencies.
real(kind=8) rp
- Frictional coefficient at the bottom of the ocean.
integer function theta(i)
Translate the coefficients into effective coordinates.
type(ocean_tensors), public ocean
Oceanic tensors.
real(kind=8) cpo
- Non-dimensional constant short-wave radiation of the ocean.
real(kind=8) lsbpo
- Long wave radiation from ocean absorbed by atmosphere.
subroutine, public init_aotensor
Subroutine to initialise the aotensor tensor.