33 use gsw_mod_toolbox
, only : gsw_rho_first_derivatives
35 implicit none ;
private 45 real,
parameter ::
pa2db = 1.e-4
47 real,
parameter ::
r1_s0 = 0.875/35.16504
48 real,
parameter ::
r1_t0 = 1./40.
49 real,
parameter ::
r1_p0 = 1.e-4
50 real,
parameter ::
r00 = 4.6494977072e+01
51 real,
parameter ::
r01 = -5.2099962525
52 real,
parameter ::
r02 = 2.2601900708e-01
53 real,
parameter ::
r03 = 6.4326772569e-02
54 real,
parameter ::
r04 = 1.5616995503e-02
55 real,
parameter ::
r05 = -1.7243708991e-03
56 real,
parameter ::
eos000 = 8.0189615746e+02
57 real,
parameter ::
eos100 = 8.6672408165e+02
58 real,
parameter ::
eos200 = -1.7864682637e+03
59 real,
parameter ::
eos300 = 2.0375295546e+03
60 real,
parameter ::
eos400 = -1.2849161071e+03
61 real,
parameter ::
eos500 = 4.3227585684e+02
62 real,
parameter ::
eos600 = -6.0579916612e+01
63 real,
parameter ::
eos010 = 2.6010145068e+01
64 real,
parameter ::
eos110 = -6.5281885265e+01
65 real,
parameter ::
eos210 = 8.1770425108e+01
66 real,
parameter ::
eos310 = -5.6888046321e+01
67 real,
parameter ::
eos410 = 1.7681814114e+01
68 real,
parameter ::
eos510 = -1.9193502195
69 real,
parameter ::
eos020 = -3.7074170417e+01
70 real,
parameter ::
eos120 = 6.1548258127e+01
71 real,
parameter ::
eos220 = -6.0362551501e+01
72 real,
parameter ::
eos320 = 2.9130021253e+01
73 real,
parameter ::
eos420 = -5.4723692739
74 real,
parameter ::
eos030 = 2.1661789529e+01
75 real,
parameter ::
eos130 = -3.3449108469e+01
76 real,
parameter ::
eos230 = 1.9717078466e+01
77 real,
parameter ::
eos330 = -3.1742946532
78 real,
parameter ::
eos040 = -8.3627885467
79 real,
parameter ::
eos140 = 1.1311538584e+01
80 real,
parameter ::
eos240 = -5.3563304045
81 real,
parameter ::
eos050 = 5.4048723791e-01
82 real,
parameter ::
eos150 = 4.8169980163e-01
83 real,
parameter ::
eos060 = -1.9083568888e-01
84 real,
parameter ::
eos001 = 1.9681925209e+01
85 real,
parameter ::
eos101 = -4.2549998214e+01
86 real,
parameter ::
eos201 = 5.0774768218e+01
87 real,
parameter ::
eos301 = -3.0938076334e+01
88 real,
parameter ::
eos401 = 6.6051753097
89 real,
parameter ::
eos011 = -1.3336301113e+01
90 real,
parameter ::
eos111 = -4.4870114575
91 real,
parameter ::
eos211 = 5.0042598061
92 real,
parameter ::
eos311 = -6.5399043664e-01
93 real,
parameter ::
eos021 = 6.7080479603
94 real,
parameter ::
eos121 = 3.5063081279
95 real,
parameter ::
eos221 = -1.8795372996
96 real,
parameter ::
eos031 = -2.4649669534
97 real,
parameter ::
eos131 = -5.5077101279e-01
98 real,
parameter ::
eos041 = 5.5927935970e-01
99 real,
parameter ::
eos002 = 2.0660924175
100 real,
parameter ::
eos102 = -4.9527603989
103 real,
parameter ::
eos112 = -2.1311365518e-01
104 real,
parameter ::
eos022 = -1.2419983026
105 real,
parameter ::
eos003 = -2.3342758797e-02
106 real,
parameter ::
eos103 = -1.8507636718e-02
107 real,
parameter ::
eos013 = 3.7969820455e-01
108 real,
parameter ::
alp000 = -6.5025362670e-01
110 real,
parameter ::
alp200 = -2.0442606277
112 real,
parameter ::
alp400 = -4.4204535284e-01
113 real,
parameter ::
alp500 = 4.7983755487e-02
115 real,
parameter ::
alp110 = -3.0774129064
117 real,
parameter ::
alp310 = -1.4565010626
118 real,
parameter ::
alp410 = 2.7361846370e-01
119 real,
parameter ::
alp020 = -1.6246342147
121 real,
parameter ::
alp220 = -1.4787808849
122 real,
parameter ::
alp320 = 2.3807209899e-01
123 real,
parameter ::
alp030 = 8.3627885467e-01
124 real,
parameter ::
alp130 = -1.1311538584
125 real,
parameter ::
alp230 = 5.3563304045e-01
126 real,
parameter ::
alp040 = -6.7560904739e-02
127 real,
parameter ::
alp140 = -6.0212475204e-02
128 real,
parameter ::
alp050 = 2.8625353333e-02
129 real,
parameter ::
alp001 = 3.3340752782e-01
130 real,
parameter ::
alp101 = 1.1217528644e-01
131 real,
parameter ::
alp201 = -1.2510649515e-01
132 real,
parameter ::
alp301 = 1.6349760916e-02
133 real,
parameter ::
alp011 = -3.3540239802e-01
134 real,
parameter ::
alp111 = -1.7531540640e-01
135 real,
parameter ::
alp211 = 9.3976864981e-02
136 real,
parameter ::
alp021 = 1.8487252150e-01
137 real,
parameter ::
alp121 = 4.1307825959e-02
138 real,
parameter ::
alp031 = -5.5927935970e-02
139 real,
parameter ::
alp002 = -5.1410778748e-02
140 real,
parameter ::
alp102 = 5.3278413794e-03
141 real,
parameter ::
alp012 = 6.2099915132e-02
142 real,
parameter ::
alp003 = -9.4924551138e-03
143 real,
parameter ::
bet000 = 1.0783203594e+01
144 real,
parameter ::
bet100 = -4.4452095908e+01
145 real,
parameter ::
bet200 = 7.6048755820e+01
146 real,
parameter ::
bet300 = -6.3944280668e+01
147 real,
parameter ::
bet400 = 2.6890441098e+01
148 real,
parameter ::
bet500 = -4.5221697773
149 real,
parameter ::
bet010 = -8.1219372432e-01
151 real,
parameter ::
bet210 = -2.1232895170
152 real,
parameter ::
bet310 = 8.7994140485e-01
153 real,
parameter ::
bet410 = -1.1939638360e-01
154 real,
parameter ::
bet020 = 7.6574242289e-01
155 real,
parameter ::
bet120 = -1.5019813020
157 real,
parameter ::
bet320 = -2.7233429080e-01
158 real,
parameter ::
bet030 = -4.1615152308e-01
159 real,
parameter ::
bet130 = 4.9061350869e-01
160 real,
parameter ::
bet230 = -1.1847737788e-01
161 real,
parameter ::
bet040 = 1.4073062708e-01
162 real,
parameter ::
bet140 = -1.3327978879e-01
163 real,
parameter ::
bet050 = 5.9929880134e-03
164 real,
parameter ::
bet001 = -5.2937873009e-01
166 real,
parameter ::
bet201 = -1.1547328025
167 real,
parameter ::
bet301 = 3.2870876279e-01
168 real,
parameter ::
bet011 = -5.5824407214e-02
169 real,
parameter ::
bet111 = 1.2451933313e-01
170 real,
parameter ::
bet211 = -2.4409539932e-02
171 real,
parameter ::
bet021 = 4.3623149752e-02
172 real,
parameter ::
bet121 = -4.6767901790e-02
173 real,
parameter ::
bet031 = -6.8523260060e-03
174 real,
parameter ::
bet002 = -6.1618945251e-02
175 real,
parameter ::
bet102 = 6.2255521644e-02
176 real,
parameter ::
bet012 = -2.6514181169e-03
177 real,
parameter ::
bet003 = -2.3025968587e-04
184 real,
intent(in) :: T, S, pressure
185 real,
intent(out) :: rho
197 real :: al0, p0, lambda
199 real,
dimension(1) :: T0, S0, pressure0
200 real,
dimension(1) :: rho0
204 pressure0(1) = pressure
213 real,
intent(in),
dimension(:) :: T
214 real,
intent(in),
dimension(:) :: S
215 real,
intent(in),
dimension(:) :: pressure
216 real,
intent(out),
dimension(:) :: rho
217 integer,
intent(in) :: start
218 integer,
intent(in) :: npts
232 real :: zp,zt , zh , zs , zr0, zn , zn0, zn1, zn2, zn3
235 do j=start,start+npts-1
239 zp = pressure(j)*
pa2db 268 zn = ( ( zn3 * zp + zn2 ) * zp + zn1 ) * zp + zn0
272 rho(j) = ( zn + zr0 )
278 real,
intent(in),
dimension(:) :: T
279 real,
intent(in),
dimension(:) :: S
280 real,
intent(in),
dimension(:) :: pressure
281 real,
intent(out),
dimension(:) :: drho_dT
283 real,
intent(out),
dimension(:) :: drho_dS
285 integer,
intent(in) :: start
286 integer,
intent(in) :: npts
296 real :: zp,zt , zh , zs , zr0, zn , zn0, zn1, zn2, zn3
299 do j=start,start+npts-1
303 zp = pressure(j)*
pa2db 328 zn = ( ( zn3 * zp + zn2 ) * zp + zn1 ) * zp + zn0
350 zn = ( ( zn3 * zp + zn2 ) * zp + zn1 ) * zp + zn0
358 real,
intent(in),
dimension(:) :: T
359 real,
intent(in),
dimension(:) :: S
360 real,
intent(in),
dimension(:) :: pressure
361 real,
intent(out),
dimension(:) :: rho
362 real,
intent(out),
dimension(:) :: drho_dp
365 integer,
intent(in) :: start
366 integer,
intent(in) :: npts
385 do j=start,start+npts-1
389 zp = pressure(j)*
pa2db 390 call gsw_rho_first_derivatives(zs,zt,zp, drho_dp=drho_dp(j))
subroutine, public calculate_density_array_nemo(T, S, pressure, rho, start, npts)
This subroutine computes the in situ density of sea water (rho in units of kg/m^3) from absolute sali...
subroutine, public calculate_density_derivs_nemo(T, S, pressure, drho_dT, drho_dS, start, npts)
subroutine, public calculate_compress_nemo(T, S, pressure, rho, drho_dp, start, npts)
subroutine, public calculate_density_scalar_nemo(T, S, pressure, rho)