53 INTEGER,
POINTER ::
elid(:)
54 INTEGER,
POINTER ::
nlid(:)
60 INTEGER,
POINTER ::
egid(:)
61 INTEGER,
POINTER ::
ngid(:)
144 SUBROUTINE aprint_vec(IUNIT,VARP,VART,NOW,ILOC,MSG)
147 TYPE(
time),
INTENT(IN) :: NOW
148 INTEGER,
INTENT(IN) :: IUNIT,ILOC
149 REAL(SP),
ALLOCATABLE,
INTENT(IN),
TARGET :: VARP(:)
150 CHARACTER(LEN=*),
INTENT(IN) :: VART
151 CHARACTER(LEN=*),
INTENT(IN),
OPTIONAL :: MSG
152 REAL(SP),
POINTER:: VARP_O(:)
157 CALL pprint_vec(iunit,varp_o,vart,now,iloc,msg)
165 SUBROUTINE pprint_vec(IUNIT,VARP,VART,NOW,ILOC,MSG)
170 TYPE(
time),
INTENT(IN) :: NOW
171 INTEGER,
INTENT(IN) :: IUNIT,ILOC
172 REAL(SP),
POINTER,
INTENT(IN) :: VARP(:)
173 CHARACTER(LEN=*),
INTENT(IN) :: VART
174 CHARACTER(LEN=*),
INTENT(IN),
OPTIONAL :: MSG
176 CHARACTER(LEN=80),
parameter :: VAR_E =
"element" 177 CHARACTER(LEN=80),
parameter :: VAR_N =
"node" 179 CHARACTER(LEN=100) :: STRNG
180 CHARACTER(LEN=20) :: short
182 INTEGER :: I,J,K,PROCMAX,II,IBND,Kopt,IERR
183 LOGICAL :: PRINT_PROC
190 IF(iunit /=
ipt .and. (iunit < 300 .or. iunit > 7000) )
THEN 192 &
'FILE UNIT < 300 AND UNIT > 7000 ARE RESERVED FOR FVCOM I/O',&
193 &
'PLEASE INCREASE IUNIT TO 300+')
199 IF(vart /= var_e .AND. vart /= var_n)
THEN 200 CALL fatal_error(
'VART IN PPRINT NOT CORRECT :'//trim(vart),&
201 &
'SHOULD BE "'//trim(var_e)//
'" or "'//trim(var_n)//
'"')
208 IF(
PRESENT(msg)) strng=trim(msg)//
"; IINT" 212 WRITE(short,
'(I5)')
iint 213 ELSE IF(
abs(
iint) .lt. 1000000)
THEN 214 WRITE(short,
'(I8)')
iint 220 strng = trim(strng)//trim(short)//
", Date/Time:"&
221 &//trim(write_datetime(now,3,
timezone))//
"; ILOC= " 223 strng = trim(strng)//trim(short)//
", Time(s):" 224 WRITE(short,
'(f16.8)') seconds(now)
225 strng = trim(strng)//trim(short)//
"; ILOC=" 228 WRITE(short,
'(I8)') iloc
229 strng = trim(strng)//trim(short)//
"; VALUE=" 235 WRITE(iunit,*) trim(strng),varp(iloc)
243 IF(
nprocs /= 1 .AND. vart == var_e .AND.
elid(iloc) /= 0)
THEN 245 WRITE(iunit,*) trim(strng),varp(
elid(iloc))
256 IF(
nprocs /= 1 .AND. vart == var_n .AND.
nlid(iloc) > 0)
THEN 262 IF(
bn_lst(ii) == iloc) ibnd = ii
267 IF(
bn_ney(ibnd,j)==1)
THEN 268 IF(j < procmax) procmax = j
272 IF(procmax /=
myid) print_proc = .false.
276 WRITE(iunit,*) trim(strng),varp(
nlid(iloc))
287 SUBROUTINE aprint_arr(IUNIT,VARP,VART,NOW,ILOC,K1,K2,MSG)
290 TYPE(
time),
INTENT(IN) :: NOW
291 INTEGER,
INTENT(IN) :: IUNIT,ILOC,K1
292 INTEGER,
INTENT(IN),
OPTIONAL :: K2
293 REAL(SP),
ALLOCATABLE,
INTENT(IN),
TARGET :: VARP(:,:)
294 CHARACTER(LEN=*),
INTENT(IN) :: VART
295 CHARACTER(LEN=*),
INTENT(IN),
OPTIONAL :: MSG
296 REAL(SP),
POINTER:: VARP_O(:,:)
300 IF (
PRESENT(k2))
THEN 302 CALL pprint_arr(iunit,varp_o,vart,now,iloc,k1,k2,msg)
304 CALL pprint_arr(iunit,varp_o,vart,now,iloc,k1,k2)
308 CALL pprint_arr(iunit,varp_o,vart,now,iloc,k1,k1,msg)
310 CALL pprint_arr(iunit,varp_o,vart,now,iloc,k1)
316 SUBROUTINE pprint_arr(IUNIT,VARP,VART,NOW,ILOC,K1,K2,MSG)
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:"&
382 &//trim(write_datetime(now,3,
timezone))//
"; ILOC " 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 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)
integer, dimension(:), pointer elid
integer, dimension(:), pointer ngid_x
integer, dimension(:), pointer elid_x
integer, dimension(:), pointer he_own
integer, dimension(:), pointer nlid_x
integer, dimension(:), pointer bn_mlt
integer, dimension(:), pointer nde_id
integer, dimension(:), pointer hn_own
integer, dimension(:), pointer nlid
character(len=80) timezone
integer, dimension(:), pointer bn_lst
subroutine pprint_vec(IUNIT, VARP, VART, NOW, ILOC, MSG)
subroutine aprint_arr(IUNIT, VARP, VART, NOW, ILOC, K1, K2, MSG)
logical use_real_world_time
integer, dimension(:), pointer hn_lst
subroutine fatal_error(ER1, ER2, ER3, ER4)
integer, dimension(:), pointer he_lst
integer, dimension(:), pointer bn_loc
integer, dimension(:,:), pointer bn_ney
integer, dimension(:), pointer ngid
integer, dimension(:), pointer el_pid
integer, dimension(:), pointer egid
subroutine pprint_arr(IUNIT, VARP, VART, NOW, ILOC, K1, K2, MSG)
subroutine aprint_vec(IUNIT, VARP, VART, NOW, ILOC, MSG)
integer, dimension(:), pointer egid_x