|
1 | 1 | MODULE INV_TRANS_FIELD_API_MODULE
|
2 | 2 | USE FIELD_MODULE
|
3 | 3 | USE PARKIND1 ,ONLY : JPIM ,JPRB
|
| 4 | +USE PRINT_DEBUG_FIELD_API |
4 | 5 |
|
5 | 6 | IMPLICIT NONE
|
6 | 7 |
|
@@ -239,7 +240,7 @@ SUBROUTINE INV_TRANS_FIELD_API(SPVORS,SPDIVS,SPSCALARS, &
|
239 | 240 | ! 3. CALL INV_TRANS
|
240 | 241 |
|
241 | 242 | IF (LLVERBOSE) THEN
|
242 |
| - CALL PRINT_DEBUG(ZSPVOR, ZSPDIV, ZSPSCALAR, ZGPUV, ZGP, & |
| 243 | + CALL PRINT_DEBUG_INV_TRANS_FIELD_API(ZSPVOR, ZSPDIV, ZSPSCALAR, ZGPUV, ZGP, & |
243 | 244 | & SPVORS,SPDIVS,SPSCALARS, &
|
244 | 245 | & US, VS, VORS,DIVS,SCALARS, &
|
245 | 246 | & DUS, DVS, DSCALARS, DSCALARS_NS, &
|
@@ -304,190 +305,4 @@ SUBROUTINE INV_TRANS_FIELD_API(SPVORS,SPDIVS,SPSCALARS, &
|
304 | 305 |
|
305 | 306 | END SUBROUTINE INV_TRANS_FIELD_API
|
306 | 307 |
|
307 |
| -SUBROUTINE PRINT_DEBUG(ZSPVOR, ZSPDIV, ZSPSCALAR, ZGPUV, ZGP, SPVORS,SPDIVS,SPSCALARS, & |
308 |
| - & US, VS, VORS,DIVS,SCALARS, & |
309 |
| - & DUS, DVS, DSCALARS, DSCALARS_NS, & |
310 |
| - & VSETUVS, VSETS, IFLDSUV,IFLDS,IFLDG,IFLDGUV,LDSCDERS,LDVORGP,LDDIVGP, LDUVDER, & |
311 |
| - & ISPEC2, NPROMA,IGPBLKS,KFLDG,KFLDGUV) |
312 |
| - |
313 |
| - |
314 |
| -REAL(KIND=JPRB),ALLOCATABLE :: ZSPVOR(:,:),ZSPDIV(:,:) ! Spectral vector fields (in) |
315 |
| -REAL(KIND=JPRB),ALLOCATABLE :: ZSPSCALAR(:,:) ! Spectral scalar fields (in) |
316 |
| -REAL(KIND=JPRB),ALLOCATABLE :: ZGPUV(:,:,:,:) ! Grid vector fields (out) |
317 |
| -REAL(KIND=JPRB),ALLOCATABLE :: ZGP(:,:,:) ! Grid scalar fields (out) |
318 |
| - |
319 |
| -TYPE(FIELD_BASIC_PTR),OPTIONAL :: SPVORS(:), SPDIVS(:) !Spectral vector fields : vorticity and divergence fields (in) |
320 |
| -TYPE(FIELD_BASIC_PTR),OPTIONAL :: SPSCALARS(:) !Spectral scalar fields (in) |
321 |
| - |
322 |
| -TYPE(FIELD_BASIC_PTR),OPTIONAL :: US(:),VS(:) !Grid vector fields (out) |
323 |
| -TYPE(FIELD_BASIC_PTR),OPTIONAL :: VORS(:),DIVS(:) !Grid vector fields :vorticity and divergence (out) |
324 |
| -TYPE(FIELD_BASIC_PTR),OPTIONAL :: SCALARS(:) !Grid scalar fields (out) |
325 |
| - |
326 |
| -TYPE(FIELD_BASIC_PTR),OPTIONAL :: DUS(:),DVS(:) !Grid vector fields derivatives EW (out) |
327 |
| -TYPE(FIELD_BASIC_PTR),OPTIONAL :: DSCALARS(:), DSCALARS_NS(:) !Grid scalar fields derivatives NS(out) |
328 |
| - |
329 |
| -INTEGER(KIND=JPIM),OPTIONAL :: VSETUVS(:) !Meta data vector fields |
330 |
| -INTEGER(KIND=JPIM),OPTIONAL :: VSETS(:) !Meta data scalar fields |
331 |
| - |
332 |
| - |
333 |
| - INTEGER(KIND=JPIM), INTENT(IN) :: IFLDSUV ! Number of input spectral vector fields |
334 |
| - INTEGER(KIND=JPIM), INTENT(IN) :: IFLDS ! Number of input spectral scalar fields |
335 |
| - INTEGER(KIND=JPIM), INTENT(IN) :: IFLDG ! Number of output scalar fields |
336 |
| - INTEGER(KIND=JPIM), INTENT(IN) :: KFLDG ! Size of output scalar fields array |
337 |
| - INTEGER(KIND=JPIM), INTENT(IN) :: IFLDGUV ! Number of output vector fields |
338 |
| - INTEGER(KIND=JPIM), INTENT(IN) :: KFLDGUV ! Size of output vector fields array |
339 |
| - |
340 |
| - INTEGER(KIND=JPIM), INTENT(IN) :: ISPEC2 ! Size of spectral fields (truncation) |
341 |
| - INTEGER(KIND=JPIM), INTENT(IN) :: NPROMA,IGPBLKS ! Size of NPROMA and number of blocs |
342 |
| - |
343 |
| - LOGICAL, INTENT(IN) :: LDSCDERS ! indicating if derivatives of scalar variables are req. |
344 |
| - LOGICAL, INTENT(IN) :: LDVORGP ! indicating if grid-point vorticity is req. |
345 |
| - LOGICAL, INTENT(IN) :: LDDIVGP ! indicating if grid-point divergence is req. |
346 |
| - LOGICAL , INTENT(IN) :: LDUVDER ! indicating if E-W derivatives of u and v are req. |
347 |
| - |
348 |
| - CALL PRINT_DEBUG_HEADER("DIMENSIONS") |
349 |
| - |
350 |
| - WRITE(*,'(A11,I4,A2)') "NPROMA | ", NPROMA, ' |' |
351 |
| - WRITE(*,'(A11,I4,A2)') "NBLKS | ", IGPBLKS, ' |' |
352 |
| - WRITE(*,'(A11,I4,A2)') "NSPECS | ", ISPEC2, ' |' |
353 |
| - WRITE(*,'(A11,L4,A2)') "LDUVDER | ", LDUVDER, ' |' |
354 |
| - WRITE(*,'(A11,L4,A2)') "LDVORGP | ", LDVORGP, ' |' |
355 |
| - WRITE(*,'(A11,L4,A2)') "LDDIVGP | ", LDDIVGP, ' |' |
356 |
| - WRITE(*,'(A11,L4,A2)') "LDSCDERS | ", LDSCDERS, ' |' |
357 |
| - CALL PRINT_DEBUG_FOOTER() |
358 |
| - |
359 |
| - CALL PRINT_DEBUG_HEADER("Input spectral vector fields:", SIZE(SPVORS)) |
360 |
| - |
361 |
| - IF (PRESENT(SPVORS)) THEN |
362 |
| - CALL PRINT_DEBUG_FIELDS(SPVORS, "SPVORS", (/"NSPECS ", "NLEV "/)) |
363 |
| - CALL PRINT_DEBUG_SUM(IFLDSUV) |
364 |
| - ENDIF |
365 |
| - |
366 |
| - IF (PRESENT(SPVORS)) THEN |
367 |
| - CALL PRINT_DEBUG_FIELDS(SPDIVS, "SPDIVS", (/"NSPECS ", "NLEV "/)) |
368 |
| - CALL PRINT_DEBUG_SUM(IFLDSUV) |
369 |
| - ENDIF |
370 |
| - |
371 |
| - CALL PRINT_DEBUG_SEPARATOR() |
372 |
| - CALL PRINT_DEBUG_2D(ZSPVOR, "ZSPVOR", "| NSPECS | NFIELDS|") |
373 |
| - CALL PRINT_DEBUG_2D(ZSPDIV, "ZSPDIV") |
374 |
| - |
375 |
| - CALL PRINT_DEBUG_HEADER("Input spectral scalar fields:", SIZE(SPSCALARS)) |
376 |
| - |
377 |
| - IF (PRESENT(SPSCALARS)) THEN |
378 |
| - CALL PRINT_DEBUG_FIELDS(SPSCALARS,"SPSCALARS", (/"NSPECS ", "NLEV "/)) |
379 |
| - CALL PRINT_DEBUG_SUM(IFLDS) |
380 |
| - ENDIF |
381 |
| - |
382 |
| - CALL PRINT_DEBUG_SEPARATOR() |
383 |
| - CALL PRINT_DEBUG_2D(ZSPSCALAR, "ZSPSCALAR", "| NSPECS | NFIELDS|") |
384 |
| - CALL PRINT_DEBUG_FOOTER() |
385 |
| - |
386 |
| - CALL PRINT_DEBUG_HEADER("Output grid-point vector fields:", SIZE(US)) |
387 |
| - |
388 |
| - IF (PRESENT(US)) THEN |
389 |
| - CALL PRINT_DEBUG_FIELDS(US,"US", (/"NPROMA ","NLEV ", "NBLKS "/)) |
390 |
| - CALL PRINT_DEBUG_SUM(IFLDGUV) |
391 |
| - ENDIF |
392 |
| - |
393 |
| - IF (PRESENT(US)) THEN |
394 |
| - CALL PRINT_DEBUG_FIELDS(US,"VS", (/"NPROMA ","NLEV ", "NBLKS "/)) |
395 |
| - CALL PRINT_DEBUG_SUM(IFLDGUV) |
396 |
| - ENDIF |
397 |
| - |
398 |
| - |
399 |
| - IF (PRESENT(VORS)) CALL PRINT_DEBUG_FIELDS(VORS,"VORS") |
400 |
| - IF (PRESENT(DIVS)) CALL PRINT_DEBUG_FIELDS(DIVS,"DIVS") |
401 |
| - IF (PRESENT(DUS)) CALL PRINT_DEBUG_FIELDS(DUS, "DUS") |
402 |
| - IF (PRESENT(DVS)) CALL PRINT_DEBUG_FIELDS(DVS, "DVS") |
403 |
| - |
404 |
| - CALL PRINT_DEBUG_SEPARATOR() |
405 |
| - CALL PRINT_DEBUG_4D(ZGPUV, "ZGPUV", "| NPROMA | NLEVS | NFIELDS| NBLKS |") |
406 |
| - CALL PRINT_DEBUG_FOOTER() |
407 |
| - |
408 |
| - CALL PRINT_DEBUG_HEADER("Output grid-point scalar fields:", SIZE(SCALARS)) |
409 |
| - IF (PRESENT(SCALARS)) CALL PRINT_DEBUG_FIELDS(SCALARS, "SCALARS", (/"NPROMA ", "NLEV ", "NBLKS "/)) |
410 |
| - IF (PRESENT(DSCALARS)) CALL PRINT_DEBUG_FIELDS(DSCALARS, "DSCALARS") |
411 |
| - IF (PRESENT(DSCALARS_NS)) CALL PRINT_DEBUG_FIELDS(DSCALARS_NS,"DSCALARS_NS") |
412 |
| - |
413 |
| - CALL PRINT_DEBUG_SUM(IFLDG) |
414 |
| - |
415 |
| - CALL PRINT_DEBUG_SEPARATOR() |
416 |
| - CALL PRINT_DEBUG_3D(ZGP, "ZGP", "| NPROMA | NLEVS | NBLKS |") |
417 |
| - CALL PRINT_DEBUG_FOOTER() |
418 |
| - |
419 |
| - |
420 |
| -END SUBROUTINE PRINT_DEBUG |
421 |
| - |
422 |
| -SUBROUTINE PRINT_DEBUG_1D(A1, NAME, HEADER) |
423 |
| - REAL(KIND=JPRB),INTENT(IN) :: A1(:) |
424 |
| - CHARACTER(LEN=*), INTENT(IN) :: NAME |
425 |
| - CHARACTER(LEN=*), OPTIONAL, INTENT(IN) :: HEADER |
426 |
| - |
427 |
| -END SUBROUTINE PRINT_DEBUG_1D |
428 |
| - |
429 |
| -SUBROUTINE PRINT_DEBUG_2D(A2, NAME, HEADER) |
430 |
| - REAL(KIND=JPRB),INTENT(IN) :: A2(:,:) |
431 |
| - CHARACTER(LEN=*), INTENT(IN) :: NAME |
432 |
| - CHARACTER(LEN=*), OPTIONAL,INTENT(IN) :: HEADER |
433 |
| - IF (PRESENT(HEADER)) WRITE(*,'(8X,A)') HEADER |
434 |
| - WRITE(*,'(A7,A3,I6,A3,I6, A3, I6, A2)') NAME, " | ", & |
435 |
| - & UBOUND(A2,1) - LBOUND(A2,1) + 1, " | " , & |
436 |
| - & UBOUND(A2,2) - LBOUND(A2,2) + 1, " |" |
437 |
| -END SUBROUTINE PRINT_DEBUG_2D |
438 |
| - |
439 |
| -SUBROUTINE PRINT_DEBUG_3D(A3, NAME, HEADER) |
440 |
| - REAL(KIND=JPRB),INTENT(IN) :: A3(:,:,:) |
441 |
| - CHARACTER(LEN=*), INTENT(IN) :: NAME |
442 |
| - CHARACTER(LEN=*), OPTIONAL, INTENT(IN) :: HEADER |
443 |
| - IF (PRESENT(HEADER))WRITE(*,'(8X,A)') HEADER |
444 |
| - WRITE(*,'(A7,A3,I6,A3,I6, A3, I6, A2)') NAME, " | ", & |
445 |
| - & UBOUND(A3,1) - LBOUND(A3,1) + 1, " | " , & |
446 |
| - & UBOUND(A3,2) - LBOUND(A3,2) + 1, " | ", & |
447 |
| - & UBOUND(A3,3) - LBOUND(A3,3) + 1, " |" |
448 |
| -END SUBROUTINE PRINT_DEBUG_3D |
449 |
| - |
450 |
| -SUBROUTINE PRINT_DEBUG_4D(A4, NAME, HEADER) |
451 |
| - REAL(KIND=JPRB),INTENT(IN) :: A4(:,:,:,:) |
452 |
| - CHARACTER(LEN=*), INTENT(IN) :: NAME |
453 |
| - CHARACTER(LEN=*), OPTIONAL, INTENT(IN) :: HEADER |
454 |
| - IF (PRESENT(HEADER))WRITE(*,'(8X,A)') HEADER |
455 |
| - WRITE(*,'(A7,A3,I6,A3,I6, A3, I6, A3, I6, A2)') NAME, " | ", & |
456 |
| - & UBOUND(A4,1) - LBOUND(A4,1) + 1, " | ", & |
457 |
| - & UBOUND(A4,2) - LBOUND(A4,2) + 1, " | ", & |
458 |
| - & UBOUND(A4,3) - LBOUND(A4,3) + 1, " | ", & |
459 |
| - & UBOUND(A4,4) - LBOUND(A4,4) + 1, " |" |
460 |
| - |
461 |
| -END SUBROUTINE PRINT_DEBUG_4D |
462 |
| - |
463 |
| -SUBROUTINE PRINT_DEBUG_HEADER(DESCRIPTION, NUMBER) |
464 |
| - CHARACTER(LEN=*), INTENT(IN) :: DESCRIPTION |
465 |
| - INTEGER, INTENT(IN), OPTIONAL :: NUMBER |
466 |
| - |
467 |
| - WRITE(*,*) "-----------------------------------------------" |
468 |
| - IF (PRESENT(NUMBER)) THEN |
469 |
| - WRITE(*,*) "#", DESCRIPTION, NUMBER, "#" |
470 |
| - ELSE |
471 |
| - WRITE(*,*) "#", DESCRIPTION, "#" |
472 |
| - ENDIF |
473 |
| - WRITE(*,*) "-----------------------------------------------" |
474 |
| - |
475 |
| -END SUBROUTINE PRINT_DEBUG_HEADER |
476 |
| - |
477 |
| -SUBROUTINE PRINT_DEBUG_FOOTER() |
478 |
| - WRITE(*,*) "-----------------------------------------------" |
479 |
| - WRITE(*,*) "" |
480 |
| -END SUBROUTINE PRINT_DEBUG_FOOTER |
481 |
| - |
482 |
| -SUBROUTINE PRINT_DEBUG_SEPARATOR() |
483 |
| - WRITE(*,*) "............." |
484 |
| - WRITE(*,*) "" |
485 |
| -END SUBROUTINE PRINT_DEBUG_SEPARATOR |
486 |
| - |
487 |
| -SUBROUTINE PRINT_DEBUG_SUM(N) |
488 |
| - INTEGER, INTENT(IN) :: N |
489 |
| - WRITE(*,'(31X,A8)') "========" |
490 |
| - WRITE(*,'(33X,I4)') N |
491 |
| - |
492 |
| -END SUBROUTINE PRINT_DEBUG_SUM |
493 | 308 | END MODULE INV_TRANS_FIELD_API_MODULE
|
0 commit comments