@@ -25,6 +25,7 @@ module MOM_EOS
25
25
use MOM_EOS_Wright_red, only : calculate_density_second_derivs_wright_red
26
26
use MOM_EOS_UNESCO, only : calculate_density_unesco, calculate_spec_vol_unesco
27
27
use MOM_EOS_UNESCO, only : calculate_density_derivs_unesco, calculate_density_unesco
28
+ use MOM_EOS_UNESCO, only : calculate_density_second_derivs_UNESCO
28
29
use MOM_EOS_UNESCO, only : calculate_compress_unesco
29
30
use MOM_EOS_NEMO, only : calculate_density_nemo
30
31
use MOM_EOS_NEMO, only : calculate_density_derivs_nemo, calculate_density_nemo
@@ -265,8 +266,8 @@ subroutine calculate_stanley_density_scalar(T, S, pressure, Tvar, TScov, Svar, r
265
266
call calculate_density_second_derivs_wright_red(T_scale* T, S_scale* S, p_scale* pressure, &
266
267
d2RdSS, d2RdST, d2RdTT, d2RdSp, d2RdTP)
267
268
case (EOS_UNESCO)
268
- call MOM_error(FATAL, " calculate_stanley_density_scalar: " // &
269
- " EOS_UNESCO is not set up to calculate second derivatives yet. " )
269
+ call calculate_density_second_derivs_UNESCO(T_scale * T, S_scale * S, p_scale * pressure, &
270
+ d2RdSS, d2RdST, d2RdTT, d2RdSp, d2RdTP )
270
271
case (EOS_NEMO)
271
272
call calculate_density_second_derivs_NEMO(T_scale* T, S_scale* S, p_scale* pressure, &
272
273
d2RdSS, d2RdST, d2RdTT, d2RdSp, d2RdTP)
@@ -374,8 +375,9 @@ subroutine calculate_stanley_density_array(T, S, pressure, Tvar, TScov, Svar, rh
374
375
call calculate_density_second_derivs_wright_red(T, S, pressure, d2RdSS, d2RdST, &
375
376
d2RdTT, d2RdSp, d2RdTP, start, npts)
376
377
case (EOS_UNESCO)
377
- call MOM_error(FATAL, " calculate_stanley_density_array: " // &
378
- " EOS_UNESCO is not set up to calculate second derivatives yet." )
378
+ call calculate_density_UNESCO(T, S, pressure, rho, start, npts, rho_ref)
379
+ call calculate_density_second_derivs_UNESCO(T, S, pressure, d2RdSS, d2RdST, &
380
+ d2RdTT, d2RdSp, d2RdTP, start, npts)
379
381
case (EOS_NEMO)
380
382
call calculate_density_NEMO(T, S, pressure, rho, start, npts, rho_ref)
381
383
call calculate_density_second_derivs_NEMO(T, S, pressure, d2RdSS, d2RdST, &
@@ -528,8 +530,9 @@ subroutine calculate_stanley_density_1d(T, S, pressure, Tvar, TScov, Svar, rho,
528
530
call calculate_density_second_derivs_wright_red(Ta, Sa, pres, d2RdSS, d2RdST, &
529
531
d2RdTT, d2RdSp, d2RdTP, is, npts)
530
532
case (EOS_UNESCO)
531
- call MOM_error(FATAL, " calculate_stanley_density_1d: " // &
532
- " EOS_UNESCO is not set up to calculate second derivatives yet." )
533
+ call calculate_density_UNESCO(Ta, Sa, pres, rho, is, npts, rho_reference)
534
+ call calculate_density_second_derivs_UNESCO(Ta, Sa, pres, d2RdSS, d2RdST, &
535
+ d2RdTT, d2RdSp, d2RdTP, is, npts)
533
536
case (EOS_NEMO)
534
537
call calculate_density_NEMO(Ta, Sa, pres, rho, is, npts, rho_reference)
535
538
call calculate_density_second_derivs_NEMO(Ta, Sa, pres, d2RdSS, d2RdST, &
@@ -1052,8 +1055,8 @@ subroutine calculate_density_second_derivs_1d(T, S, pressure, drho_dS_dS, drho_d
1052
1055
call calculate_density_second_derivs_wright_red(T, S, pressure, drho_dS_dS, drho_dS_dT, &
1053
1056
drho_dT_dT, drho_dS_dP, drho_dT_dP, is, npts)
1054
1057
case (EOS_UNESCO)
1055
- call MOM_error(FATAL, " calculate_density_second_derivs: " // &
1056
- " EOS_UNESCO is not set up to calculate second derivatives yet. " )
1058
+ call calculate_density_second_derivs_UNESCO(T, S, pressure, drho_dS_dS, drho_dS_dT, &
1059
+ drho_dT_dT, drho_dS_dP, drho_dT_dP, is, npts )
1057
1060
case (EOS_NEMO)
1058
1061
call calculate_density_second_derivs_NEMO(T, S, pressure, drho_dS_dS, drho_dS_dT, &
1059
1062
drho_dT_dT, drho_dS_dP, drho_dT_dP, is, npts)
@@ -1083,8 +1086,8 @@ subroutine calculate_density_second_derivs_1d(T, S, pressure, drho_dS_dS, drho_d
1083
1086
call calculate_density_second_derivs_wright_red(Ta, Sa, pres, drho_dS_dS, drho_dS_dT, &
1084
1087
drho_dT_dT, drho_dS_dP, drho_dT_dP, is, npts)
1085
1088
case (EOS_UNESCO)
1086
- call MOM_error(FATAL, " calculate_density_second_derivs: " // &
1087
- " EOS_UNESCO is not set up to calculate second derivatives yet. " )
1089
+ call calculate_density_second_derivs_UNESCO(Ta, Sa, pres, drho_dS_dS, drho_dS_dT, &
1090
+ drho_dT_dT, drho_dS_dP, drho_dT_dP, is, npts )
1088
1091
case (EOS_NEMO)
1089
1092
call calculate_density_second_derivs_NEMO(Ta, Sa, pres, drho_dS_dS, drho_dS_dT, &
1090
1093
drho_dT_dT, drho_dS_dP, drho_dT_dP, is, npts)
@@ -1168,8 +1171,8 @@ subroutine calculate_density_second_derivs_scalar(T, S, pressure, drho_dS_dS, dr
1168
1171
call calculate_density_second_derivs_wright_red(Ta, Sa, pres, drho_dS_dS, drho_dS_dT, &
1169
1172
drho_dT_dT, drho_dS_dP, drho_dT_dP)
1170
1173
case (EOS_UNESCO)
1171
- call MOM_error(FATAL, " calculate_density_second_derivs: " // &
1172
- " EOS_UNESCO is not set up to calculate second derivatives yet. " )
1174
+ call calculate_density_second_derivs_UNESCO(Ta, Sa, pres, drho_dS_dS, drho_dS_dT, &
1175
+ drho_dT_dT, drho_dS_dP, drho_dT_dP )
1173
1176
case (EOS_NEMO)
1174
1177
call calculate_density_second_derivs_NEMO(Ta, Sa, pres, drho_dS_dS, drho_dS_dT, &
1175
1178
drho_dT_dT, drho_dS_dP, drho_dT_dP)
@@ -1985,7 +1988,7 @@ logical function EOS_unit_tests(verbose)
1985
1988
EOS_unit_tests = .false. ! Normally return false
1986
1989
1987
1990
call EOS_manual_init(EOS_tmp, form_of_EOS= EOS_UNESCO)
1988
- fail = test_EOS_consistency(25.0 , 35.0 , 1.0e7 , EOS_tmp, verbose, " UNESCO" , skip_2nd = .true. , &
1991
+ fail = test_EOS_consistency(25.0 , 35.0 , 1.0e7 , EOS_tmp, verbose, " UNESCO" , &
1989
1992
rho_check= 1027.5434579611974 * EOS_tmp% kg_m3_to_R)
1990
1993
if (verbose .and. fail) call MOM_error(WARNING, " UNESCO EOS has failed some self-consistency tests." )
1991
1994
EOS_unit_tests = EOS_unit_tests .or. fail
0 commit comments