[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 | |
---|
[11852] | 14 | USE iom , ONLY: iom_open, iom_get, iom_close, jpdom_data ! read input file |
---|
| 15 | USE lib_fortran , ONLY: glob_sum, glob_min, glob_max ! compute global value |
---|
[11931] | 16 | USE par_oce , ONLY: jpi,jpj,jpk ! domain size |
---|
[11852] | 17 | USE in_out_manager, ONLY: wp, lwp, numout ! miscelenious |
---|
[11395] | 18 | |
---|
[11403] | 19 | IMPLICIT NONE |
---|
[11395] | 20 | |
---|
[11403] | 21 | PRIVATE |
---|
[11395] | 22 | |
---|
[11403] | 23 | INTERFACE debug |
---|
| 24 | MODULE PROCEDURE debug2d, debug3d |
---|
| 25 | END INTERFACE debug |
---|
[11395] | 26 | |
---|
[11403] | 27 | PUBLIC read_2dcstdta, debug |
---|
| 28 | |
---|
[11395] | 29 | CONTAINS |
---|
| 30 | |
---|
| 31 | SUBROUTINE read_2dcstdta(cdfile, cdvar, pvar) |
---|
[11403] | 32 | !!-------------------------------------------------------------------- |
---|
[11395] | 33 | !! *** ROUTINE read_2dcstdta *** |
---|
| 34 | !! |
---|
| 35 | !! ** Purpose : read input file |
---|
| 36 | !! |
---|
| 37 | !!-------------------------- OUT ------------------------------------- |
---|
[11403] | 38 | REAL(wp), DIMENSION(jpi,jpj), INTENT( out) :: pvar ! output variable |
---|
[11395] | 39 | !!-------------------------- IN ------------------------------------- |
---|
[11494] | 40 | CHARACTER(len=256) , INTENT(in ) :: cdfile ! input file name |
---|
| 41 | CHARACTER(len=34) , INTENT(in ) :: cdvar ! variable name |
---|
[11395] | 42 | !!-------------------------------------------------------------------- |
---|
| 43 | INTEGER :: inum |
---|
[11403] | 44 | !!-------------------------------------------------------------------- |
---|
[11395] | 45 | |
---|
[11494] | 46 | CALL iom_open( TRIM(cdfile), inum ) |
---|
| 47 | CALL iom_get( inum, jpdom_data, TRIM(cdvar), pvar) |
---|
[11395] | 48 | CALL iom_close(inum) |
---|
| 49 | |
---|
| 50 | END SUBROUTINE read_2dcstdta |
---|
| 51 | |
---|
[11403] | 52 | SUBROUTINE debug2d(cdtxt,pvar) |
---|
| 53 | !!-------------------------------------------------------------------- |
---|
| 54 | !! *** ROUTINE isf_debug2d *** |
---|
| 55 | !! |
---|
[11987] | 56 | !! ** Purpose : add debug print for 2d variables |
---|
[11403] | 57 | !! |
---|
| 58 | !!-------------------------- IN ------------------------------------- |
---|
| 59 | CHARACTER(LEN=256) , INTENT(in ) :: cdtxt |
---|
[11395] | 60 | REAL(wp), DIMENSION(jpi,jpj), INTENT(in ) :: pvar |
---|
[11403] | 61 | !!-------------------------------------------------------------------- |
---|
[11395] | 62 | REAL(wp) :: zmin, zmax, zsum |
---|
[11403] | 63 | !!-------------------------------------------------------------------- |
---|
| 64 | ! |
---|
[11844] | 65 | zsum = glob_sum( 'debug', pvar(:,:) ) |
---|
| 66 | zmin = glob_min( 'debug', pvar(:,:) ) |
---|
| 67 | zmax = glob_max( 'debug', pvar(:,:) ) |
---|
[11403] | 68 | ! |
---|
[11844] | 69 | IF (lwp) WRITE(numout,*) TRIM(cdtxt),' (min, max, sum) : ',zmin, zmax, zsum |
---|
[11403] | 70 | ! |
---|
[11844] | 71 | CALL FLUSH(numout) |
---|
| 72 | ! |
---|
[11403] | 73 | END SUBROUTINE debug2d |
---|
[11395] | 74 | |
---|
[11403] | 75 | SUBROUTINE debug3d(cdtxt,pvar) |
---|
| 76 | !!-------------------------------------------------------------------- |
---|
| 77 | !! *** ROUTINE isf_debug3d *** |
---|
| 78 | !! |
---|
[11987] | 79 | !! ** Purpose : add debug print for 3d variables |
---|
[11403] | 80 | !! |
---|
| 81 | !!-------------------------- IN ------------------------------------- |
---|
| 82 | CHARACTER(LEN=256) , INTENT(in ) :: cdtxt |
---|
[11395] | 83 | REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(in ) :: pvar |
---|
[11403] | 84 | !!-------------------------------------------------------------------- |
---|
[11395] | 85 | REAL(wp) :: zmin, zmax, zsum |
---|
[11403] | 86 | !!-------------------------------------------------------------------- |
---|
| 87 | ! |
---|
[11844] | 88 | zsum = glob_sum( 'debug', pvar(:,:,:) ) |
---|
| 89 | zmin = glob_min( 'debug', pvar(:,:,:) ) |
---|
| 90 | zmax = glob_max( 'debug', pvar(:,:,:) ) |
---|
[11403] | 91 | ! |
---|
[11844] | 92 | IF (lwp) WRITE(numout,*) TRIM(cdtxt),' (min, max, sum) : ',zmin, zmax, zsum |
---|
[11403] | 93 | ! |
---|
[11844] | 94 | CALL FLUSH(numout) |
---|
[11403] | 95 | ! |
---|
| 96 | END SUBROUTINE debug3d |
---|
[11395] | 97 | |
---|
| 98 | END MODULE isfutils |
---|
| 99 | |
---|