[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 |
---|
| 16 | USE dom_oce , ONLY: jpi,jpj,jpk ! domain size |
---|
| 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 | !! |
---|
[11403] | 37 | !!-------------------------------------------------------------------- |
---|
[11395] | 38 | !!-------------------------- OUT ------------------------------------- |
---|
[11403] | 39 | REAL(wp), DIMENSION(jpi,jpj), INTENT( out) :: pvar ! output variable |
---|
[11395] | 40 | !!-------------------------- IN ------------------------------------- |
---|
[11494] | 41 | CHARACTER(len=256) , INTENT(in ) :: cdfile ! input file name |
---|
| 42 | CHARACTER(len=34) , INTENT(in ) :: cdvar ! variable name |
---|
[11395] | 43 | !!-------------------------------------------------------------------- |
---|
| 44 | INTEGER :: inum |
---|
[11403] | 45 | !!-------------------------------------------------------------------- |
---|
[11395] | 46 | |
---|
[11494] | 47 | CALL iom_open( TRIM(cdfile), inum ) |
---|
| 48 | CALL iom_get( inum, jpdom_data, TRIM(cdvar), pvar) |
---|
[11395] | 49 | CALL iom_close(inum) |
---|
| 50 | |
---|
| 51 | END SUBROUTINE read_2dcstdta |
---|
| 52 | |
---|
[11403] | 53 | SUBROUTINE debug2d(cdtxt,pvar) |
---|
| 54 | !!-------------------------------------------------------------------- |
---|
| 55 | !! *** ROUTINE isf_debug2d *** |
---|
| 56 | !! |
---|
| 57 | !! ** Purpose : add debug print |
---|
| 58 | !! |
---|
| 59 | !!-------------------------------------------------------------------- |
---|
| 60 | !!-------------------------- OUT ------------------------------------- |
---|
| 61 | !!-------------------------- IN ------------------------------------- |
---|
| 62 | CHARACTER(LEN=256) , INTENT(in ) :: cdtxt |
---|
[11395] | 63 | REAL(wp), DIMENSION(jpi,jpj), INTENT(in ) :: pvar |
---|
[11403] | 64 | !!-------------------------------------------------------------------- |
---|
[11395] | 65 | REAL(wp) :: zmin, zmax, zsum |
---|
[11403] | 66 | !!-------------------------------------------------------------------- |
---|
| 67 | ! |
---|
[11844] | 68 | zsum = glob_sum( 'debug', pvar(:,:) ) |
---|
| 69 | zmin = glob_min( 'debug', pvar(:,:) ) |
---|
| 70 | zmax = glob_max( 'debug', pvar(:,:) ) |
---|
[11403] | 71 | ! |
---|
[11844] | 72 | IF (lwp) WRITE(numout,*) TRIM(cdtxt),' (min, max, sum) : ',zmin, zmax, zsum |
---|
[11403] | 73 | ! |
---|
[11844] | 74 | CALL FLUSH(numout) |
---|
| 75 | ! |
---|
[11403] | 76 | END SUBROUTINE debug2d |
---|
[11395] | 77 | |
---|
[11403] | 78 | SUBROUTINE debug3d(cdtxt,pvar) |
---|
| 79 | !!-------------------------------------------------------------------- |
---|
| 80 | !! *** ROUTINE isf_debug3d *** |
---|
| 81 | !! |
---|
| 82 | !! ** Purpose : add debug print |
---|
| 83 | !! |
---|
| 84 | !!-------------------------------------------------------------------- |
---|
| 85 | !!-------------------------- OUT ------------------------------------- |
---|
| 86 | !!-------------------------- IN ------------------------------------- |
---|
| 87 | CHARACTER(LEN=256) , INTENT(in ) :: cdtxt |
---|
[11395] | 88 | REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(in ) :: pvar |
---|
[11403] | 89 | !!-------------------------------------------------------------------- |
---|
[11395] | 90 | REAL(wp) :: zmin, zmax, zsum |
---|
[11403] | 91 | !!-------------------------------------------------------------------- |
---|
| 92 | ! |
---|
[11844] | 93 | zsum = glob_sum( 'debug', pvar(:,:,:) ) |
---|
| 94 | zmin = glob_min( 'debug', pvar(:,:,:) ) |
---|
| 95 | zmax = glob_max( 'debug', pvar(:,:,:) ) |
---|
[11403] | 96 | ! |
---|
[11844] | 97 | IF (lwp) WRITE(numout,*) TRIM(cdtxt),' (min, max, sum) : ',zmin, zmax, zsum |
---|
[11403] | 98 | ! |
---|
[11844] | 99 | CALL FLUSH(numout) |
---|
[11403] | 100 | ! |
---|
| 101 | END SUBROUTINE debug3d |
---|
[11395] | 102 | |
---|
| 103 | END MODULE isfutils |
---|
| 104 | |
---|