[4] | 1 | SUBROUTINE ice_phy_grid(kideb,kiut,nlay,zht_i,ln_write,snoorice) |
---|
| 2 | |
---|
| 3 | ! This routine creates thermodynamical vertical grid |
---|
| 4 | ! (c) Martin Vancoppenolle, May 2007 |
---|
| 5 | |
---|
| 6 | INCLUDE 'type.com' |
---|
| 7 | INCLUDE 'para.com' |
---|
| 8 | INCLUDE 'const.com' |
---|
| 9 | INCLUDE 'ice.com' |
---|
| 10 | INCLUDE 'thermo.com' |
---|
| 11 | INCLUDE 'bio.com' |
---|
| 12 | |
---|
| 13 | INTEGER :: |
---|
| 14 | & ji , ! : index for space |
---|
| 15 | & jk ! : index for ice layers |
---|
| 16 | |
---|
| 17 | CHARACTER(len=3) :: |
---|
| 18 | & snoorice ! : message indicating whether we have to compute ice or snow |
---|
| 19 | |
---|
| 20 | LOGICAL :: |
---|
| 21 | & ln_write |
---|
| 22 | |
---|
| 23 | !=============================================================================! |
---|
| 24 | |
---|
| 25 | IF ( ln_write ) THEN |
---|
| 26 | ji = 1 |
---|
| 27 | WRITE(numout,*) ' *** ice_phy_grid : ' |
---|
| 28 | WRITE(numout,*) ' ~~~~~~~~~~~~~~~~~~ ' |
---|
| 29 | WRITE(numout,*) |
---|
| 30 | WRITE(numout,*) ' ht_i_b : ', zht_i |
---|
| 31 | WRITE(numout,*) ' nlay : ', nlay |
---|
| 32 | WRITE(numout,*) ' which? : ', snoorice |
---|
| 33 | ENDIF |
---|
| 34 | |
---|
| 35 | DO ji = kideb, kiut |
---|
| 36 | |
---|
| 37 | !--------------------------- |
---|
| 38 | ! layer thickness |
---|
| 39 | !--------------------------- |
---|
| 40 | IF ( snoorice .EQ. 'ice' ) THEN |
---|
| 41 | DO layer = 1, nlay |
---|
| 42 | deltaz_i_phy(layer) = zht_i / nlay |
---|
| 43 | END DO |
---|
| 44 | ENDIF |
---|
| 45 | |
---|
| 46 | IF ( snoorice .EQ. 'sno' ) THEN |
---|
| 47 | DO layer = 1, nlay |
---|
| 48 | deltaz_s_phy(layer) = zht_i / nlay |
---|
| 49 | END DO |
---|
| 50 | ENDIF |
---|
| 51 | |
---|
| 52 | !--------------------------- |
---|
| 53 | ! layer cotes |
---|
| 54 | !--------------------------- |
---|
| 55 | IF ( snoorice .EQ. 'ice' ) THEN |
---|
| 56 | z_i_phy(1) = deltaz_i_phy(1) / 2.0 |
---|
| 57 | DO layer = 2, nlay |
---|
| 58 | z_i_phy(layer) = z_i_phy(layer-1) + ( deltaz_i_phy(layer-1) |
---|
| 59 | & + deltaz_i_phy(layer) ) / 2.0 |
---|
| 60 | END DO |
---|
| 61 | |
---|
| 62 | IF ( ln_write ) THEN |
---|
| 63 | WRITE(numout,*) ' deltaz_i_phy : ', ( deltaz_i_phy(layer), |
---|
| 64 | & layer = 1, nlay ) |
---|
| 65 | WRITE(numout,*) ' z_i_phy : ', ( z_i_phy(layer), |
---|
| 66 | & layer = 1, nlay ) |
---|
| 67 | WRITE(numout,*) ' end ' |
---|
| 68 | ENDIF |
---|
| 69 | |
---|
| 70 | ENDIF |
---|
| 71 | |
---|
| 72 | IF ( snoorice .EQ. 'sno' ) THEN |
---|
| 73 | z_s_phy(1) = deltaz_s_phy(1) / 2.0 |
---|
| 74 | DO layer = 2, nlay |
---|
| 75 | z_s_phy(layer) = z_s_phy(layer-1) + ( deltaz_s_phy(layer-1) |
---|
| 76 | & + deltaz_s_phy(layer) ) / 2.0 |
---|
| 77 | END DO |
---|
| 78 | |
---|
| 79 | IF ( ln_write ) THEN |
---|
| 80 | WRITE(numout,*) ' deltaz_s_phy : ', ( deltaz_s_phy(layer), |
---|
| 81 | & layer = 1, nlay ) |
---|
| 82 | WRITE(numout,*) ' z_s_phy : ', ( z_s_phy(layer), |
---|
| 83 | & layer = 1, nlay ) |
---|
| 84 | WRITE(numout,*) ' end ' |
---|
| 85 | ENDIF |
---|
| 86 | |
---|
| 87 | ENDIF |
---|
| 88 | |
---|
| 89 | !-----------------------------------------------------------------------! |
---|
| 90 | ! Layer boundaries |
---|
| 91 | !-----------------------------------------------------------------------! |
---|
| 92 | zb_i_phy(0) = 0.0 |
---|
| 93 | DO layer = 1, nlay |
---|
| 94 | zb_i_phy(layer) = zb_i_phy(layer-1) + deltaz_i_phy(layer) |
---|
| 95 | END DO ! layer |
---|
| 96 | |
---|
| 97 | END DO ! ji |
---|
| 98 | |
---|
| 99 | !=============================================================================! |
---|
| 100 | !-- End of ice_phy_grid -- |
---|
| 101 | |
---|
| 102 | END |
---|