123 public ::
msi,
msr,
isnotmsi,
ismsi,
isnotmsr,
ismsr,
isanynotmsi,
isanymsi,
isanynotmsr,
isanymsr,
isallnotmsi,
isallmsi,
isallnotmsr,
isallmsr 136 integer,
intent(out),
optional :: i
151 integer,
intent(out) :: i(:)
166 integer,
intent(out) :: i(:,:)
181 integer,
intent(out) :: i(:,:,:)
196 integer,
intent(out) :: i(:,:,:,:)
211 integer,
intent(out) :: i(:,:,:,:,:)
226 integer,
intent(out) :: i(:,:,:,:,:,:)
241 real(kind_real),
intent(out) :: r
256 real(kind_real),
intent(out) :: r(:)
271 real(kind_real),
intent(out) :: r(:,:)
286 real(kind_real),
intent(out) :: r(:,:,:)
301 real(kind_real),
intent(out) :: r(:,:,:,:)
316 real(kind_real),
intent(out) :: r(:,:,:,:,:)
331 real(kind_real),
intent(out) :: r(:,:,:,:,:,:)
346 integer,
intent(in) :: i
364 integer,
intent(in) :: i(:)
386 integer,
intent(in) :: i(:,:)
408 integer,
intent(in) :: i(:,:,:)
430 integer,
intent(in) :: i(:,:,:,:)
433 logical ::
isnotmsi_4d(
max(
size(i,1),1),
max(
size(i,2),1),
max(
size(i,3),1),
max(
size(i,4),1))
452 integer,
intent(in) :: i(:,:,:,:,:)
455 logical ::
isnotmsi_5d(
max(
size(i,1),1),
max(
size(i,2),1),
max(
size(i,3),1),
max(
size(i,4),1),
max(
size(i,5),1))
474 integer,
intent(in) :: i
492 integer,
intent(in) :: i(:)
510 integer,
intent(in) :: i(:,:)
528 integer,
intent(in) :: i(:,:,:)
546 integer,
intent(in) :: i(:,:,:,:)
549 logical ::
ismsi_4d(
max(
size(i,1),1),
max(
size(i,2),1),
max(
size(i,3),1),
max(
size(i,4),1))
564 integer,
intent(in) :: i(:,:,:,:,:)
567 logical ::
ismsi_5d(
max(
size(i,1),1),
max(
size(i,2),1),
max(
size(i,3),1),
max(
size(i,4),1),
max(
size(i,5),1))
582 real(kind_real),
intent(in) :: r
600 real(kind_real),
intent(in) :: r(:)
622 real(kind_real),
intent(in) :: r(:,:)
644 real(kind_real),
intent(in) :: r(:,:,:)
666 real(kind_real),
intent(in) :: r(:,:,:,:)
669 logical ::
isnotmsr_4d(
max(
size(r,1),1),
max(
size(r,2),1),
max(
size(r,3),1),
max(
size(r,4),1))
688 real(kind_real),
intent(in) :: r(:,:,:,:,:)
691 logical ::
isnotmsr_5d(
max(
size(r,1),1),
max(
size(r,2),1),
max(
size(r,3),1),
max(
size(r,4),1),
max(
size(r,5),1))
710 real(kind_real),
intent(in) :: r
728 real(kind_real),
intent(in) :: r(:)
746 real(kind_real),
intent(in) :: r(:,:)
764 real(kind_real),
intent(in) :: r(:,:,:)
782 real(kind_real),
intent(in) :: r(:,:,:,:)
785 logical ::
ismsr_4d(
max(
size(r,1),1),
max(
size(r,2),1),
max(
size(r,3),1),
max(
size(r,4),1))
800 real(kind_real),
intent(in) :: r(:,:,:,:,:)
803 logical ::
ismsr_5d(
max(
size(r,1),1),
max(
size(r,2),1),
max(
size(r,3),1),
max(
size(r,4),1),
max(
size(r,5),1))
818 integer,
intent(in) :: i(:)
833 integer,
intent(in) :: i(:,:)
848 integer,
intent(in) :: i(:,:,:)
863 integer,
intent(in) :: i(:,:,:,:)
878 integer,
intent(in) :: i(:,:,:,:,:)
893 integer,
intent(in) :: i(:)
908 integer,
intent(in) :: i(:,:)
923 integer,
intent(in) :: i(:,:,:)
938 integer,
intent(in) :: i(:,:,:,:)
953 integer,
intent(in) :: i(:,:,:,:,:)
968 real(kind_real),
intent(in) :: r(:)
983 real(kind_real),
intent(in) :: r(:,:)
998 real(kind_real),
intent(in) :: r(:,:,:)
1013 real(kind_real),
intent(in) :: r(:,:,:,:)
1028 real(kind_real),
intent(in) :: r(:,:,:,:,:)
1043 real(kind_real),
intent(in) :: r(:)
1058 real(kind_real),
intent(in) :: r(:,:)
1073 real(kind_real),
intent(in) :: r(:,:,:)
1088 real(kind_real),
intent(in) :: r(:,:,:,:)
1103 real(kind_real),
intent(in) :: r(:,:,:,:,:)
1118 integer,
intent(in) :: i(:)
1133 integer,
intent(in) :: i(:,:)
1148 integer,
intent(in) :: i(:,:,:)
1163 integer,
intent(in) :: i(:,:,:,:)
1178 integer,
intent(in) :: i(:,:,:,:,:)
1193 integer,
intent(in) :: i(:)
1208 integer,
intent(in) :: i(:,:)
1223 integer,
intent(in) :: i(:,:,:)
1238 integer,
intent(in) :: i(:,:,:,:)
1253 integer,
intent(in) :: i(:,:,:,:,:)
1268 real(kind_real),
intent(in) :: r(:)
1283 real(kind_real),
intent(in) :: r(:,:)
1298 real(kind_real),
intent(in) :: r(:,:,:)
1313 real(kind_real),
intent(in) :: r(:,:,:,:)
1328 real(kind_real),
intent(in) :: r(:,:,:,:,:)
1343 real(kind_real),
intent(in) :: r(:)
1358 real(kind_real),
intent(in) :: r(:,:)
1373 real(kind_real),
intent(in) :: r(:,:,:)
1388 real(kind_real),
intent(in) :: r(:,:,:,:)
1403 real(kind_real),
intent(in) :: r(:,:,:,:,:)
************************************************************************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)
integer, parameter, public kind_real