[11395] | 1 | MODULE isfutils |
---|
[11403] | 2 | !!====================================================================== |
---|
| 3 | !! *** MODULE isfutils *** |
---|
| 4 | !! istutils module : miscelenious useful routines |
---|
| 5 | !!====================================================================== |
---|
| 6 | !! History : 4.1 ! 2019-09 (P. Mathiot) original code |
---|
| 7 | !!---------------------------------------------------------------------- |
---|
[11395] | 8 | |
---|
[11403] | 9 | !!---------------------------------------------------------------------- |
---|
| 10 | !! isfutils : - read_2dcstdta to read a constant input file with iom_get |
---|
| 11 | !! - debug to print array sum, min, max in ocean.output |
---|
| 12 | !!---------------------------------------------------------------------- |
---|
[11395] | 13 | |
---|
[11403] | 14 | USE iom |
---|
| 15 | USE lib_fortran |
---|
| 16 | USE lib_mpp |
---|
[11395] | 17 | |
---|
[11403] | 18 | IMPLICIT NONE |
---|
[11395] | 19 | |
---|
[11403] | 20 | PRIVATE |
---|
[11395] | 21 | |
---|
[11403] | 22 | INTERFACE debug |
---|
| 23 | MODULE PROCEDURE debug2d, debug3d |
---|
| 24 | END INTERFACE debug |
---|
[11395] | 25 | |
---|
[11403] | 26 | PUBLIC read_2dcstdta, debug |
---|
| 27 | |
---|
[11395] | 28 | CONTAINS |
---|
| 29 | |
---|
| 30 | SUBROUTINE read_2dcstdta(cdfile, cdvar, pvar) |
---|
[11403] | 31 | !!-------------------------------------------------------------------- |
---|
[11395] | 32 | !! *** ROUTINE read_2dcstdta *** |
---|
| 33 | !! |
---|
| 34 | !! ** Purpose : read input file |
---|
| 35 | !! |
---|
[11403] | 36 | !!-------------------------------------------------------------------- |
---|
[11395] | 37 | !!-------------------------- OUT ------------------------------------- |
---|
[11403] | 38 | REAL(wp), DIMENSION(jpi,jpj), INTENT( out) :: pvar ! output variable |
---|
[11395] | 39 | !!-------------------------- IN ------------------------------------- |
---|
[11403] | 40 | CHARACTER(len=256) , INTENT(in ) :: cdfile, cdvar ! input file name and variable name |
---|
[11395] | 41 | !!-------------------------------------------------------------------- |
---|
| 42 | INTEGER :: inum |
---|
[11403] | 43 | !!-------------------------------------------------------------------- |
---|
[11395] | 44 | |
---|
| 45 | CALL iom_open( cdfile, inum ) |
---|
| 46 | CALL iom_get( inum, jpdom_data, cdvar, pvar, 1) |
---|
| 47 | CALL iom_close(inum) |
---|
| 48 | |
---|
| 49 | END SUBROUTINE read_2dcstdta |
---|
| 50 | |
---|
[11403] | 51 | SUBROUTINE debug2d(cdtxt,pvar) |
---|
| 52 | !!-------------------------------------------------------------------- |
---|
| 53 | !! *** ROUTINE isf_debug2d *** |
---|
| 54 | !! |
---|
| 55 | !! ** Purpose : add debug print |
---|
| 56 | !! |
---|
| 57 | !!-------------------------------------------------------------------- |
---|
| 58 | !!-------------------------- OUT ------------------------------------- |
---|
| 59 | !!-------------------------- IN ------------------------------------- |
---|
| 60 | CHARACTER(LEN=256) , INTENT(in ) :: cdtxt |
---|
[11395] | 61 | REAL(wp), DIMENSION(jpi,jpj), INTENT(in ) :: pvar |
---|
[11403] | 62 | !!-------------------------------------------------------------------- |
---|
[11395] | 63 | REAL(wp) :: zmin, zmax, zsum |
---|
[11403] | 64 | !!-------------------------------------------------------------------- |
---|
| 65 | ! |
---|
| 66 | zsum = glob_sum( 'debug', pvar(:,:) ) |
---|
| 67 | zmin = MINVAL( pvar(:,:) ) ; CALL mpp_min( 'debug', zmin ) ! min over the global domain |
---|
| 68 | zmax = MAXVAL( pvar(:,:) ) ; CALL mpp_max( 'debug', zmax ) ! max over the global domain |
---|
| 69 | ! |
---|
[11395] | 70 | WRITE(numout,*) TRIM(cdtxt),' (min, max, sum) : ',zmin, zmax, zsum |
---|
[11403] | 71 | ! |
---|
[11395] | 72 | FLUSH(numout) |
---|
[11403] | 73 | END SUBROUTINE debug2d |
---|
[11395] | 74 | |
---|
[11403] | 75 | SUBROUTINE debug3d(cdtxt,pvar) |
---|
| 76 | !!-------------------------------------------------------------------- |
---|
| 77 | !! *** ROUTINE isf_debug3d *** |
---|
| 78 | !! |
---|
| 79 | !! ** Purpose : add debug print |
---|
| 80 | !! |
---|
| 81 | !!-------------------------------------------------------------------- |
---|
| 82 | !!-------------------------- OUT ------------------------------------- |
---|
| 83 | !!-------------------------- IN ------------------------------------- |
---|
| 84 | CHARACTER(LEN=256) , INTENT(in ) :: cdtxt |
---|
[11395] | 85 | REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(in ) :: pvar |
---|
[11403] | 86 | !!-------------------------------------------------------------------- |
---|
[11395] | 87 | REAL(wp) :: zmin, zmax, zsum |
---|
[11403] | 88 | !!-------------------------------------------------------------------- |
---|
| 89 | ! |
---|
| 90 | zsum = glob_sum( 'debug', pvar(:,:) ) |
---|
| 91 | zmin = MINVAL( pvar(:,:) ) ; CALL mpp_min( 'debug', zmin ) ! min over the global domain |
---|
| 92 | zmax = MAXVAL( pvar(:,:) ) ; CALL mpp_max( 'debug', zmax ) ! max over the global domain |
---|
| 93 | ! |
---|
[11395] | 94 | WRITE(numout,*) TRIM(cdtxt),' (min, max, sum) : ',zmin, zmax, zsum |
---|
[11403] | 95 | ! |
---|
[11395] | 96 | FLUSH(numout) |
---|
[11403] | 97 | ! |
---|
| 98 | END SUBROUTINE debug3d |
---|
[11395] | 99 | |
---|
| 100 | END MODULE isfutils |
---|
| 101 | |
---|