194 lat_grid, dlong_grid, dlat_grid, output_data)
197 real (r8),
intent(in) ::
long, lat, long_grid, lat_grid, dlong_grid
198 real (r8),
intent(in) :: dlat_grid
199 real (r8),
intent(in),
dimension(4) :: input_data
200 real (r8),
intent(out),
dimension(4) :: output_data
206 real (r8),
intent(in),
dimension(4) :: data_in
207 real (r8),
intent(out),
dimension(4) :: data_out
213 real (r8),
intent(in) :: sa, ct, p
220 real (r8),
intent(in) :: t, p
227 real (r8),
intent(in) :: sa, ct, p
234 real (r8),
intent(in) :: sa, ct, p
241 real (r8),
intent(in) :: sa, t, p
248 real (r8),
intent(in) :: t, p
255 real (r8),
intent(in) :: sa, ct, p
262 real (r8),
intent(in) :: sa, t, p
269 real (r8),
intent(in) :: sp, t, p
276 real (r8),
intent(in) :: sa, ct, p
283 real (r8),
intent(in) :: t, p
290 real (r8),
intent(in) :: sa, t, p
297 real (r8),
intent(in) :: t, p
304 real (r8),
intent(in) :: sa, pt
305 real (r8),
intent(out),
optional :: ct_sa, ct_pt
309 ct_sa_wrt_t, ct_t_wrt_t, ct_p_wrt_t)
312 real (r8),
intent(in) :: sa, t, p
313 real (r8),
intent(out),
optional :: ct_p_wrt_t, ct_sa_wrt_t, ct_t_wrt_t
319 real (r8),
intent(in) :: sa, p, saturation_fraction
320 logical,
intent(in),
optional :: poly
327 real (r8),
intent(in) :: sa, p, saturation_fraction
332 saturation_fraction, ctfreezing_sa, ctfreezing_p)
335 real (r8),
intent(in) :: sa, p, saturation_fraction
336 real (r8),
intent(out),
optional :: ctfreezing_sa, ctfreezing_p
340 saturation_fraction, ctfreezing_sa, ctfreezing_p)
343 real (r8),
intent(in) :: sa, p, saturation_fraction
344 real (r8),
intent(out),
optional :: ctfreezing_sa, ctfreezing_p
350 real (r8),
intent(in) :: sa, p, saturation_fraction
357 real (r8),
intent(in) :: sa, h, p
364 real (r8),
intent(in) :: sa, h, p
371 real (r8),
intent(in) :: sa, entropy
378 real (r8),
intent(in) :: sa, pt
385 real (r8),
intent(in) :: rho, sa, p
386 real (r8),
intent(out) :: ct
387 real (r8),
intent(out),
optional :: ct_multiple
393 real (r8),
intent(in) :: sa, t, p
400 real (r8),
intent(in) :: sa, p
408 real (r8),
intent(in) :: sa, pt
409 real (r8),
intent(out),
optional :: ct_sa_sa, ct_sa_pt, ct_pt_pt
415 real (r8),
intent(in) :: p,
long, lat
422 real (r8),
intent(in) :: sp, p,
long, lat
429 real (r8),
intent(in) :: sa, t, p
436 real (r8),
intent(in) :: sa, ct, p
443 real (r8),
intent(in) :: sa, ct, p
450 real (r8),
intent(in) :: sa, ct, p
457 real (r8),
intent(in) :: sa, ct, p_shallow, p_deep
464 real (r8),
intent(in) :: sa, ct, p
465 real (r8),
intent(out),
optional :: h_sa, h_ct
472 real (r8),
intent(in) :: sa, ct, p
473 real (r8),
intent(out),
optional :: h_sa, h_ct
479 real (r8),
intent(in) :: t, p
487 real (r8),
intent(in) :: sa, ct, p
488 real (r8),
intent(out),
optional :: h_sa_sa, h_sa_ct, h_ct_ct
492 h_sa_sa, h_sa_ct, h_ct_ct)
495 real (r8),
intent(in) :: sa, ct, p
496 real (r8),
intent(out),
optional :: h_sa_sa, h_sa_ct, h_ct_ct
502 real (r8),
intent(in) :: p
509 real (r8),
intent(in) :: sa, t, p
516 real (r8),
intent(in) :: sa, ct
517 real (r8),
intent(out),
optional :: eta_sa, eta_ct
523 real (r8),
intent(in) :: sa, pt
530 real (r8),
intent(in) :: sa, t, p
537 real (r8),
intent(in) :: t, p
544 real (r8),
intent(in) :: sa, t, p
551 real (r8),
intent(in) :: sa, pt0
556 eta_sa_ct, eta_ct_ct)
559 real (r8),
intent(in) :: sa, ct
560 real (r8),
intent(out),
optional :: eta_sa_sa, eta_sa_ct, eta_ct_ct
566 real (r8),
intent(in) :: p,
long, lat
571 sa_final, ct_final, w_ih_final)
574 real (r8),
intent(in) :: sa_bulk, h_bulk, p
575 real (r8),
intent(out) :: sa_final, ct_final, w_ih_final
579 p, sa_final, ct_final, w_ih_final)
582 real (r8),
intent(in) :: sa_bulk, h_pot_bulk, p
583 real (r8),
intent(out) :: sa_final, ct_final, w_ih_final
587 h_pot_bulk, p, sa_final, ct_final, w_ih_final)
590 real (r8),
intent(in) :: sa_bulk, h_pot_bulk, p
591 real (r8),
intent(out) :: sa_final, ct_final, w_ih_final
595 dsa_dct_frazil, dsa_dp_frazil, dct_dp_frazil)
598 real (r8),
intent(in) :: sa, p, w_ih
599 real (r8),
intent(out) :: dsa_dct_frazil, dsa_dp_frazil, dct_dp_frazil
603 dsa_dct_frazil, dsa_dp_frazil, dct_dp_frazil)
606 real (r8),
intent(in) :: sa, p, w_ih
607 real (r8),
intent(out) :: dsa_dct_frazil, dsa_dp_frazil, dct_dp_frazil
613 real (r8),
intent(in) :: sa(:), ct(:), p(:), p_ref
618 geo_strf_dyn_height_pc, p_mid)
621 real (r8),
intent(in) :: sa(:), ct(:), delta_p(:)
622 real (r8),
intent(out) :: geo_strf_dyn_height_pc(:), p_mid(:)
628 integer,
intent(in) :: ns, nt, np
629 real (r8),
intent(in) :: sa, t, p
636 integer,
intent(in) :: nt, np
637 real (r8),
intent(in) :: t, p
644 real (r8),
intent(in) :: t, p
651 real (r8),
intent(in) :: pt0
658 real (r8),
intent(in) :: pt0
665 real (r8),
intent(in) :: sa, pt0
672 real (r8),
intent(in) :: lat, p
679 real (r8),
intent(in) :: t, p
686 real (r8),
intent(in) :: t
691 t_ih, sa_freeze, ct_freeze, w_ih)
694 real (r8),
intent(in) :: sa, ct, p, t_ih
695 real (r8),
intent(out) :: sa_freeze, ct_freeze, w_ih
701 real (r8),
intent(in) :: sa, ct, p
708 real (r8),
intent(in) :: t, p
713 ipv_vs_fnsquared_ratio, p_mid)
716 real (r8),
intent(in) :: sa(:), ct(:), p(:), p_ref
717 real (r8),
intent(out) :: ipv_vs_fnsquared_ratio(:), p_mid(:)
723 real (r8),
intent(in) :: sa, ct, p
730 real (r8),
intent(in) :: t, p
737 real (r8),
intent(in) :: t, p
744 real (r8),
intent(in) :: sa, t, p
751 real (r8),
intent(in) :: sa, ct
758 real (r8),
intent(in) :: sa, t
765 real (r8),
intent(in) :: sa, p
772 real (r8),
intent(in) :: sa(:), ct(:), p(:), p_i(:)
773 real (r8),
intent(out) :: sa_i(:), ct_i(:)
779 real (r8),
intent(in) :: sa, p
786 real (r8),
intent(in) :: sa, p
791 sa_final, ct_final, w_ih_final)
794 real (r8),
intent(in) :: sa, ct, p, w_ih, t_ih
795 real (r8),
intent(out) :: sa_final, ct_final, w_ih_final
801 real (r8),
intent(in) :: sa, ct, p, t_ih
808 real (r8),
intent(in) :: sa, ct, p, t_ih
815 real (r8),
intent(in) :: sa, p
822 real (r8),
intent(in) :: sa, p
827 w_seaice, sa_seaice, t_seaice, sa_final, ct_final)
830 real (r8),
intent(in) :: sa, ct, p, w_seaice, sa_seaice, t_seaice
831 real (r8),
intent(out) :: sa_final, ct_final
838 real (r8),
intent(in) :: sa, ct, p, sa_seaice, t_seaice
846 real (r8),
intent(in) :: sa, ct, p, sa_seaice, t_seaice
853 real (r8),
intent(in) :: sa(:), ct(:), p(:)
860 real (r8),
intent(in) :: sa(:), ct(:), p(:), lat(:)
861 real (r8),
intent(out) :: n2(:), p_mid(:)
867 real (r8),
intent(in) :: p,
long, lat
872 n2_specvol, n2_alpha, n2_beta, dsa, dct, dp)
875 real (r8),
intent(in) :: sa(:), ct(:), p(:), lat(:)
876 real (r8),
intent(out) :: n2(:), n2_p(:), n2_specvol(:), n2_alpha(:)
877 real (r8),
intent(out) :: n2_beta(:), dsa(:), dct(:), dp(:)
881 n2_specvol, n2_alpha, n2_beta, dsa, dct, dp, n2_beta_ratio)
884 real (r8),
intent(in) :: sa(:), t(:), p(:), lat
885 real (r8),
intent(out) :: n2(:), n2_p(:), n2_specvol(:), n2_alpha(:)
886 real (r8),
intent(out) :: n2_beta(:), dsa(:), dct(:), dp(:)
887 real (r8),
intent(out) :: n2_beta_ratio(:)
891 sea_surface_geopotental)
894 real (r8),
intent(in) :: z, lat
895 real (r8),
intent(in),
optional :: geo_strf_dyn_height
896 real (r8),
intent(in),
optional :: sea_surface_geopotental
903 real (r8),
intent(in) :: pt0_ice
910 real (r8),
intent(in) :: pt0_ice
917 real (r8),
intent(in) :: sa, p
922 p, pot_enthalpy_ice_freezing_sa, pot_enthalpy_ice_freezing_p)
925 real (r8),
intent(in) :: sa, p
926 real (r8),
intent(out),
optional :: pot_enthalpy_ice_freezing_sa
927 real (r8),
intent(out),
optional :: pot_enthalpy_ice_freezing_p
931 sa, p, pot_enthalpy_ice_freezing_sa, pot_enthalpy_ice_freezing_p)
934 real (r8),
intent(in) :: sa, p
935 real (r8),
intent(out),
optional :: pot_enthalpy_ice_freezing_sa
936 real (r8),
intent(out),
optional :: pot_enthalpy_ice_freezing_p
942 real (r8),
intent(in) :: sa, p
949 real (r8),
intent(in) :: sa, t, p, p_ref
956 real (r8),
intent(in) :: t, p
963 real (r8),
intent(in) :: sa, ct, saturation_fraction
970 real (r8),
intent(in) :: pot_enthalpy_ice
977 real (r8),
intent(in) :: sa, t, p
984 real (r8),
intent(in) :: t, p
991 real (r8),
intent(in) :: sa, ct
992 real (r8),
intent(out),
optional :: pt_sa, pt_ct
998 real (r8),
intent(in) :: sa, ct
1005 real (r8),
intent(in) :: sa, entropy
1012 real (r8),
intent(in) :: pot_enthalpy_ice
1019 real (r8),
intent(in) :: pot_enthalpy_ice
1026 real (r8),
intent(in) :: pot_enthalpy_ice
1033 real (r8),
intent(in) :: sa, t, p, p_ref
1040 real (r8),
intent(in) :: t, p, p_ref
1048 real (r8),
intent(in) :: sa, ct
1049 real (r8),
intent(out),
optional :: pt_sa_sa, pt_sa_ct, pt_ct_ct
1055 real (r8),
intent(in) :: sa, ct, p
1062 real (r8),
intent(in) :: sa, ct, p
1063 real (r8),
intent(out),
optional :: rho, alpha, beta
1070 real (r8),
intent(in) :: sa, ct, p
1071 logical,
intent(in),
optional :: stiffened
1072 real (r8),
intent(out) :: rho
1073 real (r8),
intent(out),
optional :: alpha, beta
1080 real (r8),
intent(in) :: sa, ct, p
1081 real (r8),
intent(out),
optional :: drho_dsa, drho_dct, drho_dp
1088 real (r8),
intent(in) :: sa, ct, p
1089 real (r8),
intent(out),
optional :: rho_sa, rho_h
1095 real (r8),
intent(in) :: t, p
1100 rho_sa_ct, rho_ct_ct, rho_sa_p, rho_ct_p)
1103 real (r8),
intent(in) :: sa, ct, p
1104 real (r8),
intent(out),
optional :: rho_sa_sa, rho_sa_ct, rho_ct_ct
1105 real (r8),
intent(out),
optional :: rho_sa_p, rho_ct_p
1109 rho_sa_sa, rho_sa_h, rho_h_h)
1112 real (r8),
intent(in) :: sa, ct, p
1113 real (r8),
intent(out),
optional :: rho_sa_sa, rho_sa_h, rho_h_h
1119 real (r8),
intent(in) :: sa, t, p
1126 real (r8),
intent(in) :: sa(:), ct(:), p(:), p_i(:)
1127 real (r8),
intent(out) :: sa_i(:), ct_i(:)
1133 real (r8),
intent(in) :: p, saturation_fraction
1134 real (r8),
intent(in),
optional :: ct, t
1141 real (r8),
intent(in) :: ct, p, saturation_fraction
1148 real (r8),
intent(in) :: ct, p, saturation_fraction
1155 real (r8),
intent(in) :: t, p, saturation_fraction
1162 real (r8),
intent(in) :: t, p, saturation_fraction
1169 real (r8),
intent(in) :: rho, ct, p
1176 real (r8),
intent(in) :: sp, p,
long, lat
1183 real (r8),
intent(in) :: sp,
long, lat
1190 real (r8),
intent(in) :: sstar, p,
long, lat
1197 real (r8),
intent(in) :: sa, p
1204 real (r8),
intent(in) :: p,
long, lat
1209 sa_seaice, t_seaice, sa_freeze, ct_freeze, w_seaice)
1212 real (r8),
intent(in) :: sa, ct, p, sa_seaice, t_seaice
1213 real (r8),
intent(out) :: sa_freeze, ct_freeze, w_seaice
1219 real (r8),
intent(in) :: sa, ct
1226 real (r8),
intent(in) :: sa, ct
1233 real (r8),
intent(in) :: sa, ct
1240 real (r8),
intent(in) :: sa, ct
1247 real (r8),
intent(in) :: sa, ct
1254 real (r8),
intent(in) :: sa, ct, p
1261 real (r8),
intent(in) :: t, p
1268 real (r8),
intent(in) :: sa, t, p
1275 real (r8),
intent(in) :: c, t, p
1282 real (r8),
intent(in) :: sa, p,
long, lat
1289 real (r8),
intent(in) :: sa,
long, lat
1296 real (r8),
intent(in) :: sk
1303 real (r8),
intent(in) :: sr
1310 real (r8),
intent(in) :: sstar, p,
long, lat
1317 real (r8),
intent(in) :: sa, ct, p
1325 real (r8),
intent(in) :: sa, ct, p
1326 real (r8),
intent(out),
optional :: specvol, alpha, beta
1332 real (r8),
intent(in) :: sa, ct, p
1340 real (r8),
intent(in) :: sa, ct, p
1341 integer,
intent(in),
optional :: iflag
1342 real (r8),
intent(out),
optional :: v_sa, v_ct, v_p
1346 p, v_sa, v_h, iflag)
1349 real (r8),
intent(in) :: sa, ct, p
1350 integer,
intent(in),
optional :: iflag
1351 real (r8),
intent(out),
optional :: v_sa, v_h
1357 real (r8),
intent(in) :: t, p
1362 v_sa_ct, v_ct_ct, v_sa_p, v_ct_p, iflag)
1365 real (r8),
intent(in) :: sa, ct, p
1366 integer,
intent(in),
optional :: iflag
1367 real (r8),
intent(out),
optional :: v_sa_sa, v_sa_ct, v_ct_ct, v_sa_p, v_ct_p
1371 p, v_sa_sa, v_sa_h, v_h_h, iflag)
1374 real (r8),
intent(in) :: sa, ct, p
1375 integer,
intent(in),
optional :: iflag
1376 real (r8),
intent(out),
optional :: v_sa_sa, v_sa_h, v_h_h
1382 real (r8),
intent(in) :: p
1389 real (r8),
intent(in) :: sa, t, p
1396 real (r8),
intent(in) :: sa, ct
1403 real (r8),
intent(in) :: sa, ct
1410 real (r8),
intent(in) :: sa, ct
1417 real (r8),
intent(in) :: sp
1424 real (r8),
intent(in) :: sa, p,
long, lat
1431 real (r8),
intent(in) :: sp, p,
long, lat
1438 real (r8),
intent(in) :: sa, t, p
1445 real (r8),
intent(in) :: sa, p, saturation_fraction
1446 logical,
intent(in),
optional :: poly
1453 real (r8),
intent(in) :: sa, p, saturation_fraction
1458 saturation_fraction, tfreezing_sa, tfreezing_p)
1461 real (r8),
intent(in) :: sa, p, saturation_fraction
1462 real (r8),
intent(out),
optional :: tfreezing_sa, tfreezing_p
1466 saturation_fraction, tfreezing_sa, tfreezing_p)
1469 real (r8),
intent(in) :: sa, p, saturation_fraction
1470 real (r8),
intent(out),
optional :: tfreezing_sa, tfreezing_p
1476 real (r8),
intent(in) :: sa, p
1477 real (r8),
intent(in),
optional :: saturation_fraction
1478 logical,
intent(in),
optional :: polynomial
1485 real (r8),
intent(in) :: sa, ct, p
1492 real (r8),
intent(in) :: pt0_ice, p
1499 real (r8),
intent(in) :: sa, ct, p
1506 real (r8),
intent(in) :: sa(:), ct(:), p(:)
1507 real (r8),
intent(out) :: tu(:), rsubrho(:), p_mid(:)
1513 real (r8),
intent(in) :: x(:), z
1514 integer,
intent(in),
optional :: kstart
1521 integer,
intent(in) :: iy(:)
1522 real (r8),
intent(in) :: x(:), x_i(:)
1523 real (r8) :: y_i(
size(x_i))
1529 real (r8),
intent(in) :: x0
1530 real (r8),
intent(in) :: x(:), y(:)
1535 sea_surface_geopotental)
1538 real (r8),
intent(in) :: p, lat
1539 real (r8),
intent(in),
optional :: geo_strf_dyn_height
1540 real (r8),
intent(in),
optional :: sea_surface_geopotental
integer, parameter, public long
************************************************************************GNU Lesser General Public License **This file is part of the GFDL Flexible Modeling System(FMS). ! *! *FMS is free software without even the implied warranty of MERCHANTABILITY or *FITNESS FOR A PARTICULAR PURPOSE See the GNU General Public License *for more details **You should have received a copy of the GNU Lesser General Public *License along with FMS If see< http:! ***********************************************************************subroutine READ_RECORD_CORE_(unit, field, nwords, data, start, axsiz) integer, intent(in) ::unit type(fieldtype), intent(in) ::field integer, intent(in) ::nwords MPP_TYPE_, intent(inout) ::data(nwords) integer, intent(in) ::start(:), axsiz(:) integer(SHORT_KIND) ::i2vals(nwords)!rab used in conjunction with transfer intrinsic to determine size of a variable integer(KIND=1) ::one_byte(8) integer ::word_sz!#ifdef __sgi integer(INT_KIND) ::ivals(nwords) real(FLOAT_KIND) ::rvals(nwords)!#else! integer ::ivals(nwords)! real ::rvals(nwords)!#endif real(DOUBLE_KIND) ::r8vals(nwords) pointer(ptr1, i2vals) pointer(ptr2, ivals) pointer(ptr3, rvals) pointer(ptr4, r8vals) if(mpp_io_stack_size< nwords) call mpp_io_set_stack_size(nwords) call mpp_error(FATAL, 'MPP_READ currently requires use_netCDF option') end subroutine READ_RECORD_CORE_ subroutine READ_RECORD_(unit, field, nwords, data, time_level, domain, position, tile_count, start_in, axsiz_in)!routine that is finally called by all mpp_read routines to perform the read!a non-netCDF record contains:! field ID! a set of 4 coordinates(is:ie, js:je) giving the data subdomain! a timelevel and a timestamp(=NULLTIME if field is static)! 3D real data(stored as 1D)!if you are using direct access I/O, the RECL argument to OPEN must be large enough for the above!in a global direct access file, record position on PE is given by %record.!Treatment of timestamp:! We assume that static fields have been passed without a timestamp.! Here that is converted into a timestamp of NULLTIME.! For non-netCDF fields, field is treated no differently, but is written! with a timestamp of NULLTIME. There is no check in the code to prevent! the user from repeatedly writing a static field. integer, intent(in) ::unit, nwords type(fieldtype), intent(in) ::field MPP_TYPE_, intent(inout) ::data(nwords) integer, intent(in), optional ::time_level type(domain2D), intent(in), optional ::domain integer, intent(in), optional ::position, tile_count integer, intent(in), optional ::start_in(:), axsiz_in(:) integer, dimension(size(field%axes(:))) ::start, axsiz integer ::tlevel !, subdomain(4) integer ::i, error, is, ie, js, je, isg, ieg, jsg, jeg type(domain2d), pointer ::io_domain=> tlevel if(PRESENT(start_in) .AND. PRESENT(axsiz_in)) then if(size(start(! the data domain and compute domain must refer to the subdomain being passed ! In this ! since that attempts to gather all data on PE size(field%axes(:)) axsiz(i)