23 integer(kind=ip_i4_p) istatus(mpi_status_size)
27 #ifndef __NO_4BYTE_REALS 39 #ifndef __NO_4BYTE_REALS 52 #ifndef __NO_4BYTE_REALS 57 fld2, fld3, fld4, fld5, write_restart)
61 integer(kind=ip_i4_p) ,
intent(in) :: var_id
62 integer(kind=ip_i4_p) ,
intent(in) :: kstep
63 real(kind=ip_single_p) :: fld1(:)
64 integer(kind=ip_i4_p) ,
intent(out):: kinfo
65 real(kind=ip_single_p),
optional :: fld2(:)
66 real(kind=ip_single_p),
optional :: fld3(:)
67 real(kind=ip_single_p),
optional :: fld4(:)
68 real(kind=ip_single_p),
optional :: fld5(:)
69 logical ,
optional :: write_restart
72 character(len=*),
parameter :: subname =
'(oasis_put_r14)' 88 if (
present(write_restart))
then 94 if (
present(fld5) .and.
present(fld4) .and.
present(fld3) .and.
present(fld2))
then 96 dble(fld3),dble(fld4),dble(fld5),write_restart=lwrst)
97 elseif (.not.
present(fld5) .and.
present(fld4) .and.
present(fld3) .and.
present(fld2))
then 99 dble(fld3),dble(fld4),write_restart=lwrst)
100 elseif (.not.
present(fld5) .and. .not.
present(fld4) .and.
present(fld3) .and.
present(fld2))
then 102 dble(fld3),write_restart=lwrst)
103 elseif (.not.
present(fld5) .and. .not.
present(fld4) .and. .not.
present(fld3) .and.
present(fld2))
then 106 elseif (.not.
present(fld5) .and. .not.
present(fld4) .and. .not.
present(fld3) .and. .not.
present(fld2))
then 109 WRITE(
nulprt,*) subname,
estr,
' Wrong field array argument list in oasis_put' 123 fld2, fld3, fld4, fld5, write_restart)
127 integer(kind=ip_i4_p) ,
intent(in) :: var_id
128 integer(kind=ip_i4_p) ,
intent(in) :: kstep
129 real(kind=ip_double_p) :: fld1(:)
130 integer(kind=ip_i4_p) ,
intent(out):: kinfo
131 real(kind=ip_double_p),
optional :: fld2(:)
132 real(kind=ip_double_p),
optional :: fld3(:)
133 real(kind=ip_double_p),
optional :: fld4(:)
134 real(kind=ip_double_p),
optional :: fld5(:)
135 logical ,
optional :: write_restart
138 character(len=*),
parameter :: subname =
'(oasis_put_r18)' 154 if (
present(write_restart))
then 155 lwrst = write_restart
160 if (
present(fld5) .and.
present(fld4) .and.
present(fld3) .and.
present(fld2))
then 162 fld3,fld4,fld5,write_restart=lwrst)
163 elseif (.not.
present(fld5) .and.
present(fld4) .and.
present(fld3) .and.
present(fld2))
then 165 fld3,fld4,write_restart=lwrst)
166 elseif (.not.
present(fld5) .and. .not.
present(fld4) .and.
present(fld3) .and.
present(fld2))
then 168 fld3,write_restart=lwrst)
169 elseif (.not.
present(fld5) .and. .not.
present(fld4) .and. .not.
present(fld3) .and.
present(fld2))
then 172 elseif (.not.
present(fld5) .and. .not.
present(fld4) .and. .not.
present(fld3) .and. .not.
present(fld2))
then 175 WRITE(
nulprt,*) subname,
estr,
' Wrong field array argument list in oasis_put' 184 #ifndef __NO_4BYTE_REALS 189 fld2, fld3, fld4, fld5, write_restart)
193 integer(kind=ip_i4_p) ,
intent(in) :: var_id
194 integer(kind=ip_i4_p) ,
intent(in) :: kstep
195 real(kind=ip_single_p) :: fld1(:,:)
196 integer(kind=ip_i4_p) ,
intent(out):: kinfo
197 real(kind=ip_single_p),
optional :: fld2(:,:)
198 real(kind=ip_single_p),
optional :: fld3(:,:)
199 real(kind=ip_single_p),
optional :: fld4(:,:)
200 real(kind=ip_single_p),
optional :: fld5(:,:)
201 logical ,
optional :: write_restart
204 integer(kind=ip_i4_p) :: n, size_fld1
205 character(len=*),
parameter :: subname =
'(oasis_put_r24)' 215 if (
present(write_restart))
then 216 lwrst = write_restart
224 if (
size(fld1,dim=2) /=
prism_var(var_id)%num)
then 227 write(
nulprt,*) subname,
estr,
'passing in field with incorrect 2nd dim size = ',
size(fld1,dim=2)
231 size_fld1 =
size(fld1,dim=2)
232 if (
present(fld2))
then 233 if (
size(fld2,dim=2) /= size_fld1)
then 234 write(
nulprt,*) subname,
estr,
'fld2 size different than fld1 size ',size_fld1,
size(fld2,dim=2)
238 if (
present(fld3))
then 239 if (
size(fld3,dim=2) /= size_fld1)
then 240 write(
nulprt,*) subname,
estr,
'fld3 size different than fld1 size ',size_fld1,
size(fld3,dim=2)
244 if (
present(fld4))
then 245 if (
size(fld4,dim=2) /= size_fld1)
then 246 write(
nulprt,*) subname,
estr,
'fld4 size different than fld1 size ',size_fld1,
size(fld4,dim=2)
250 if (
present(fld5))
then 251 if (
size(fld5,dim=2) /= size_fld1)
then 252 write(
nulprt,*) subname,
estr,
'fld5 size different than fld1 size ',size_fld1,
size(fld5,dim=2)
258 if (
present(fld5) .and.
present(fld4) .and.
present(fld3) .and.
present(fld2))
then 260 dble(fld3(:,n)),dble(fld4(:,n)),dble(fld5(:,n)),write_restart=lwrst,varnum=n)
261 elseif (.not.
present(fld5) .and.
present(fld4) .and.
present(fld3) .and.
present(fld2))
then 263 dble(fld3(:,n)),dble(fld4(:,n)),write_restart=lwrst,varnum=n)
264 elseif (.not.
present(fld5) .and. .not.
present(fld4) .and.
present(fld3) .and.
present(fld2))
then 266 dble(fld3(:,n)),write_restart=lwrst,varnum=n)
267 elseif (.not.
present(fld5) .and. .not.
present(fld4) .and. .not.
present(fld3) .and.
present(fld2))
then 269 write_restart=lwrst,varnum=n)
270 elseif (.not.
present(fld5) .and. .not.
present(fld4) .and. .not.
present(fld3) .and. .not.
present(fld2))
then 271 CALL oasis_put_worker(var_id,kstep,dble(fld1(:,n)),kinfo,write_restart=lwrst,varnum=n)
273 WRITE(
nulprt,*) subname,
estr,
' Wrong field array argument list in oasis_put' 281 if (
present(fld5) .and.
present(fld4) .and.
present(fld3) .and.
present(fld2))
then 282 CALL oasis_put_worker(var_id,kstep,dble(pack(fld1,mask=.true.)),kinfo,dble(pack(fld2,mask=.true.)), &
283 dble(pack(fld3,mask=.true.)),dble(pack(fld4,mask=.true.)),dble(pack(fld5,mask=.true.)),write_restart=lwrst)
284 elseif (.not.
present(fld5) .and.
present(fld4) .and.
present(fld3) .and.
present(fld2))
then 285 CALL oasis_put_worker(var_id,kstep,dble(pack(fld1,mask=.true.)),kinfo,dble(pack(fld2,mask=.true.)), &
286 dble(pack(fld3,mask=.true.)),dble(pack(fld4,mask=.true.)),write_restart=lwrst)
287 elseif (.not.
present(fld5) .and. .not.
present(fld4) .and.
present(fld3) .and.
present(fld2))
then 288 CALL oasis_put_worker(var_id,kstep,dble(pack(fld1,mask=.true.)),kinfo,dble(pack(fld2,mask=.true.)), &
289 dble(pack(fld3,mask=.true.)),write_restart=lwrst)
290 elseif (.not.
present(fld5) .and. .not.
present(fld4) .and. .not.
present(fld3) .and.
present(fld2))
then 291 CALL oasis_put_worker(var_id,kstep,dble(pack(fld1,mask=.true.)),kinfo,dble(pack(fld2,mask=.true.)), &
293 elseif (.not.
present(fld5) .and. .not.
present(fld4) .and. .not.
present(fld3) .and. .not.
present(fld2))
then 294 CALL oasis_put_worker(var_id,kstep,dble(pack(fld1,mask=.true.)),kinfo,write_restart=lwrst)
296 WRITE(
nulprt,*) subname,
estr,
' Wrong field array argument list in oasis_put' 308 #ifndef __NO_4BYTE_REALS 313 fld2, fld3, fld4, fld5, write_restart)
317 integer(kind=ip_i4_p) ,
intent(in) :: var_id
318 integer(kind=ip_i4_p) ,
intent(in) :: kstep
319 real(kind=ip_single_p) :: fld1(:,:,:)
320 integer(kind=ip_i4_p) ,
intent(out):: kinfo
321 real(kind=ip_single_p),
optional :: fld2(:,:,:)
322 real(kind=ip_single_p),
optional :: fld3(:,:,:)
323 real(kind=ip_single_p),
optional :: fld4(:,:,:)
324 real(kind=ip_single_p),
optional :: fld5(:,:,:)
325 logical ,
optional :: write_restart
328 integer(kind=ip_i4_p) :: n, size_fld1
329 character(len=*),
parameter :: subname =
'(oasis_put_r34)' 339 if (
present(write_restart))
then 340 lwrst = write_restart
348 if (
size(fld1,dim=3) /=
prism_var(var_id)%num)
then 351 write(
nulprt,*) subname,
estr,
'passing in field with incorrect 3rd dim size = ',
size(fld1,dim=3)
355 size_fld1 =
size(fld1,dim=3)
356 if (
present(fld2))
then 357 if (
size(fld2,dim=3) /= size_fld1)
then 358 write(
nulprt,*) subname,
estr,
'fld2 size different than fld1 size ',size_fld1,
size(fld2,dim=3)
362 if (
present(fld3))
then 363 if (
size(fld3,dim=3) /= size_fld1)
then 364 write(
nulprt,*) subname,
estr,
'fld3 size different than fld1 size ',size_fld1,
size(fld3,dim=3)
368 if (
present(fld4))
then 369 if (
size(fld4,dim=3) /= size_fld1)
then 370 write(
nulprt,*) subname,
estr,
'fld4 size different than fld1 size ',size_fld1,
size(fld4,dim=3)
374 if (
present(fld5))
then 375 if (
size(fld5,dim=3) /= size_fld1)
then 376 write(
nulprt,*) subname,
estr,
'fld5 size different than fld1 size ',size_fld1,
size(fld5,dim=3)
382 if (
present(fld5) .and.
present(fld4) .and.
present(fld3) .and.
present(fld2))
then 383 CALL oasis_put_worker(var_id,kstep,dble(pack(fld1(:,:,n),mask=.true.)),kinfo,dble(pack(fld2(:,:,n),mask=.true.)), &
384 dble(pack(fld3(:,:,n),mask=.true.)),dble(pack(fld4(:,:,n),mask=.true.)),dble(pack(fld5(:,:,n),mask=.true.)), &
385 write_restart=lwrst,varnum=n)
386 elseif (.not.
present(fld5) .and.
present(fld4) .and.
present(fld3) .and.
present(fld2))
then 387 CALL oasis_put_worker(var_id,kstep,dble(pack(fld1(:,:,n),mask=.true.)),kinfo,dble(pack(fld2(:,:,n),mask=.true.)), &
388 dble(pack(fld3(:,:,n),mask=.true.)),dble(pack(fld4(:,:,n),mask=.true.)),write_restart=lwrst,varnum=n)
389 elseif (.not.
present(fld5) .and. .not.
present(fld4) .and.
present(fld3) .and.
present(fld2))
then 390 CALL oasis_put_worker(var_id,kstep,dble(pack(fld1(:,:,n),mask=.true.)),kinfo,dble(pack(fld2(:,:,n),mask=.true.)), &
391 dble(pack(fld3(:,:,n),mask=.true.)),write_restart=lwrst,varnum=n)
392 elseif (.not.
present(fld5) .and. .not.
present(fld4) .and. .not.
present(fld3) .and.
present(fld2))
then 393 CALL oasis_put_worker(var_id,kstep,dble(pack(fld1(:,:,n),mask=.true.)),kinfo,dble(pack(fld2(:,:,n),mask=.true.)), &
394 write_restart=lwrst,varnum=n)
395 elseif (.not.
present(fld5) .and. .not.
present(fld4) .and. .not.
present(fld3) .and. .not.
present(fld2))
then 396 CALL oasis_put_worker(var_id,kstep,dble(pack(fld1(:,:,n),mask=.true.)),kinfo,write_restart=lwrst,varnum=n)
398 WRITE(
nulprt,*) subname,
estr,
' Wrong field array argument list in oasis_put' 404 WRITE(
nulprt,*) subname,
estr,
' Dimension sizes incorrect' 419 fld2, fld3, fld4, fld5, write_restart)
423 integer(kind=ip_i4_p) ,
intent(in) :: var_id
424 integer(kind=ip_i4_p) ,
intent(in) :: kstep
425 real(kind=ip_double_p) :: fld1(:,:)
426 integer(kind=ip_i4_p) ,
intent(out):: kinfo
427 real(kind=ip_double_p),
optional :: fld2(:,:)
428 real(kind=ip_double_p),
optional :: fld3(:,:)
429 real(kind=ip_double_p),
optional :: fld4(:,:)
430 real(kind=ip_double_p),
optional :: fld5(:,:)
431 logical ,
optional :: write_restart
434 integer(kind=ip_i4_p) :: n, size_fld1
435 character(len=*),
parameter :: subname =
'(oasis_put_r28)' 445 if (
present(write_restart))
then 446 lwrst = write_restart
454 if (
size(fld1,dim=2) /=
prism_var(var_id)%num)
then 457 write(
nulprt,*) subname,
estr,
'passing in field with incorrect 2nd dim size = ',
size(fld1,dim=2)
461 size_fld1 =
size(fld1,dim=2)
462 if (
present(fld2))
then 463 if (
size(fld2,dim=2) /= size_fld1)
then 464 write(
nulprt,*) subname,
estr,
'fld2 size different than fld1 size ',size_fld1,
size(fld2,dim=2)
468 if (
present(fld3))
then 469 if (
size(fld3,dim=2) /= size_fld1)
then 470 write(
nulprt,*) subname,
estr,
'fld3 size different than fld1 size ',size_fld1,
size(fld3,dim=2)
474 if (
present(fld4))
then 475 if (
size(fld4,dim=2) /= size_fld1)
then 476 write(
nulprt,*) subname,
estr,
'fld4 size different than fld1 size ',size_fld1,
size(fld4,dim=2)
480 if (
present(fld5))
then 481 if (
size(fld5,dim=2) /= size_fld1)
then 482 write(
nulprt,*) subname,
estr,
'fld5 size different than fld1 size ',size_fld1,
size(fld5,dim=2)
488 if (
present(fld5) .and.
present(fld4) .and.
present(fld3) .and.
present(fld2))
then 490 (fld3(:,n)),(fld4(:,n)),(fld5(:,n)),write_restart=lwrst,varnum=n)
491 elseif (.not.
present(fld5) .and.
present(fld4) .and.
present(fld3) .and.
present(fld2))
then 493 (fld3(:,n)),(fld4(:,n)),write_restart=lwrst,varnum=n)
494 elseif (.not.
present(fld5) .and. .not.
present(fld4) .and.
present(fld3) .and.
present(fld2))
then 496 (fld3(:,n)),write_restart=lwrst,varnum=n)
497 elseif (.not.
present(fld5) .and. .not.
present(fld4) .and. .not.
present(fld3) .and.
present(fld2))
then 499 write_restart=lwrst,varnum=n)
500 elseif (.not.
present(fld5) .and. .not.
present(fld4) .and. .not.
present(fld3) .and. .not.
present(fld2))
then 501 CALL oasis_put_worker(var_id,kstep,(fld1(:,n)),kinfo,write_restart=lwrst,varnum=n)
503 WRITE(
nulprt,*) subname,
estr,
' Wrong field array argument list in oasis_put' 511 if (
present(fld5) .and.
present(fld4) .and.
present(fld3) .and.
present(fld2))
then 512 CALL oasis_put_worker(var_id,kstep,pack(fld1,mask=.true.),kinfo,pack(fld2,mask=.true.), &
513 pack(fld3,mask=.true.),pack(fld4,mask=.true.),pack(fld5,mask=.true.),write_restart=lwrst)
514 elseif (.not.
present(fld5) .and.
present(fld4) .and.
present(fld3) .and.
present(fld2))
then 515 CALL oasis_put_worker(var_id,kstep,pack(fld1,mask=.true.),kinfo,pack(fld2,mask=.true.), &
516 pack(fld3,mask=.true.),pack(fld4,mask=.true.),write_restart=lwrst)
517 elseif (.not.
present(fld5) .and. .not.
present(fld4) .and.
present(fld3) .and.
present(fld2))
then 518 CALL oasis_put_worker(var_id,kstep,pack(fld1,mask=.true.),kinfo,pack(fld2,mask=.true.), &
519 pack(fld3,mask=.true.),write_restart=lwrst)
520 elseif (.not.
present(fld5) .and. .not.
present(fld4) .and. .not.
present(fld3) .and.
present(fld2))
then 521 CALL oasis_put_worker(var_id,kstep,pack(fld1,mask=.true.),kinfo,pack(fld2,mask=.true.), &
523 elseif (.not.
present(fld5) .and. .not.
present(fld4) .and. .not.
present(fld3) .and. .not.
present(fld2))
then 524 CALL oasis_put_worker(var_id,kstep,pack(fld1,mask=.true.),kinfo,write_restart=lwrst)
526 WRITE(
nulprt,*) subname,
estr,
' Wrong field array argument list in oasis_put' 542 fld2, fld3, fld4, fld5, write_restart)
546 integer(kind=ip_i4_p) ,
intent(in) :: var_id
547 integer(kind=ip_i4_p) ,
intent(in) :: kstep
548 real(kind=ip_double_p) :: fld1(:,:,:)
549 integer(kind=ip_i4_p) ,
intent(out):: kinfo
550 real(kind=ip_double_p),
optional :: fld2(:,:,:)
551 real(kind=ip_double_p),
optional :: fld3(:,:,:)
552 real(kind=ip_double_p),
optional :: fld4(:,:,:)
553 real(kind=ip_double_p),
optional :: fld5(:,:,:)
554 logical ,
optional :: write_restart
557 integer(kind=ip_i4_p) :: n, size_fld1
558 character(len=*),
parameter :: subname =
'(oasis_put_r38)' 568 if (
present(write_restart))
then 569 lwrst = write_restart
577 if (
size(fld1,dim=3) /=
prism_var(var_id)%num)
then 580 write(
nulprt,*) subname,
estr,
'passing in field with incorrect 3rd dim size = ',
size(fld1,dim=3)
584 size_fld1 =
size(fld1,dim=3)
585 if (
present(fld2))
then 586 if (
size(fld2,dim=3) /= size_fld1)
then 587 write(
nulprt,*) subname,
estr,
'fld2 size different than fld1 size ',size_fld1,
size(fld2,dim=3)
591 if (
present(fld3))
then 592 if (
size(fld3,dim=3) /= size_fld1)
then 593 write(
nulprt,*) subname,
estr,
'fld3 size different than fld1 size ',size_fld1,
size(fld3,dim=3)
597 if (
present(fld4))
then 598 if (
size(fld4,dim=3) /= size_fld1)
then 599 write(
nulprt,*) subname,
estr,
'fld4 size different than fld1 size ',size_fld1,
size(fld4,dim=3)
603 if (
present(fld5))
then 604 if (
size(fld5,dim=3) /= size_fld1)
then 605 write(
nulprt,*) subname,
estr,
'fld5 size different than fld1 size ',size_fld1,
size(fld5,dim=3)
611 if (
present(fld5) .and.
present(fld4) .and.
present(fld3) .and.
present(fld2))
then 612 CALL oasis_put_worker(var_id,kstep,pack(fld1(:,:,n),mask=.true.),kinfo,pack(fld2(:,:,n),mask=.true.), &
613 pack(fld3(:,:,n),mask=.true.),pack(fld4(:,:,n),mask=.true.),pack(fld5(:,:,n),mask=.true.), &
614 write_restart=lwrst,varnum=n)
615 elseif (.not.
present(fld5) .and.
present(fld4) .and.
present(fld3) .and.
present(fld2))
then 616 CALL oasis_put_worker(var_id,kstep,pack(fld1(:,:,n),mask=.true.),kinfo,pack(fld2(:,:,n),mask=.true.), &
617 pack(fld3(:,:,n),mask=.true.),pack(fld4(:,:,n),mask=.true.),write_restart=lwrst,varnum=n)
618 elseif (.not.
present(fld5) .and. .not.
present(fld4) .and.
present(fld3) .and.
present(fld2))
then 619 CALL oasis_put_worker(var_id,kstep,pack(fld1(:,:,n),mask=.true.),kinfo,pack(fld2(:,:,n),mask=.true.), &
620 pack(fld3(:,:,n),mask=.true.),write_restart=lwrst,varnum=n)
621 elseif (.not.
present(fld5) .and. .not.
present(fld4) .and. .not.
present(fld3) .and.
present(fld2))
then 622 CALL oasis_put_worker(var_id,kstep,pack(fld1(:,:,n),mask=.true.),kinfo,pack(fld2(:,:,n),mask=.true.), &
623 write_restart=lwrst,varnum=n)
624 elseif (.not.
present(fld5) .and. .not.
present(fld4) .and. .not.
present(fld3) .and. .not.
present(fld2))
then 625 CALL oasis_put_worker(var_id,kstep,pack(fld1(:,:,n),mask=.true.),kinfo,write_restart=lwrst,varnum=n)
627 WRITE(
nulprt,*) subname,
estr,
' Wrong field array argument list in oasis_put' 633 WRITE(
nulprt,*) subname,
estr,
' Dimension sizes incorrect' 647 fld2, fld3, fld4, fld5, write_restart, varnum)
651 integer(kind=ip_i4_p) ,
intent(in) :: var_id
652 integer(kind=ip_i4_p) ,
intent(in) :: kstep
653 real(kind=ip_double_p) :: fld1(:)
654 integer(kind=ip_i4_p) ,
intent(out):: kinfo
655 real(kind=ip_double_p),
optional :: fld2(:)
656 real(kind=ip_double_p),
optional :: fld3(:)
657 real(kind=ip_double_p),
optional :: fld4(:)
658 real(kind=ip_double_p),
optional :: fld5(:)
659 logical ,
optional :: write_restart
660 integer(kind=ip_i4_p) ,
optional :: varnum
662 integer(kind=ip_i4_p) :: nfld,ncpl
663 integer(kind=ip_i4_p) :: ns,nsx
664 integer(kind=ip_i4_p) :: n
665 integer(kind=ip_i4_p) :: lvarnum
666 logical :: a2on, a3on, a4on, a5on
668 character(len=*),
parameter :: subname =
'(oasis_put_worker)' 679 write(
nulprt,*) subname,
estr,
'called before oasis_enddef' 684 write(
nulprt,*) subname,
estr,
'oasis_put is called for a variable not in namcouple' 691 write(
nulprt,*) subname,
estr,
'oasis_put is called for a variable not defined' 697 if (
present(write_restart))
then 698 lwrst = write_restart
703 if (
present(varnum))
then 719 ns =
size(fld1,dim=1)
726 if (
present(fld2))
then 728 nsx =
size(fld2,dim=1)
730 write(
nulprt,*) subname,
estr,
'fld2 size does not match fld ', &
736 if (
present(fld3))
then 738 nsx =
size(fld3,dim=1)
740 write(
nulprt,*) subname,
estr,
'fld3 size does not match fld ', &
746 if (
present(fld4))
then 748 nsx =
size(fld4,dim=1)
750 write(
nulprt,*) subname,
estr,
'fld4 size does not match fld ', &
756 if (
present(fld5))
then 758 nsx =
size(fld5,dim=1)
760 write(
nulprt,*) subname,
estr,
'fld5 size does not match fld ', &
766 IF ((.NOT. a2on) .AND. (.NOT. a3on) .AND. (.NOT. a4on) .AND. (.NOT. a5on))
THEN 768 array1din=fld1,readrest=.false.,writrest=lwrst,varnum=lvarnum)
769 ELSE IF (a2on .AND. (.NOT. a3on) .AND. (.NOT. a4on) .AND. (.NOT. a5on))
THEN 771 array1din=fld1,readrest=.false.,&
772 a2on=a2on,array2=fld2,writrest=lwrst,varnum=lvarnum)
773 ELSE IF (a2on .AND. a3on .AND. (.NOT. a4on) .AND. (.NOT. a5on))
THEN 775 array1din= fld1,readrest=.false.,&
776 a2on=a2on,array2=fld2,&
777 a3on=a3on,array3=fld3,writrest=lwrst,varnum=lvarnum)
778 ELSE IF (a2on .AND. a3on .AND. a4on .AND. (.NOT. a5on))
THEN 780 array1din=fld1,readrest=.false.,&
781 a2on=a2on,array2=fld2,&
782 a3on=a3on,array3=fld3,&
783 a4on=a4on,array4=fld4,writrest=lwrst,varnum=lvarnum)
784 ELSE IF (a2on .AND. a3on .AND. a4on .AND. a5on)
THEN 786 array1din=fld1,readrest=.false.,&
787 a2on=a2on,array2=fld2,&
788 a3on=a3on,array3=fld3,&
789 a4on=a4on,array4=fld4,&
790 a5on=a5on,array5=fld5,writrest=lwrst,varnum=lvarnum)
792 WRITE(
nulprt,*) subname,
estr,
' Wrong field array argument list in oasis_put' 802 #ifndef __NO_4BYTE_REALS 810 integer(kind=ip_i4_p) ,
intent(in) :: var_id
811 integer(kind=ip_i4_p) ,
intent(in) :: kstep
812 real(kind=ip_single_p),
intent(inout) :: fld(:)
813 integer(kind=ip_i4_p) ,
intent(out):: kinfo
815 integer(kind=ip_i4_p) :: ns
816 real(kind=ip_r8_p),
allocatable :: array(:)
817 character(len=*),
parameter :: subname =
'(oasis_get_r14)' 839 fld(:) =
REAL(array(:))
857 integer(kind=ip_i4_p) ,
intent(in) :: var_id
858 integer(kind=ip_i4_p) ,
intent(in) :: kstep
859 real(kind=ip_r8_p) ,
intent(inout) :: fld(:)
860 integer(kind=ip_i4_p) ,
intent(out):: kinfo
862 character(len=*),
parameter :: subname =
'(oasis_get_r18)' 885 #ifndef __NO_4BYTE_REALS 893 integer(kind=ip_i4_p) ,
intent(in) :: var_id
894 integer(kind=ip_i4_p) ,
intent(in) :: kstep
895 real(kind=ip_single_p),
intent(inout) :: fld(:,:)
896 integer(kind=ip_i4_p) ,
intent(out):: kinfo
898 integer(kind=ip_i4_p) :: ns,nis,njs,n
899 REAL(kind=ip_r8_p),
ALLOCATABLE :: array(:)
900 character(len=*),
parameter :: subname =
'(oasis_get_r24)' 912 if (
size(fld,dim=2) /=
prism_var(var_id)%num)
then 915 write(
nulprt,*) subname,
estr,
'passing in field with incorrect 2nd dim size = ',
size(fld,dim=2)
919 nis =
size(fld,dim=1)
926 fld(:,n) =
REAL(array(:))
935 nis =
size(fld,dim=1)
936 njs =
size(fld,dim=2)
944 fld(:,:) =
REAL(RESHAPE(array(:),SHAPE(fld)))
958 #ifndef __NO_4BYTE_REALS 966 integer(kind=ip_i4_p) ,
intent(in) :: var_id
967 integer(kind=ip_i4_p) ,
intent(in) :: kstep
968 real(kind=ip_single_p),
intent(inout) :: fld(:,:,:)
969 integer(kind=ip_i4_p) ,
intent(out):: kinfo
971 integer(kind=ip_i4_p) :: ns,nis,njs,n
972 REAL(kind=ip_r8_p),
ALLOCATABLE :: array(:)
973 character(len=*),
parameter :: subname =
'(oasis_get_r34)' 985 if (
size(fld,dim=3) /=
prism_var(var_id)%num)
then 988 write(
nulprt,*) subname,
estr,
'passing in field with incorrect 3rd dim size = ',
size(fld,dim=3)
992 nis =
size(fld,dim=1)
993 njs =
size(fld,dim=2)
1002 fld(:,:,n) =
REAL(RESHAPE(array(:),SHAPE(fld(:,:,n))))
1010 WRITE(
nulprt,*) subname,
estr,
' Dimension sizes incorrect' 1028 integer(kind=ip_i4_p) ,
intent(in) :: var_id
1029 integer(kind=ip_i4_p) ,
intent(in) :: kstep
1030 real(kind=ip_double_p),
intent(inout) :: fld(:,:)
1031 integer(kind=ip_i4_p) ,
intent(out):: kinfo
1033 integer(kind=ip_i4_p) :: ns,nis,njs,n
1034 REAL(kind=ip_r8_p),
ALLOCATABLE :: array(:)
1035 character(len=*),
parameter :: subname =
'(oasis_get_r28)' 1047 if (
size(fld,dim=2) /=
prism_var(var_id)%num)
then 1050 write(
nulprt,*) subname,
estr,
'passing in field with incorrect 2nd dim size = ',
size(fld,dim=2)
1054 nis =
size(fld,dim=1)
1055 ALLOCATE(array(nis))
1070 nis =
size(fld,dim=1)
1071 njs =
size(fld,dim=2)
1079 fld(:,:) = reshape(array(:),shape(fld))
1098 integer(kind=ip_i4_p) ,
intent(in) :: var_id
1099 integer(kind=ip_i4_p) ,
intent(in) :: kstep
1100 real(kind=ip_double_p),
intent(inout) :: fld(:,:,:)
1101 integer(kind=ip_i4_p) ,
intent(out):: kinfo
1103 integer(kind=ip_i4_p) :: ns,nis,njs,n
1104 REAL(kind=ip_r8_p),
ALLOCATABLE :: array(:)
1105 character(len=*),
parameter :: subname =
'(oasis_get_r38)' 1117 if (
size(fld,dim=3) /=
prism_var(var_id)%num)
then 1120 write(
nulprt,*) subname,
estr,
'passing in field with incorrect 3rd dim size = ',
size(fld,dim=3)
1124 nis =
size(fld,dim=1)
1125 njs =
size(fld,dim=2)
1134 fld(:,:,n) = reshape(array(:),shape(fld(:,:,n)))
1141 WRITE(
nulprt,*) subname,
estr,
' Dimension sizes incorrect' 1157 integer(kind=ip_i4_p) ,
intent(in) :: var_id
1158 integer(kind=ip_i4_p) ,
intent(in) :: kstep
1159 real(kind=ip_double_p),
intent(inout) :: fld(:)
1160 integer(kind=ip_i4_p) ,
intent(out):: kinfo
1161 integer(kind=ip_i4_p) ,
optional :: varnum
1163 integer(kind=ip_i4_p) :: nfld,ncpl
1164 integer(kind=ip_i4_p) :: lvarnum
1165 character(len=*),
parameter :: subname =
'(oasis_get_worker)' 1176 write(
nulprt,*) subname,
estr,
'called before oasis_enddef' 1181 write(
nulprt,*) subname,
estr,
'oasis_get is called for a variable not in namcouple' 1182 write(
nulprt,*) subname,
' BE CAREFUL NOT TO USE IT !!!!!' 1188 if (var_id < 1 .or. var_id >
prism_nvar)
then 1189 write(
nulprt,*) subname,
estr,
'oasis_get is called for a variable not defined' 1195 if (
present(varnum))
then subroutine oasis_get_r18(var_id, kstep, fld, kinfo)
Receive 8 byte real 1D data.
Provides a common location for several OASIS variables.
integer(kind=ip_intwp_p), parameter oasis_ok
integer(kind=ip_intwp_p), parameter oasis_in
integer(kind=ip_intwp_p) nulprt
subroutine oasis_put_r38(var_id, kstep, fld1, kinfo, fld2, fld3, fld4, fld5, write_restart)
Send 8 byte real 2D bundled data.
subroutine oasis_put_r28(var_id, kstep, fld1, kinfo, fld2, fld3, fld4, fld5, write_restart)
Send 8 byte real 2D data.
subroutine, public oasis_abort(id_compid, cd_routine, cd_message, file, line, rcode)
OASIS abort method, publically available to users.
subroutine oasis_get_r38(var_id, kstep, fld, kinfo)
Receive 8 byte real 2D bundled data.
subroutine, public oasis_advance_run(mop, varid, msec, kinfo, nff, namid, array1din, array1dout, array2dout, readrest, a2on, array2, a3on, array3, a4on, array4, a5on, array5, writrest, varnum)
Advances the OASIS coupling.
subroutine, public oasis_debug_enter(string)
Used when a subroutine is entered, write info to log file at some debug level.
subroutine oasis_put_r18(var_id, kstep, fld1, kinfo, fld2, fld3, fld4, fld5, write_restart)
Send 4 byte real 1D data.
subroutine oasis_put_r14(var_id, kstep, fld1, kinfo, fld2, fld3, fld4, fld5, write_restart)
Send 4 byte real 1D data.
subroutine oasis_get_r14(var_id, kstep, fld, kinfo)
Receive 4 byte real 1D data.
integer(kind=ip_i4_p), dimension(mpi_status_size) istatus
subroutine oasis_put_r34(var_id, kstep, fld1, kinfo, fld2, fld3, fld4, fld5, write_restart)
Send 4 byte real 2D bundled data.
subroutine oasis_get_r28(var_id, kstep, fld, kinfo)
Receive 8 byte real 2D data.
subroutine oasis_get_worker(var_id, kstep, fld, kinfo, varnum)
Receive subroutine that actually does the work on 8 byte 1D data.
Defines parameters for OASIS.
OASIS variable data and methods.
integer(kind=ip_i4_p) oasis_debug
integer(kind=ip_intwp_p), parameter oasis_out
character(len= *), parameter, public estr
subroutine oasis_put_worker(var_id, kstep, fld1, kinfo, fld2, fld3, fld4, fld5, write_restart, varnum)
Send worker routine puts 8 byte real 1D data.
OASIS send/receive (put/get) user interfaces.
subroutine oasis_put_r24(var_id, kstep, fld1, kinfo, fld2, fld3, fld4, fld5, write_restart)
Send 4 byte real 2D data.
integer(kind=ip_intwp_p), parameter oasis_var_uncpl
Advances the OASIS coupling.
integer(kind=ip_intwp_p), public prism_nvar
number of variables defined
subroutine oasis_get_r34(var_id, kstep, fld, kinfo)
Receive 4 byte real 2D bundled data.
type(prism_var_type), dimension(:), pointer, public prism_var
list of defined variables
Generic overloaded interface for data get (receive)
subroutine, public oasis_debug_exit(string)
Used when a subroutine is exited, write info to log file at some debug level.
Generic overloaded interface for data put (send)
subroutine oasis_get_r24(var_id, kstep, fld, kinfo)
Receive 4 byte real 2D data.