321 TYPE(TIME),
INTENT(IN) :: NOW
322 INTEGER,
INTENT(IN) :: IUNIT,ILOC,K1
323 INTEGER,
INTENT(IN),
OPTIONAL :: K2
324 REAL(SP),
POINTER,
INTENT(IN) :: VARP(:,:)
325 CHARACTER(LEN=*),
INTENT(IN) :: VART
326 CHARACTER(LEN=*),
INTENT(IN),
OPTIONAL :: MSG
328 CHARACTER(LEN=80),
parameter :: VAR_E =
"element" 329 CHARACTER(LEN=80),
parameter :: VAR_N =
"node" 331 CHARACTER(LEN=100) :: STRNG
332 CHARACTER(LEN=20) :: short
334 INTEGER :: I,J,K,PROCMAX,II,IBND,Kopt,IERR
335 LOGICAL :: PRINT_PROC
342 IF(iunit /=
ipt .and. (iunit < 300 .or. iunit > 7000) )
THEN 344 &
'FILE UNIT < 300 AND UNIT > 7000 ARE RESERVED FOR FVCOM I/O',&
345 &
'PLEASE INCREASE IUNIT TO 300+')
351 IF(vart /= var_e .AND. vart /= var_n)
THEN 352 CALL fatal_error(
'VART IN PPRINT NOT CORRECT :'//trim(vart),&
353 &
'SHOULD BE "'//trim(var_e)//
'" or "'//trim(var_n)//
'"')
369 IF(
PRESENT(msg)) strng=trim(msg)//
"; IINT" 373 WRITE(short,
'(I5)')
iint 374 ELSE IF(
abs(
iint) .lt. 1000000)
THEN 375 WRITE(short,
'(I8)')
iint 381 strng = trim(strng)//trim(short)//
", Date/Time:"&
384 strng = trim(strng)//trim(short)//
", Time(s):" 385 WRITE(short,
'(f16.8)')
seconds(now)
386 strng = trim(strng)//trim(short)//
"; ILOC=" 389 WRITE(short,
'(I8)') iloc
390 strng = trim(strng)//trim(short)//
"; VALUES=" 395 WRITE(iunit,*) trim(strng)
396 WRITE(iunit,*) (varp(iloc,k),k=k1,kopt)
404 IF(
nprocs /= 1 .AND. vart == var_e .AND. elid(iloc) /= 0)
THEN 406 WRITE(iunit,*) trim(strng)
407 WRITE(iunit,*) (varp(elid(iloc),k),k=k1,kopt)
418 IF(
nprocs /= 1 .AND. vart == var_n .AND. nlid(iloc) > 0)
THEN 421 IF(nde_id(nlid(iloc)) == 1)
THEN 424 IF(bn_lst(ii) == iloc) ibnd = ii
429 IF(bn_ney(ibnd,j)==1)
THEN 430 IF(j < procmax) procmax = j
434 IF(procmax /=
myid) print_proc = .false.
438 WRITE(iunit,*) trim(strng)
439 WRITE(iunit,*) (varp(nlid(iloc),k),k=k1,kopt)
character(len=80) timezone
logical use_real_world_time
real(dp) function seconds(MJD)
subroutine fatal_error(ER1, ER2, ER3, ER4)
character(len=80) function write_datetime(mjdin, prec, TZONE)