@@ -25,6 +25,7 @@ module MOM_EOS
2525use MOM_EOS_Wright_red, only : calculate_density_second_derivs_wright_red
2626use MOM_EOS_UNESCO, only : calculate_density_unesco, calculate_spec_vol_unesco
2727use MOM_EOS_UNESCO, only : calculate_density_derivs_unesco, calculate_density_unesco
28+ use MOM_EOS_UNESCO, only : calculate_density_second_derivs_UNESCO
2829use MOM_EOS_UNESCO, only : calculate_compress_unesco
2930use MOM_EOS_NEMO, only : calculate_density_nemo
3031use 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
265266 call calculate_density_second_derivs_wright_red(T_scale* T, S_scale* S, p_scale* pressure, &
266267 d2RdSS, d2RdST, d2RdTT, d2RdSp, d2RdTP)
267268 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 )
270271 case (EOS_NEMO)
271272 call calculate_density_second_derivs_NEMO(T_scale* T, S_scale* S, p_scale* pressure, &
272273 d2RdSS, d2RdST, d2RdTT, d2RdSp, d2RdTP)
@@ -374,8 +375,9 @@ subroutine calculate_stanley_density_array(T, S, pressure, Tvar, TScov, Svar, rh
374375 call calculate_density_second_derivs_wright_red(T, S, pressure, d2RdSS, d2RdST, &
375376 d2RdTT, d2RdSp, d2RdTP, start, npts)
376377 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)
379381 case (EOS_NEMO)
380382 call calculate_density_NEMO(T, S, pressure, rho, start, npts, rho_ref)
381383 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,
528530 call calculate_density_second_derivs_wright_red(Ta, Sa, pres, d2RdSS, d2RdST, &
529531 d2RdTT, d2RdSp, d2RdTP, is, npts)
530532 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)
533536 case (EOS_NEMO)
534537 call calculate_density_NEMO(Ta, Sa, pres, rho, is, npts, rho_reference)
535538 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
10521055 call calculate_density_second_derivs_wright_red(T, S, pressure, drho_dS_dS, drho_dS_dT, &
10531056 drho_dT_dT, drho_dS_dP, drho_dT_dP, is, npts)
10541057 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 )
10571060 case (EOS_NEMO)
10581061 call calculate_density_second_derivs_NEMO(T, S, pressure, drho_dS_dS, drho_dS_dT, &
10591062 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
10831086 call calculate_density_second_derivs_wright_red(Ta, Sa, pres, drho_dS_dS, drho_dS_dT, &
10841087 drho_dT_dT, drho_dS_dP, drho_dT_dP, is, npts)
10851088 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 )
10881091 case (EOS_NEMO)
10891092 call calculate_density_second_derivs_NEMO(Ta, Sa, pres, drho_dS_dS, drho_dS_dT, &
10901093 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
11681171 call calculate_density_second_derivs_wright_red(Ta, Sa, pres, drho_dS_dS, drho_dS_dT, &
11691172 drho_dT_dT, drho_dS_dP, drho_dT_dP)
11701173 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 )
11731176 case (EOS_NEMO)
11741177 call calculate_density_second_derivs_NEMO(Ta, Sa, pres, drho_dS_dS, drho_dS_dT, &
11751178 drho_dT_dT, drho_dS_dP, drho_dT_dP)
@@ -1985,7 +1988,7 @@ logical function EOS_unit_tests(verbose)
19851988 EOS_unit_tests = .false. ! Normally return false
19861989
19871990 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" , &
19891992 rho_check= 1027.5434579611974 * EOS_tmp% kg_m3_to_R)
19901993 if (verbose .and. fail) call MOM_error(WARNING, " UNESCO EOS has failed some self-consistency tests." )
19911994 EOS_unit_tests = EOS_unit_tests .or. fail
0 commit comments