359 USE all_vars,
only:
xmc,
ymc,
h1,
h,
xm,
ym,
h,
lon,
lat,
lonc,
latc 361 TYPE(PROBE_OBJ) :: PROBE
362 REAL(SP),
ALLOCATABLE,
TARGET :: ARR(:,:)
363 CHARACTER(LEN=80):: cstr1,cstr2,cstr3
364 INTEGER :: I,J,IBND,PROCMAX
367 if(dbg_set(dbg_sbr))
write(
ipt,*)
"START: MYPROBE_ARR" 369 IF(probe%K_ONE > ubound(arr,2) .or. probe%K_TWO > ubound(arr,2) )
THEN 370 CALL fatal_error(
'ERROR IN PROBE SETUP: PROBE LEVEL RANGE NOT CORRECT FOR VARIABLE: '//trim(probe_variable),&
371 &
'MAKE SURE PROBE LEVELS ARE LESS THAN OR EQUAL TO THE NUMBER OF MODEL LEVELS')
374 IF(probe%K_ONE < 1 .or. probe%K_TWO <1)
THEN 375 CALL fatal_error(
'ERROR IN PROBE SETUP: PROBE LEVEL RANGE NOT CORRECT FOR VARIABLE: '//trim(probe_variable),&
376 &
'MAKE SURE PROBE LEVELS ARE GREATER THAN OR EQUAL TO ONE')
380 IF(probe_levels(1) > probe_levels(2) )
THEN 382 &(
'ERROR IN PROBE SETUP: PROBE LEVEL RANGE NOT CORRECT FOR VARIABLE: '//trim(probe_variable),&
383 &
'THE PROBE LEVEL INTERVAL MUST SPECIFY A VALID RANGE a:b')
387 IF(probe%D_LOC_GL <1)
THEN 388 write(cstr1,
'(i8)') probe%D_LOC_GL
389 write(cstr2,
'(i8)')
ngl 391 CALL fatal_error(
'ERROR IN PROBE SETUP: DATA LOCATION'//trim(cstr1)//
' FOR TIME SERIES FILE: '//trim(probe_variable),&
392 &
'IS NOT IN GLOBAL DOMAIN: 1 --> '//trim(cstr2))
395 IF( ubound(arr,1) ==
nt)
THEN 397 IF(probe%D_LOC_GL >
ngl)
THEN 399 write(cstr1,
'(i8)') probe%D_LOC_GL
400 write(cstr2,
'(i8)')
ngl 402 CALL fatal_error(
'ERROR IN PROBE SETUP: DATA LOCATION'//trim(cstr1)//
' FOR TIME SERIES FILE: '//trim(probe_variable),&
403 &
'IS NOT IN GLOBAL DOMAIN: 1 --> '//trim(cstr2))
406 IF(
elid(probe%D_LOC_GL) /= 0)
THEN 408 probe%D_LOC =
elid(probe%D_LOC_GL)
412 probe%XLOC =
xmc(probe%D_LOC)
413 probe%YLOC =
ymc(probe%D_LOC)
415 probe%LONLOC =
lonc(probe%D_LOC)
416 probe%LATLOC =
latc(probe%D_LOC)
418 probe%DPTH =
h1(probe%D_LOC)
420 probe%VEC => arr(probe%D_LOC,probe%K_ONE:probe%K_TWO)
424 ELSE IF ( ubound(arr,1) ==
mt)
THEN 426 IF(probe%D_LOC_GL >
mgl)
THEN 427 write(cstr1,
'(i8)') probe%D_LOC_GL
428 write(cstr2,
'(i8)')
mgl 430 CALL fatal_error(
'ERROR IN PROBE SETUP: DATA LOCATION'//trim(cstr1)//
' FOR TIME SERIES FILE: '//trim(probe_variable),&
431 &
'IS NOT IN GLOBAL DOMAIN: 1 --> '//trim(cstr2))
435 IF(
nlid(probe%D_LOC_GL) == 0)
RETURN 437 IF(
nlid(probe%D_LOC_GL) > 0)
THEN 441 IF(
bn_lst(j) == probe%D_LOC_GL) ibnd = j
446 IF(
bn_ney(ibnd,j)==1)
THEN 447 IF(j < procmax) procmax = j
451 IF(procmax ==
myid)
THEN 453 probe%D_LOC =
nlid(probe%D_LOC_GL)
456 probe%XLOC =
xm(probe%D_LOC)
457 probe%YLOC =
ym(probe%D_LOC)
459 probe%LONLOC =
lon(probe%D_LOC)
460 probe%LATLOC =
lat(probe%D_LOC)
462 probe%DPTH =
h(probe%D_LOC)
464 probe%VEC => arr(probe%D_LOC,probe%K_ONE:probe%K_TWO)
468 probe%D_LOC =
nlid(probe%D_LOC_GL)
471 probe%XLOC =
xm(probe%D_LOC)
472 probe%YLOC =
ym(probe%D_LOC)
474 probe%LONLOC =
lon(probe%D_LOC)
475 probe%LATLOC =
lat(probe%D_LOC)
477 probe%DPTH =
h(probe%D_LOC)
479 probe%VEC => arr(probe%D_LOC,probe%K_ONE:probe%K_TWO)
486 CALL fatal_error(
'MYPROBE: INVALID VARIABLE SIZE?'&
487 &,
'Variable:'//trim(probe%VAR))
490 if(dbg_set(dbg_sbr))
write(
ipt,*)
"END: MYPROBE_ARR"
real(sp), dimension(:), allocatable, target h
integer, dimension(:), pointer elid
real(sp), dimension(:), allocatable, target ymc
integer, dimension(:), pointer nde_id
real(sp), dimension(:), allocatable, target latc
integer, dimension(:), pointer nlid
real(sp), dimension(:), allocatable, target xmc
real(sp), dimension(:), allocatable, target lonc
integer, dimension(:), pointer bn_lst
real(sp), dimension(:), allocatable, target xm
real(sp), dimension(:), allocatable, target lat
real(sp), dimension(:), allocatable, target h1
real(sp), dimension(:), allocatable, target lon
integer, dimension(:,:), pointer bn_ney
real(sp), dimension(:), allocatable, target ym