Changeset 18 for trunk/NEMO
- Timestamp:
- 2004-02-17T09:36:18+01:00 (20 years ago)
- Location:
- trunk/NEMO/OPA_SRC/SBC
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMO/OPA_SRC/SBC/blk_oce.F90
r3 r18 17 17 18 18 IMPLICIT NONE 19 LOGICAL, PUBLIC :: l_bulk = .TRUE. 19 20 LOGICAL, PUBLIC :: l_bulk = .TRUE. !: 20 21 21 22 !!---------------------------------------------------------------------- … … 23 24 !!---------------------------------------------------------------------- 24 25 25 REAL(wp), DIMENSION(jpi,jpj) :: &26 watm , & !precipitation27 tatm , & !atmospheric temperature28 hatm , & !relative humidity29 vatm , & !wind speed30 catm !percent of cloud cover26 REAL(wp), PUBLIC, DIMENSION(jpi,jpj) :: & !: 27 watm , & !: precipitation 28 tatm , & !: atmospheric temperature 29 hatm , & !: relative humidity 30 vatm , & !: wind speed 31 catm !: percent of cloud cover 31 32 32 REAL(wp), DIMENSION(jpi,jpj) :: &33 gsst , & ! SST mean on nfbulk ocean time step34 gsss ! SSS mean on nfbulk ocean time step33 REAL(wp), PUBLIC, DIMENSION(jpi,jpj) :: & !: 34 gsst , & !: SST mean on nfbulk ocean time step 35 gsss !: SSS mean on nfbulk ocean time step 35 36 36 37 REAL(wp) :: & 37 yearday , & ! number of days per year38 rdtbs2 ! bulk time step divide by 238 yearday , & !: number of days per year 39 rdtbs2 !: bulk time step divide by 2 39 40 #else 40 41 !!---------------------------------------------------------------------- 41 42 !! Default option Empty module 42 43 !!---------------------------------------------------------------------- 43 LOGICAL, PUBLIC :: l_bulk = .FALSE. 44 LOGICAL, PUBLIC :: l_bulk = .FALSE. !: 44 45 #endif 45 46 46 INTEGER :: & !! !namdom : space/time domain (namlist)47 nfbulk = 5 !bulk computation frequency47 INTEGER :: & !!: namdom : space/time domain (namlist) 48 nfbulk = 5 !: bulk computation frequency 48 49 !!---------------------------------------------------------------------- 49 50 END MODULE blk_oce -
trunk/NEMO/OPA_SRC/SBC/flx_bulk_daily.h90
r3 r18 59 59 USE blk_oce ! bulk variable 60 60 USE bulk ! bulk module 61 61 62 !! * arguments 62 63 INTEGER, INTENT( in ) :: kt ! ocean time step … … 64 65 !! * Local declarations 65 66 INTEGER , PARAMETER :: jpday = 365, jpmois = 12 66 INTEGER :: ji,jj 67 INTEGER :: i15,iday, idy 68 INTEGER , DIMENSION(jpday) :: istep_n 69 INTEGER , DIMENSION(jpmois):: istep_c, istep_x 70 INTEGER :: itime 71 REAL(wp) :: zdate0 72 REAL(wp), DIMENSION(jpi,jpj) :: & 73 zsst, & ! ??? 74 zlon , & ! ??? 75 zlat ! ??? 76 77 REAL(wp), DIMENSION(jpk) :: & 78 zlev ! ??? 79 REAL(wp) :: zxy 80 INTEGER :: ipi,ipj,ipk 81 INTEGER :: iman,imois,imois2 67 INTEGER :: i15,iday, idy 68 INTEGER :: ipi,ipj,ipk 69 INTEGER :: iman,imois,imois2 70 INTEGER, DIMENSION(jpday) :: istep_n 71 INTEGER, DIMENSION(jpmois):: istep_c, istep_x 72 INTEGER :: itime 73 REAL(wp) :: zdate0, zxy 74 REAL(wp), DIMENSION(jpi,jpj) :: zlon, zlat ! ??? 75 REAL(wp), DIMENSION(jpk) :: zlev ! ??? 82 76 CHARACTER(len=45) :: & 83 77 clname_n = 'NCEP_1d_0101_0112_tair.nc', & -
trunk/NEMO/OPA_SRC/SBC/flx_forced_daily.h90
r3 r18 70 70 71 71 72 #if defined key_mpp 73 == >> forced compile error: 74 flx_forced_daily : Reading Netcdf file in mpp Not yet implemented 75 #endif 72 IF( lk_mpp ) THEN 73 IF(lwp) WRITE(numout,cform_err) 74 IF(lwp) WRITE(numout,*) 'flx_forced_daily: netcdf & mpp not yet possible' 75 nstop = nstop + 1 76 ENDIF 76 77 77 78 ! Initialization -
trunk/NEMO/OPA_SRC/SBC/flx_oce.F90
r3 r18 13 13 14 14 IMPLICIT NONE 15 PRIVATE 16 15 17 16 18 !!---------------------------------------------------------------------- … … 21 23 !! 'key_flx_forced_daily' 22 24 !!---------------------------------------------------------------------- 23 REAL(wp), DIMENSION(jpi,jpj,3) :: &24 p_qt , & ! total heat flux ( solar + non solar)25 p_qsr, & ! solar heat flux26 p_emp ! evaporation minus precipitation25 REAL(wp), PUBLIC, DIMENSION(jpi,jpj,3) :: & !: 26 p_qt , & !: total heat flux ( solar + non solar) 27 p_qsr, & !: solar heat flux 28 p_emp !: evaporation minus precipitation 27 29 28 30 #elif defined key_ice_lim || defined key_flx_bulk_monthly || defined key_flx_bulk_daily 29 REAL(wp), DIMENSION(jpi,jpj) :: &30 qsr_ice , & ! solar flux over ice31 qsr_oce , & ! solar flux over ocean32 qnsr_oce , & ! total non solar heat flux (Longwave downward radiation) over ocean33 qnsr_ice , & ! total non solar heat flux (Longwave downward radiation) over ice34 tprecip , & ! total precipitation ( or liquid precip minus evaporation in coupled mode)35 sprecip , & ! solid (snow) precipitation36 dqns_ice , & ! total non solar sensibility over ice (LW+SEN+LA)37 tn_ice , & ! ice surface temperature31 REAL(wp), PUBLIC, DIMENSION(jpi,jpj) :: & !: 32 qsr_ice , & !: solar flux over ice 33 qsr_oce , & !: solar flux over ocean 34 qnsr_oce , & !: total non solar heat flux (Longwave downward radiation) over ocean 35 qnsr_ice , & !: total non solar heat flux (Longwave downward radiation) over ice 36 tprecip , & !: total precipitation ( or liquid precip minus evaporation in coupled mode) 37 sprecip , & !: solid (snow) precipitation 38 dqns_ice , & !: total non solar sensibility over ice (LW+SEN+LA) 39 tn_ice , & !: ice surface temperature 38 40 #if ! defined key_coupled 39 fr1_i0 , & ! 1st part of the fraction of sol. rad. which penetrate inside the ice cover40 fr2_i0 , & ! 2nd part of the fraction of sol. rad. which penetrate inside the ice cover41 qla_ice , & ! latent flux over ice42 dqla_ice , & ! latent sensibility over ice43 evap ! evaporation over ocean41 fr1_i0 , & !: 1st part of the fraction of sol. rad. which penetrate inside the ice cover 42 fr2_i0 , & !: 2nd part of the fraction of sol. rad. which penetrate inside the ice cover 43 qla_ice , & !: latent flux over ice 44 dqla_ice , & !: latent sensibility over ice 45 evap !: evaporation over ocean 44 46 #else 45 rrunoff , & ! runoff46 calving , !calving47 alb_ice ! albedo of ice47 rrunoff , & !: runoff 48 calving , & !: calving 49 alb_ice !: albedo of ice 48 50 #endif 49 51 -
trunk/NEMO/OPA_SRC/SBC/flxblk.F90
r3 r18 16 16 USE oce ! ocean dynamics and tracers 17 17 USE dom_oce ! ocean space and time domain 18 USE cpl_oce ! ??? 18 19 USE phycst ! physical constants 19 20 USE daymod … … 555 556 zpsil = zpsih 556 557 557 zvatmg = MAX( 0.032 * 1.5e-3 * vatm(ji,jj) * vatm(ji,jj) / g , zeps )558 zvatmg = MAX( 0.032 * 1.5e-3 * vatm(ji,jj) * vatm(ji,jj) / grav, zeps ) 558 559 !i 559 560 !! if( zvatmg == 0.e0 ) then -
trunk/NEMO/OPA_SRC/SBC/flxfwb.F90
r3 r18 6 6 #if defined key_dynspg_fsc 7 7 !!---------------------------------------------------------------------- 8 !! 'key_dynspg_fsc' No free surface with constant volume 9 !!---------------------------------------------------------------------- 8 10 !! flx_fwb : freshwater budget for global ocean configurations 9 11 !! in free surface and forced mode … … 13 15 USE oce ! ocean dynamics and tracers 14 16 USE dom_oce ! ocean space and time domain 17 USE cpl_oce ! coupled atmosphere/ocean 15 18 USE phycst ! physical constants 16 19 USE in_out_manager ! I/O manager … … 30 33 31 34 !! * Share module variables 32 LOGICAL, PUBLIC :: & !!!* namelist *33 ln_fwb = .TRUE. !Flag to activate the fwb computation34 REAL(wp), PUBLIC :: & 35 a_fwb_b , & !annual domain averaged freshwater budget36 a_fwb !for 2 year before (_b) and before year.35 LOGICAL, PUBLIC :: & !!: * namelist * 36 ln_fwb = .TRUE. !: Flag to activate the fwb computation 37 REAL(wp), PUBLIC :: & !: 38 a_fwb_b , & !: annual domain averaged freshwater budget 39 a_fwb !: for 2 year before (_b) and before year. 37 40 38 41 !! * Module variables … … 103 106 e1e2_i(:,:) = e1t(:,:) * e2t(:,:) * tmask_i(:,:) 104 107 a_sshb = SUM( e1e2_i(:,:) * sshn(:,:) ) 108 IF( lk_mpp ) CALL mpp_sum( a_sshb ) ! sum over all the global domain 105 109 DO jk = 1, jpkm1 106 110 DO jj = 2, jpjm1 … … 111 115 END DO 112 116 END DO 113 #if defined key_mpp 114 ! Mpp: sum over all the global domain 115 CALL mpp_sum( a_sshb ) 116 CALL mpp_sum( a_sal000 ) 117 #endif 117 IF( lk_mpp ) CALL mpp_sum( a_sal000 ) ! sum over the global domain 118 118 119 119 ENDIF … … 122 122 ! --------------------------------------====---------- 123 123 a_emp = SUM( e1e2_i(:,:) * emp (:,:) ) 124 IF( lk_mpp ) CALL mpp_sum( a_emp ) ! sum over the global domain 124 125 #if defined key_flx_bulk_monthly || defined key_flx_bulk_daily 125 126 a_precip = SUM( e1e2_i(:,:) * watm (:,:) ) 127 IF( lk_mpp ) CALL mpp_sum( a_precip ) ! sum over the global domain 126 128 #endif 127 129 a_rnf = SUM( e1e2_i(:,:) * runoff(:,:) ) 130 IF( lk_mpp ) CALL mpp_sum( a_rnf ) ! sum over the global domain 128 131 129 132 IF( aminus /= 0.0 ) a_aminus = a_aminus + ( MIN( aplus, aminus ) / aminus ) 130 133 IF( aplus /= 0.0 ) a_aplus = a_aplus + ( MIN( aplus, aminus ) / aplus ) 131 134 132 #if defined key_mpp133 ! Mpp: sum over all the global domain134 CALL mpp_sum( a_emp )135 #if defined key_flx_bulk_monthly || defined key_flx_bulk_daily136 CALL mpp_sum( a_precip )137 #endif138 CALL mpp_sum( a_rnf )139 #endif140 141 135 142 136 ! Update empold if new year start 143 ikty = 365 * 86400 / rdttra(1)137 ikty = 365 * 86400 / rdttra(1) !!bug use of 365 days leap year or 360d year !!!!!!! 144 138 IF( MOD( kt, ikty ) == 0 ) THEN 145 zarea = SUM( e1e2_i(:,:) ) 146 a_fwb_b = a_fwb 147 a_fwb = SUM( e1e2_i(:,:) * sshn(:,:) ) 148 #if defined key_mpp 149 ! Mpp: sum over all the global domain 150 CALL mpp_sum( zarea ) 151 CALL mpp_sum( a_fwb ) 152 #endif 153 a_fwb = a_fwb * 1.e+3 / ( zarea * 86400. * 365. ) ! convert in Kg/m3/s = mm/s 154 155 empold = 2. * a_fwb - a_fwb_b ! current year freshwater budget correction 156 ! ! estimate from the 2 previous years budget 157 139 zarea = SUM( e1e2_i(:,:) ) 140 IF( lk_mpp ) CALL mpp_sum( zarea ) ! sum over the global domain 141 a_fwb_b = a_fwb 142 a_fwb = SUM( e1e2_i(:,:) * sshn(:,:) ) 143 IF( lk_mpp ) CALL mpp_sum( a_fwb ) ! sum over the global domain 144 145 a_fwb = a_fwb * 1.e+3 / ( zarea * 86400. * 365. ) ! convert in Kg/m3/s = mm/s 146 ! !!bug 365d year 147 empold = 2. * a_fwb - a_fwb_b ! current year freshwater budget correction 148 ! ! estimate from the 2 previous years budget 158 149 ENDIF 159 150 … … 176 167 END DO 177 168 END DO 178 #if defined key_mpp 179 ! Mpp: sum over all the global domain 180 CALL mpp_sum( zarea ) 181 CALL mpp_sum( a_sshend ) 182 CALL mpp_sum( a_salend ) 183 #endif 169 IF( lk_mpp ) THEN 170 CALL mpp_sum( zarea ) ! sums over all the global domain 171 CALL mpp_sum( a_sshend ) 172 CALL mpp_sum( a_salend ) 173 ENDIF 184 174 185 175 a_aminus = a_aminus / ( nitend - nit000 + 1 ) … … 281 271 IF(lwp) WRITE ' Rigid-lid option, fwb correction is useless, but valid' 282 272 #endif 283 #if defined key_coupled 284 IF(lwp) WRITE' Coupled option, fwb correction is a flux correction ! '285 IF(lwp) WRITE' ln_fwb = .FALSE. is recommanded'286 #endif 287 288 ! ! ==============================273 IF( lk_cpl ) THEN 274 IF(lwp) WRITE(numout,*) ' Coupled option, fwb correction is a flux correction ! ' 275 IF(lwp) WRITE(numout,*) ' ln_fwb = .FALSE. is recommanded' 276 ENDIF 277 278 ! ! ============================== 289 279 IF( ln_fwb ) THEN ! Freshwater budget correction 290 ! ! ==============================280 ! ! ============================== 291 281 ! Read the corrective factor on precipitations (empold) 292 282 INQUIRE( FILE=clname, EXIST=llbon ) … … 317 307 318 308 #else 309 !!---------------------------------------------------------------------- 310 !! Default case : 311 !!---------------------------------------------------------------------- 312 LOGICAL, PUBLIC :: ln_fwb = .FALSE. !: no fwb forced 319 313 CONTAINS 320 SUBROUTINE flx_fwb 314 SUBROUTINE flx_fwb( kt ) ! dummy routine 315 WRITE(*,*) 'flx_fwb: You should not have seen this print! error?', kt 321 316 END SUBROUTINE flx_fwb 322 317 SUBROUTINE flx_fwb_init -
trunk/NEMO/OPA_SRC/SBC/flxrnf.F90
r3 r18 27 27 PRIVATE 28 28 29 !! * Routine accessibility 30 PUBLIC flx_rnf ! routine call by step.F90 31 29 32 !! * Shared module variables 30 PUBLIC flx_rnf ! routine call by step.F90 31 REAL(wp), PUBLIC, DIMENSION(jpi,jpj) :: & 32 runoff, & ! monthly runoff (kg/m2/s) 33 upsadv, & ! mixed adv scheme in straits vicinity (hori.) 34 upsrnfh ! mixed adv scheme in runoffs vicinity (hori.) 35 REAL(wp), PUBLIC, DIMENSION(jpk) :: & 36 upsrnfz ! mixed adv scheme in runoffs vicinity (vert.) 37 INTEGER, PUBLIC :: & 38 numrof = 48 , & ! logical unit for runoff data 39 nrunoff = 0 , & ! runoff option (namelist) 40 nrnf1, nrnf2 ! first and second record used 33 REAL(wp), PUBLIC, DIMENSION(jpi,jpj) :: & !: 34 runoff, & !: monthly runoff (kg/m2/s) 35 upsadv, & !: mixed adv scheme in straits vicinity (hori.) 36 upsrnfh !: mixed adv scheme in runoffs vicinity (hori.) 37 REAL(wp), PUBLIC, DIMENSION(jpk) :: & !: 38 upsrnfz !: mixed adv scheme in runoffs vicinity (vert.) 39 INTEGER, PUBLIC :: & !: 40 numrof = 48 , & !: logical unit for runoff data 41 nrunoff = 0 , & !: runoff option (namelist) 42 nrnf1, nrnf2 !: first and second record used 41 43 42 44 !! * Module variable 43 REAL(wp), DIMENSION(jpi,jpj,2) :: & 44 rnfdta !monthly runoff data array (kg/m2/s)45 REAL(wp), DIMENSION(jpi,jpj,2) :: & !: 46 rnfdta !: monthly runoff data array (kg/m2/s) 45 47 !!---------------------------------------------------------------------- 46 48 !! OPA 9.0 , LODYC-IPSL (2003) … … 104 106 INTEGER :: ji, jj ! dummy loop indices 105 107 INTEGER :: ipi, ipj, ipk ! temporary integers 108 INTEGER :: ii0, ii1, ij0, ij1 ! " " 106 109 INTEGER, DIMENSION(jpmois) :: & 107 110 istep ! temporary workspace … … 298 301 299 302 IF( cp_cfg == "orca" .AND. jp_cfg == 2 ) THEN 300 ! ORCA_R2 configuration : 301 ! upstream scheme in the Sound Strait302 upsrnfh( mi0(144):mi1(144) , mj0(116):mj1(116) ) = 0.25303 upsrnfh( mi0(145):mi1(147) , mj0(116):mj1(116) ) = 0.50304 upsrnfh( mi0(148):mi1(148) , mj0(116):mj1(116) ) = 0.25303 ! ORCA_R2 configuration : upstream scheme in the Sound Strait 304 ij0 = 116 ; ij1 = 116 305 ii0 = 144 ; ii1 = 144 ; upsrnfh( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 0.25 306 ii0 = 145 ; ii1 = 147 ; upsrnfh( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 0.50 307 ii0 = 148 ; ii1 = 148 ; upsrnfh( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 0.25 305 308 ENDIF 306 309 … … 318 321 ! ! ======================= 319 322 320 ! ! Gibraltar Strait 321 upsadv( mi0(70):mi1(71) , mj0(52):mj1(53) ) = 0.50 323 ! ! Gibraltar Strait 324 ii0 = 70 ; ii1 = 71 325 ij0 = 52 ; ij1 = 53 ; upsadv( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 0.50 322 326 323 327 ! ! ======================= … … 326 330 327 331 ! ! Gibraltar Strait 328 upsadv( mi0(138):mi1(138) , mj0(102):mj1(102) ) = 0.20 329 upsadv( mi0(139):mi1(139) , mj0(102):mj1(102) ) = 0.40 330 upsadv( mi0(140):mi1(140) , mj0(102):mj1(102) ) = 0.50 331 upsadv( mi0(141):mi1(141) , mj0(101):mj1(102) ) = 0.50 332 ij0 = 102 ; ij1 = 102 333 ii0 = 138 ; ii1 = 138 ; upsadv( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 0.20 334 ii0 = 139 ; ii1 = 139 ; upsadv( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 0.40 335 ii0 = 140 ; ii1 = 140 ; upsadv( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 0.50 336 ij0 = 101 ; ij1 = 102 337 ii0 = 141 ; ii1 = 141 ; upsadv( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 0.50 332 338 333 339 ! ! Bab el Mandeb Strait 334 upsadv( mi0(164):mi1(164) , mj0( 87):mj1( 88) ) = 0.10 335 upsadv( mi0(163):mi1(163) , mj0( 88):mj1( 88) ) = 0.25 336 upsadv( mi0(162):mi1(162) , mj0( 88):mj1( 88) ) = 0.40 337 upsadv( mi0(160):mi1(161) , mj0( 88):mj1( 88) ) = 0.50 338 upsadv( mi0(158):mi1(160) , mj0( 89):mj1( 89) ) = 0.25 339 upsadv( mi0(160):mi1(160) , mj0( 90):mj1( 90) ) = 0.25 340 ij0 = 87 ; ij1 = 88 341 ii0 = 164 ; ii1 = 164 ; upsadv( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 0.10 342 ij0 = 88 ; ij1 = 88 343 ii0 = 163 ; ii1 = 163 ; upsadv( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 0.25 344 ii0 = 162 ; ii1 = 162 ; upsadv( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 0.40 345 ii0 = 160 ; ii1 = 161 ; upsadv( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 0.50 346 ij0 = 89 ; ij1 = 89 347 ii0 = 158 ; ii1 = 160 ; upsadv( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 0.25 348 ij0 = 90 ; ij1 = 90 349 ii0 = 160 ; ii1 = 160 ; upsadv( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 0.25 340 350 341 351 ! ! Sound Strait 342 upsadv( mi0(145):mi1(147) , mj0(116):mj1(116) ) = 0.50 352 ij0 = 116 ; ij1 = 116 353 ii0 = 145 ; ii1 = 147 ; upsadv( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 0.50 343 354 344 355 END SELECT -
trunk/NEMO/OPA_SRC/SBC/flxrnf_ORCA_R05.h90
r3 r18 13 13 PRIVATE 14 14 15 !! * Routine accessibility 16 PUBLIC flx_rnf ! routine call by step.F90 17 15 18 !! * Shared module variables 16 PUBLIC flx_rnf ! routine call by step.F90 17 REAL(wp), PUBLIC, DIMENSION(jpi,jpj) :: & 18 runoff, & ! monthly runoff (kg/m2/s) 19 upsadv, & ! mixed adv scheme in straits vicinity (hori.) 20 upsrnfh ! mixed adv scheme in runoffs vicinity (hori.) 21 REAL(wp), PUBLIC, DIMENSION(jpk) :: & 22 upsrnfz ! mixed adv scheme in runoffs vicinity (vert.) 23 INTEGER, PUBLIC :: & 24 numrof = 48 , & ! logical unit for runoff data 25 nrunoff = 0 , & ! runoff option (namelist) 26 nrnf1, nrnf2 ! first and second record used 19 REAL(wp), PUBLIC, DIMENSION(jpi,jpj) :: & !: 20 runoff, & !: monthly runoff (kg/m2/s) 21 upsadv, & !: mixed adv scheme in straits vicinity (hori.) 22 upsrnfh !: mixed adv scheme in runoffs vicinity (hori.) 23 REAL(wp), PUBLIC, DIMENSION(jpk) :: & !: 24 upsrnfz !: mixed adv scheme in runoffs vicinity (vert.) 25 INTEGER , PUBLIC :: & !: 26 numrof = 48 , & !: logical unit for runoff data 27 nrunoff = 0 , & !: runoff option (namelist) 28 nrnf1, nrnf2 !: first and second record used 27 29 28 30 !! * Module variable 29 REAL(wp), DIMENSION(jpi,jpj,2) :: & 30 rnfdta !monthly runoff data array (kg/m2/s)31 REAL(wp), DIMENSION(jpi,jpj,2) :: & !: 32 rnfdta !: monthly runoff data array (kg/m2/s) 31 33 !!---------------------------------------------------------------------- 32 34 !! OPA 9.0 , LODYC-IPSL (2003) … … 88 90 !!---------------------------------------------------------------------- 89 91 !! * Local declarations 90 INTEGER :: jpmois 91 INTEGER :: & 92 jpriv, & ! jpriv : maximum river number 93 jpcoef ! jpcoef: maximum point number 94 INTEGER, PARAMETER :: jpmois=12, jpriv=120, jpcoef=20 92 INTEGER, PARAMETER :: & 93 jpmois=12, & ! number of month in the year ! 94 jpriv=120, & ! maximum number of rivers 95 jpcoef=20 ! maximum number of gridpoints for mouth rivers 95 96 96 97 INTEGER :: ji, jj, jl, jm, jn, jr, jc 97 98 INTEGER :: i15, imois, iman 98 99 INTEGER :: inbp, idbd, idmeom 99 INTEGER :: iipt0, iipt1, ijpt0, ijpt1, ii, ij100 100 INTEGER :: iirnf(jpcoef,jpriv),ijrnf(jpcoef,jpriv) 101 101 INTEGER :: inb(jpriv) … … 1040 1040 END DO 1041 1041 ! ji-1,jj-2 1042 ijpt0 = MAX( 1, MIN( ij-2,jpj ) ) 1043 ijpt1 = MAX( 0, MIN( ij-2,jpj-1) ) 1044 DO jj = ijpt0, ijpt1 1045 DO ji = iipt0, iipt1 1042 DO jj = mj0(ijrnf(jl,jr) - 2), mj1(ijrnf(jl,jr) - 2) 1043 DO ji = mi0(iirnf(jl,jr) - 1), mi1(iirnf(jl,jr) - 1) 1046 1044 DO jn = 1, 3 1047 1045 zcoefr(ji,jj,jn) = MAX( zrup3, zcoefr(ji,jj,jn) ) … … 1050 1048 END DO 1051 1049 ! ji,jj-2 1052 iipt0 = MAX( 1, MIN( ii,jpi ) ) 1053 iipt1 = MAX( 0, MIN( ii,jpi-1) ) 1054 DO jj = ijpt0, ijpt1 1055 DO ji = iipt0, iipt1 1050 DO jj = mj0(ijrnf(jl,jr) - 2), mj1(ijrnf(jl,jr) - 2) 1051 DO ji = mi0(iirnf(jl,jr) ), mi1(iirnf(jl,jr) ) 1056 1052 DO jn = 1, 3 1057 1053 zcoefr(ji,jj,jn) = MAX( zrup3, zcoefr(ji,jj,jn) ) … … 1060 1056 END DO 1061 1057 ! ji,jj+2 1062 ijpt0 = MAX( 1, MIN( ij+2,jpj ) ) 1063 ijpt1 = MAX( 0, MIN( ij+2,jpj-1) ) 1064 DO jj = ijpt0, ijpt1 1065 DO ji = iipt0, iipt1 1058 DO jj = mj0(ijrnf(jl,jr) + 2), mj1(ijrnf(jl,jr) + 2) 1059 DO ji = mi0(iirnf(jl,jr) ), mi1(iirnf(jl,jr) ) 1066 1060 DO jn = 1, 3 1067 1061 zcoefr(ji,jj,jn) = MAX( zrup3, zcoefr(ji,jj,jn) ) … … 1070 1064 END DO 1071 1065 ! ji+1,jj-2 1072 iipt0 = MAX( 1, MIN( ii+1,jpi ) ) 1073 iipt1 = MAX( 0, MIN( ii+1,jpi-1) ) 1074 DO jj = ijpt0, ijpt1 1075 DO ji = iipt0, iipt1 1066 DO jj = mj0(ijrnf(jl,jr) - 2), mj1(ijrnf(jl,jr) - 2) 1067 DO ji = mi0(iirnf(jl,jr) + 1), mi1(iirnf(jl,jr) + 1) 1076 1068 DO jn = 1, 3 1077 1069 zcoefr(ji,jj,jn) = MAX( zrup3, zcoefr(ji,jj,jn) ) … … 1080 1072 END DO 1081 1073 ! ji+1,jj+2 1082 ijpt0 = MAX( 1, MIN( ij+2,jpj ) ) 1083 ijpt1 = MAX( 0, MIN( ij+2,jpj-1) ) 1084 DO jj = ijpt0, ijpt1 1085 DO ji = iipt0, iipt1 1074 DO jj = mj0(ijrnf(jl,jr) + 2), mj1(ijrnf(jl,jr) + 2) 1075 DO ji = mi0(iirnf(jl,jr) + 1), mi1(iirnf(jl,jr) + 1) 1086 1076 DO jn = 1, 3 1087 1077 zcoefr(ji,jj,jn) = MAX( zrup3, zcoefr(ji,jj,jn) ) … … 1090 1080 END DO 1091 1081 ! ji+2,jj-2 1092 iipt0 = MAX( 1, MIN( ii+2,jpi ) ) 1093 iipt1 = MAX( 0, MIN( ii+2,jpi-1) ) 1094 DO jj = ijpt0, ijpt1 1095 DO ji = iipt0, iipt1 1082 DO jj = mj0(ijrnf(jl,jr) - 2), mj1(ijrnf(jl,jr) - 2) 1083 DO ji = mi0(iirnf(jl,jr) + 2), mi1(iirnf(jl,jr) + 2) 1096 1084 DO jn = 1, 3 1097 1085 zcoefr(ji,jj,jn) = MAX( zrup3, zcoefr(ji,jj,jn) ) … … 1100 1088 END DO 1101 1089 ! ji+2,jj+2 1102 ijpt0 = MAX( 1, MIN( ij+2,jpj ) ) 1103 ijpt1 = MAX( 0, MIN( ij+2,jpj-1) ) 1104 DO jj = ijpt0, ijpt1 1105 DO ji = iipt0, iipt1 1090 DO jj = mj0(ijrnf(jl,jr) + 2), mj1(ijrnf(jl,jr) + 2) 1091 DO ji = mi0(iirnf(jl,jr) + 1), mi1(iirnf(jl,jr) + 1) 1106 1092 DO jn = 1, 3 1107 1093 zcoefr(ji,jj,jn) = MAX( zrup3, zcoefr(ji,jj,jn) ) … … 1110 1096 END DO 1111 1097 ! ji+2,jj-1 1112 ijpt0 = MAX( 1, MIN( ij-1,jpj ) ) 1113 ijpt1 = MAX( 0, MIN( ij-1,jpj-1) ) 1114 DO jj = ijpt0, ijpt1 1115 DO ji = iipt0, iipt1 1098 DO jj = mj0(ijrnf(jl,jr) - 1), mj1(ijrnf(jl,jr) - 1) 1099 DO ji = mi0(iirnf(jl,jr) + 2), mi1(iirnf(jl,jr) + 2) 1116 1100 DO jn = 1, 3 1117 1101 zcoefr(ji,jj,jn) = MAX( zrup3, zcoefr(ji,jj,jn) ) … … 1120 1104 END DO 1121 1105 ! ji+2,jj+1 1122 ijpt0 = MAX( 1, MIN( ij+1,jpj ) ) 1123 ijpt1 = MAX( 0, MIN( ij+1,jpj-1) ) 1124 DO jj = ijpt0, ijpt1 1125 DO ji = iipt0, iipt1 1106 DO jj = mj0(ijrnf(jl,jr) + 1), mj1(ijrnf(jl,jr) + 1) 1107 DO ji = mi0(iirnf(jl,jr) + 2), mi1(iirnf(jl,jr) + 2) 1126 1108 DO jn = 1, 3 1127 1109 zcoefr(ji,jj,jn) = MAX( zrup3, zcoefr(ji,jj,jn) ) … … 1130 1112 END DO 1131 1113 ! ji+2,jj 1132 ijpt0 = MAX( 1, MIN( ij,jpj ) ) 1133 ijpt1 = MAX( 0, MIN( ij,jpj-1) ) 1134 DO jj = ijpt0, ijpt1 1135 DO ji = iipt0, iipt1 1114 DO jj = mj0(ijrnf(jl,jr) ), mj1(ijrnf(jl,jr) ) 1115 DO ji = mi0(iirnf(jl,jr) + 2), mi1(iirnf(jl,jr) + 2) 1136 1116 DO jn = 1, 3 1137 1117 zcoefr(ji,jj,jn) = MAX( zrup3, zcoefr(ji,jj,jn) ) … … 1140 1120 END DO 1141 1121 ! ji-2,jj 1142 iipt0 = MAX( 1, MIN( ii-2,jpi ) ) 1143 iipt1 = MAX( 0, MIN( ii-2,jpi-1) ) 1144 DO jj = ijpt0, ijpt1 1145 DO ji = iipt0, iipt1 1122 DO jj = mj0(ijrnf(jl,jr) ), mj1(ijrnf(jl,jr) ) 1123 DO ji = mi0(iirnf(jl,jr) - 2), mi1(iirnf(jl,jr) - 2) 1146 1124 DO jn = 1, 3 1147 1125 zcoefr(ji,jj,jn) = MAX( zrup3, zcoefr(ji,jj,jn) ) … … 1150 1128 END DO 1151 1129 ! ji-2,jj-2 1152 ijpt0 = MAX( 1, MIN( ij-2,jpj ) ) 1153 ijpt1 = MAX( 0, MIN( ij-2,jpj-1) ) 1154 DO jj = ijpt0, ijpt1 1155 DO ji = iipt0, iipt1 1130 DO jj = mj0(ijrnf(jl,jr) - 2), mj1(ijrnf(jl,jr) - 2) 1131 DO ji = mi0(iirnf(jl,jr) - 2), mi1(iirnf(jl,jr) - 2) 1156 1132 DO jn = 1, 3 1157 1133 zcoefr(ji,jj,jn) = MAX( zrup3, zcoefr(ji,jj,jn) ) … … 1160 1136 END DO 1161 1137 ! ji-2,jj+2 1162 ijpt0 = MAX( 1, MIN( ij+2,jpj ) ) 1163 ijpt1 = MAX( 0, MIN( ij+2,jpj-1) ) 1164 DO jj = ijpt0, ijpt1 1165 DO ji = iipt0, iipt1 1138 DO jj = mj0(ijrnf(jl,jr) + 2), mj1(ijrnf(jl,jr) + 2) 1139 DO ji = mi0(iirnf(jl,jr) - 2), mi1(iirnf(jl,jr) - 2) 1166 1140 DO jn = 1, 3 1167 1141 zcoefr(ji,jj,jn) = MAX( zrup3, zcoefr(ji,jj,jn) ) … … 1170 1144 END DO 1171 1145 ! ji-2,jj-1 1172 ijpt0 = MAX( 1, MIN( ij-1,jpj ) ) 1173 ijpt1 = MAX( 0, MIN( ij-1,jpj-1) ) 1174 DO jj = ijpt0, ijpt1 1175 DO ji = iipt0, iipt1 1146 DO jj = mj0(ijrnf(jl,jr) - 1), mj1(ijrnf(jl,jr) - 1) 1147 DO ji = mi0(iirnf(jl,jr) - 2), mi1(iirnf(jl,jr) - 2) 1176 1148 DO jn = 1, 3 1177 1149 zcoefr(ji,jj,jn) = MAX( zrup3, zcoefr(ji,jj,jn) ) … … 1180 1152 END DO 1181 1153 ! ji-2,jj+1 1182 ijpt0 = MAX( 1, MIN( ij+1,jpj ) ) 1183 ijpt1 = MAX( 0, MIN( ij+1,jpj-1) ) 1184 DO jj = ijpt0, ijpt1 1185 DO ji = iipt0, iipt1 1154 DO jj = mj0(ijrnf(jl,jr) + 1), mj1(ijrnf(jl,jr) + 1) 1155 DO ji = mi0(iirnf(jl,jr) - 2), mi1(iirnf(jl,jr) - 2) 1186 1156 DO jn = 1, 3 1187 1157 zcoefr(ji,jj,jn) = MAX( zrup3, zcoefr(ji,jj,jn) ) -
trunk/NEMO/OPA_SRC/SBC/taumod.F90
r3 r18 22 22 !! * Share modules variables 23 23 REAL(wp), PUBLIC, DIMENSION(jpi,jpj) :: & 24 taux, tauy, & ! surface stress components in (i,j) referential25 tauxg, tauyg ! surface stress components in geographical26 ! ! referential (used in output)24 taux, tauy, & !: surface stress components in (i,j) referential 25 tauxg, tauyg !: surface stress components in geographical 26 ! ! referential (used in output) 27 27 !!---------------------------------------------------------------------- 28 28 !! OPA 9.0 , LODYC-IPSL (2003)
Note: See TracChangeset
for help on using the changeset viewer.