9 use kinds,
only: kind_real
14 public :: soca_soft_jacobian
22 real(kind=kind_real) :: dsdtmax
23 real(kind=kind_real) :: dsdzmin
24 real(kind=kind_real) :: dtdzmin
26 real(kind=kind_real),
allocatable :: jacobian(:,:,:)
43 subroutine soca_soft_jacobian (jac, t, s, h, dsdtmax, dsdzmin, dtdzmin)
44 real(kind=kind_real),
intent(in) :: t(:), s(:), h(:)
45 real(kind=kind_real),
intent(in) :: dsdtmax, dsdzmin, dtdzmin
46 real(kind=kind_real),
allocatable,
intent(inout) :: jac(:)
48 real(kind=kind_real),
allocatable :: dtdz(:), dsdz(:)
50 real(kind=kind_real) :: j
54 allocate(dtdz(nl),dsdz(nl))
55 if (.not.
allocated(jac))
allocate(jac(nl))
65 if ( abs(dtdz(z)) < dtdzmin ) cycle
66 if ( abs(dsdz(z)) < dsdzmin ) cycle
72 if ( abs(j) > dsdtmax ) cycle
78 end subroutine soca_soft_jacobian
variable transform: S/T balance
various utility functions
subroutine, public soca_diff(dvdz, v, h)
Hold the configuration and jacobians for the s/t balance transform.