SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/SURFEX/ocean_mercatorvergrid.F90
Go to the documentation of this file.
00001 !     #########
00002     SUBROUTINE OCEAN_MERCATORVERGRID
00003 !   ######################################################################
00004 !
00005 !!****  *OCEAN_MERCATORVERGRID*  
00006 !!
00007 !!    PURPOSE
00008 !!    -------
00009 !
00010 !     Define the vertical ocean grid
00011 !         
00012 !     
00013 !!**  METHOD
00014 !!    ------
00015 !
00016 !
00017 !
00018 !
00019 !!    EXTERNAL
00020 !!    --------
00021 !!
00022 !!
00023 !!    IMPLICIT ARGUMENTS
00024 !!    ------------------
00025 !!
00026 !!    MODD_OCEAN_CST
00027 !!
00028 !!      
00029 !!    REFERENCE
00030 !!    ---------
00031 !!
00032 !!      
00033 !!    AUTHOR
00034 !!    ------
00035 !!
00036 !!      C. Lebeaupin Brossier  * Meteo-France *
00037 !!
00038 !!    MODIFICATIONS
00039 !!    -------------
00040 !!      Original    01/2008
00041 !-------------------------------------------------------------------------------
00042 !
00043 !*       0.     DECLARATIONS
00044 !               ------------
00045 !
00046 USE MODD_CSTS,ONLY : XPI
00047 USE MODD_SURF_PAR,   ONLY : XUNDEF
00048 USE MODD_OCEAN_GRID_n
00049 !
00050 !
00051 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00052 USE PARKIND1  ,ONLY : JPRB
00053 !
00054 IMPLICIT NONE
00055 !
00056 !*      0.1    declarations of arguments
00057 !*      0.2    declarations of local variables
00058 !
00059 !
00060 REAL                   :: RUP,RDOWN
00061 INTEGER            :: IK1,IK2,IKK1,IMIN,IMAX
00062 INTEGER            :: JLOOP
00063 REAL :: DELTAZ
00064 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00065 !-------------------------------------------------------------------------------
00066 !       1.     Allocations
00067 !              -----------
00068 IF (LHOOK) CALL DR_HOOK('OCEAN_MERCATORVERGRID',0,ZHOOK_HANDLE)
00069 ALLOCATE(XK1        (NOCKMIN:NOCKMAX))
00070 ALLOCATE(XK2        (NOCKMIN:NOCKMAX))
00071 ALLOCATE(XK3        (NOCKMIN:NOCKMAX))
00072 ALLOCATE(XK4        (NOCKMIN:NOCKMAX))
00073 !
00074 ALLOCATE(XZHOC      (NOCKMIN:NOCKMAX))
00075 ALLOCATE(XZ2        (NOCKMIN:NOCKMAX))
00076 ALLOCATE(XDZ1       (NOCKMIN:NOCKMAX))
00077 ALLOCATE(XDZ2       (NOCKMIN:NOCKMAX))
00078 !
00079 ALLOCATE(XRAY       (NOCKMIN:NOCKMAX))
00080 !-------------------------------------------------------------------------------
00081 !       2.     Ocean Grid Levels
00082 !              -----------------
00083 !
00084 DELTAZ=5.
00085 IK1=NOCKMIN+1
00086 IK2=NOCKMIN+2
00087 IKK1=NOCKMAX-1
00088 !NOCKMAX=40
00089 !print*,SIZE(Z1)
00090 !
00091 XZHOC(0)=0.
00092 XZ2(0)=0.
00093 !print*,SIZE(ZDZ1)
00094 XDZ1(0)=XUNDEF
00095 XDZ2(0)=0.
00096 !
00097 XZHOC(IK1)    = -1.
00098 XZHOC(2)      = -5.
00099 XZHOC(3)      = -10.
00100 XZHOC(4)      = -15.
00101 XZHOC(5)      = -20.
00102 XZHOC(6)      = -25.
00103 XZHOC(7)      = -30.
00104 XZHOC(8)      = -40.
00105 XZHOC(9)      = -50.
00106 XZHOC(10)     = -60.
00107 XZHOC(11)     = -75.
00108 XZHOC(12)     = -100.
00109 XZHOC(13)     = -125.
00110 XZHOC(14)     = -150.
00111 XZHOC(15)     = -175.
00112 XZHOC(16)     = -200.
00113 XZHOC(17)     = -225.
00114 XZHOC(18)     = -250.
00115 XZHOC(19)     = -300.
00116 XZHOC(20)     = -400.
00117 XZHOC(21)     = -500.
00118 XZHOC(22)     = -600.
00119 XZHOC(23)     = -700.
00120 XZHOC(24)     = -800.
00121 XZHOC(25)     = -900.
00122 XZHOC(26)     = -1000.
00123 XZHOC(27)     = -1100.
00124 XZHOC(28)     = -1200.
00125 XZHOC(29)     = -1300.
00126 XZHOC(30)     = -1400.
00127 XZHOC(31)     = -1500.
00128 XZHOC(32)     = -1750.
00129 XZHOC(33)     = -2000.
00130 XZHOC(34)     = -2250.
00131 XZHOC(35)     = -2500.
00132 XZHOC(36)     = -2750.
00133 XZHOC(37)     = -3000.
00134 XZHOC(38)     = -3250.
00135 XZHOC(IKK1)   = -3500.
00136 XZHOC(NOCKMAX)  = -4000.
00137 
00138 DO JLOOP=IK1,IKK1
00139   XZ2(JLOOP)   = ((XZHOC(JLOOP+1)-XZHOC(JLOOP))/2.)+XZHOC(JLOOP)
00140 ENDDO
00141 XZ2(NOCKMAX)  = -4250.
00142 
00143 DO JLOOP=IK1,IKK1
00144   XDZ1(JLOOP)  = -XZHOC(JLOOP+1)+XZHOC(JLOOP)
00145   XDZ2(JLOOP)  = -XZ2(JLOOP)+XZ2(JLOOP-1)
00146 ENDDO
00147 
00148 XDZ2(NOCKMAX) = -XZ2(NOCKMAX)+XZ2(IKK1)
00149 XDZ1(NOCKMAX) = XDZ1(IKK1)
00150 !
00151 !!
00152 !!
00153 !!       3.     Grid Parameters
00154 !!              ---------------
00155 RUP=1.
00156 DO JLOOP=IK1,NOCKMAX
00157   XK1(JLOOP)=-1. / (XDZ2(JLOOP)*XDZ1(JLOOP-1))
00158   XK4(JLOOP)= 1. / (XDZ1(JLOOP)*XDZ1(JLOOP))
00159   RDOWN= RAYO(XZ2(JLOOP))
00160   XRAY(JLOOP)= RUP-RDOWN
00161   RUP=RDOWN
00162 ENDDO
00163 DO JLOOP=IK1,IKK1
00164   XK2(JLOOP)=-1. / (XDZ2(JLOOP)*XDZ1(JLOOP))
00165   XK3(JLOOP)=-1. / (XDZ1(JLOOP)*XDZ2(JLOOP+1))
00166 ENDDO
00167 XK2(NOCKMAX)=XK2(IKK1)
00168 XK3(NOCKMAX)=0.
00169 !
00170 !-------------------------------------------------------------------------------
00171 IF (LHOOK) CALL DR_HOOK('OCEAN_MERCATORVERGRID',1,ZHOOK_HANDLE)
00172 CONTAINS
00173 !rayo
00174 !-------------------------------------------------------------------------------
00175 !
00176 !-------------------------------------------------------------------------------
00177 !!              #########################################
00178              FUNCTION RAYO(Z) RESULT(RR)
00179 !              #########################################
00180 !
00181 !
00182 !!****  *RAYOFCTX* 
00183 !!
00184 !!    PURPOSE
00185 !!    -------
00186 !compute solar penetration coefficient
00187 !    
00188 !!**  METHOD
00189 !!    ------
00190 !
00191 !!    EXTERNAL
00192 !!    --------
00193 !!
00194 !!    IMPLICIT ARGUMENTS
00195 !!    ------------------
00196 !!     
00197 !!    REFERENCE
00198 !!    ---------
00199 !!    Paulson and Simpson 1977
00200 !!     
00201 !!    AUTHOR
00202 !!    ------
00203 !!     C. Lebeaupin  *Meteo-France* (adapted from S. Belamari's code)
00204 !!
00205 !!    MODIFICATIONS
00206 !!    -------------
00207 !!      Original     27/02/2006
00208 !!
00209 !-------------------------------------------------------------------------------
00210 !
00211 !*       0.     DECLARATIONS
00212 !
00213 USE MODD_OCEAN_CSTS,ONLY : XR,XD1,XD2
00214 !
00215 !*      0.1    declarations of arguments
00216 !
00217 REAL :: RR,Z      
00218 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00219 
00220 !
00221 !-------------------------------------------------------------------------------
00222 !
00223 !*       1.     COMPUTE RAYO
00224 !               ------------
00225 !
00226 IF (LHOOK) CALL DR_HOOK('RAYO',0,ZHOOK_HANDLE)
00227 RR = XR*EXP(Z/XD1) + (1-XR)*EXP(Z/XD2)
00228 IF (LHOOK) CALL DR_HOOK('RAYO',1,ZHOOK_HANDLE)
00229 !
00230 END FUNCTION RAYO
00231 !
00232 !-------------------------------------------------------------------------------
00233 END SUBROUTINE OCEAN_MERCATORVERGRID