Changeset 440
- Timestamp:
- 2006-04-19T16:43:17+02:00 (18 years ago)
- Location:
- trunk/NEMO
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMO/C1D_SRC/icestp1d.F90
r359 r440 318 318 !! * Local declarations 319 319 INTEGER :: ji, jj ! dummy loop indices 320 REAL(wp) :: zerp, z trp, zsrp320 REAL(wp) :: zerp, zsrp 321 321 #if ! defined key_dynspg_rl 322 322 REAL(wp) :: zwei … … 341 341 ! -------------- 342 342 ! Restoring coefficients on SST and SSS 343 ztrp = -40. ! (W/m2/K) 344 zsrp = ztrp * ro0cpr * rauw ! (Kg/m2/s2) 343 zsrp = dqdt0 * ro0cpr * rauw ! (Kg/m2/s) 345 344 346 345 #if ! defined key_dynspg_rl -
trunk/NEMO/OPA_SRC/DTA/dtasal.F90
r434 r440 91 91 !!---------------------------------------------------------------------- 92 92 93 IF( cp_cfg /= 'gyre' ) THEN 94 95 ! 0. Initialization 96 ! ----------------- 97 98 iman = jpmois 99 i15 = nday / 16 100 101 imois = nmonth + i15 - 1 102 IF( imois == 0 ) imois = iman 103 104 itime = jpmois 105 ipi=jpiglo 106 ipj=jpjglo 107 ipk = jpk 108 109 ! 1. First call kt=nit000 110 ! ----------------------- 111 112 IF( kt == nit000 .AND. nlecsa == 0 ) THEN 113 nsal1 = 0 93 ! 0. Initialization 94 ! ----------------- 95 96 iman = jpmois 97 i15 = nday / 16 98 99 imois = nmonth + i15 - 1 100 IF( imois == 0 ) imois = iman 101 102 itime = jpmois 103 ipi=jpiglo 104 ipj=jpjglo 105 ipk = jpk 106 107 ! 1. First call kt=nit000 108 ! ----------------------- 109 110 IF( kt == nit000 .AND. nlecsa == 0 ) THEN 111 nsal1 = 0 112 IF(lwp) THEN 113 WRITE(numout,*) 114 WRITE(numout,*) ' dta_sal : monthly salinity data in NetCDF file' 115 WRITE(numout,*) ' ~~~~~~~' 116 WRITE(numout,*) 117 ENDIF 118 119 ! open file 120 121 clname = 'data_1m_salinity_nomask' 122 #if defined key_agrif 123 if ( .NOT. Agrif_Root() ) then 124 clname = TRIM(Agrif_CFixed())//'_'//TRIM(clname) 125 endif 126 #endif 127 CALL flinopen(TRIM(clname),mig(1),nlci,mjg(1),nlcj,.FALSE. & 128 ,ipi,ipj,ipk,zlon,zlat,zlev,itime,istep,zdate0,rdt,numsdt) 129 130 ! title, dimensions and tests 131 132 IF( itime /= jpmois ) THEN 114 133 IF(lwp) THEN 115 134 WRITE(numout,*) 116 WRITE(numout,*) ' dta_sal : monthly salinity data in NetCDF file' 117 WRITE(numout,*) ' ~~~~~~~' 118 WRITE(numout,*) 135 WRITE(numout,*) 'problem with time coordinates' 136 WRITE(numout,*) ' itime ',itime,' jpmois ',jpmois 119 137 ENDIF 120 121 ! open file 122 123 clname = 'data_1m_salinity_nomask' 124 #if defined key_agrif 125 if ( .NOT. Agrif_Root() ) then 126 clname = TRIM(Agrif_CFixed())//'_'//TRIM(clname) 127 endif 128 #endif 129 CALL flinopen(TRIM(clname),mig(1),nlci,mjg(1),nlcj,.FALSE. & 130 ,ipi,ipj,ipk,zlon,zlat,zlev,itime,istep,zdate0,rdt,numsdt) 131 132 ! title, dimensions and tests 133 134 IF( itime /= jpmois ) THEN 135 IF(lwp) THEN 136 WRITE(numout,*) 137 WRITE(numout,*) 'problem with time coordinates' 138 WRITE(numout,*) ' itime ',itime,' jpmois ',jpmois 139 ENDIF 140 STOP 'dta_sal' 141 ENDIF 142 IF( ipi /= jpidta .OR. ipj /= jpjdta .OR. ipk /= jpk ) THEN 143 IF(lwp) THEN 144 WRITE(numout,*) 145 WRITE(numout,*) 'problem with dimensions' 146 WRITE(numout,*) ' ipi ',ipi,' jpidta ',jpidta 147 WRITE(numout,*) ' ipj ',ipj,' jpjdta ',jpjdta 148 WRITE(numout,*) ' ipk ',ipk,' jpk ',jpk 149 ENDIF 150 STOP 'dta_sal' 151 ENDIF 152 IF(lwp)WRITE(numout,*) itime,istep,zdate0,rdt,numsdt 153 154 ENDIF 155 156 157 ! 2. Read monthly file 158 ! ------------------- 159 160 IF( ( kt == nit000 .AND. nlecsa == 0) .OR. imois /= nsal1 ) THEN 161 nlecsa = 1 162 163 ! 2.1 Calendar computation 164 165 nsal1 = imois ! first file record used 166 nsal2 = nsal1 + 1 ! last file record used 167 nsal1 = MOD( nsal1, iman ) 168 IF( nsal1 == 0 ) nsal1 = iman 169 nsal2 = MOD( nsal2, iman ) 170 IF( nsal2 == 0 ) nsal2 = iman 171 IF(lwp) WRITE(numout,*) 'first record file used nsal1 ', nsal1 172 IF(lwp) WRITE(numout,*) 'last record file used nsal2 ', nsal2 173 174 ! 2.3 Read monthly salinity data Levitus 175 176 CALL flinget(numsdt,'vosaline',jpidta,jpjdta,jpk,jpmois,nsal1, & 177 nsal1,mig(1),nlci,mjg(1),nlcj,saldta(1:nlci,1:nlcj,1:jpk,1)) 178 179 CALL flinget(numsdt,'vosaline',jpidta,jpjdta,jpk,jpmois,nsal2, & 180 nsal2,mig(1),nlci,mjg(1),nlcj,saldta(1:nlci,1:nlcj,1:jpk,2)) 181 182 138 STOP 'dta_sal' 139 ENDIF 140 IF( ipi /= jpidta .OR. ipj /= jpjdta .OR. ipk /= jpk ) THEN 183 141 IF(lwp) THEN 184 142 WRITE(numout,*) 185 WRITE(numout,*) ' read Levitus salinity ok' 186 WRITE(numout,*) 143 WRITE(numout,*) 'problem with dimensions' 144 WRITE(numout,*) ' ipi ',ipi,' jpidta ',jpidta 145 WRITE(numout,*) ' ipj ',ipj,' jpjdta ',jpjdta 146 WRITE(numout,*) ' ipk ',ipk,' jpk ',jpk 187 147 ENDIF 188 148 STOP 'dta_sal' 149 ENDIF 150 IF(lwp)WRITE(numout,*) itime,istep,zdate0,rdt,numsdt 151 152 ENDIF 153 154 155 ! 2. Read monthly file 156 ! ------------------- 157 158 IF( ( kt == nit000 .AND. nlecsa == 0) .OR. imois /= nsal1 ) THEN 159 nlecsa = 1 160 161 ! 2.1 Calendar computation 162 163 nsal1 = imois ! first file record used 164 nsal2 = nsal1 + 1 ! last file record used 165 nsal1 = MOD( nsal1, iman ) 166 IF( nsal1 == 0 ) nsal1 = iman 167 nsal2 = MOD( nsal2, iman ) 168 IF( nsal2 == 0 ) nsal2 = iman 169 IF(lwp) WRITE(numout,*) 'first record file used nsal1 ', nsal1 170 IF(lwp) WRITE(numout,*) 'last record file used nsal2 ', nsal2 171 172 ! 2.3 Read monthly salinity data Levitus 173 174 CALL flinget(numsdt,'vosaline',jpidta,jpjdta,jpk,jpmois,nsal1, & 175 nsal1,mig(1),nlci,mjg(1),nlcj,saldta(1:nlci,1:nlcj,1:jpk,1)) 176 177 CALL flinget(numsdt,'vosaline',jpidta,jpjdta,jpk,jpmois,nsal2, & 178 nsal2,mig(1),nlci,mjg(1),nlcj,saldta(1:nlci,1:nlcj,1:jpk,2)) 179 180 181 IF(lwp) THEN 182 WRITE(numout,*) 183 WRITE(numout,*) ' read Levitus salinity ok' 184 WRITE(numout,*) 185 ENDIF 186 189 187 #if defined key_tradmp 190 IF( cp_cfg == "orca" .AND. jp_cfg == 2 ) THEN 191 192 ! ! ======================= 193 ! ! ORCA_R2 configuration 194 ! ! ======================= 195 ij0 = 101 ; ij1 = 109 196 ii0 = 141 ; ii1 = 155 197 DO jj = mj0(ij0), mj1(ij1) ! Reduced salinity in the Alboran Sea 198 DO ji = mi0(ii0), mi1(ii1) 199 DO jk = 13, 13 200 saldta(ji,jj,jk,:) = saldta(ji,jj,jk,:) - 0.15 188 IF( cp_cfg == "orca" .AND. jp_cfg == 2 ) THEN 189 190 ! ! ======================= 191 ! ! ORCA_R2 configuration 192 ! ! ======================= 193 ij0 = 101 ; ij1 = 109 194 ii0 = 141 ; ii1 = 155 195 DO jj = mj0(ij0), mj1(ij1) ! Reduced salinity in the Alboran Sea 196 DO ji = mi0(ii0), mi1(ii1) 197 DO jk = 13, 13 198 saldta(ji,jj,jk,:) = saldta(ji,jj,jk,:) - 0.15 199 END DO 200 DO jk = 14, 15 201 saldta(ji,jj,jk,:) = saldta(ji,jj,jk,:) - 0.25 202 END DO 203 DO jk = 16, 17 204 saldta(ji,jj,jk,:) = saldta(ji,jj,jk,:) - 0.30 205 END DO 206 DO jk = 18, 25 207 saldta(ji,jj,jk,:) = saldta(ji,jj,jk,:) - 0.35 208 END DO 209 END DO 210 END DO 211 IF( n_cla == 1 ) THEN 212 ! ! New salinity profile at Gibraltar 213 il0 = 138 ; il1 = 138 214 ij0 = 101 ; ij1 = 101 215 ii0 = 139 ; ii1 = 139 216 saldta( mi0(ii0):mi1(ii1), mj0(ij0):mj1(ij1) , : , : ) = & 217 & saldta( mi0(il0):mi1(il1) , mj0(ij0):mj1(ij1) , : , : ) 218 ij0 = 101 ; ij1 = 101 219 saldta( mi0(ii0):mi1(ii1), mj0(ij0):mj1(ij1) , : , : ) = & 220 & saldta( mi0(il0):mi1(il1) , mj0(ij0):mj1(ij1) , : , : ) 221 il0 = 138 ; il1 = 138 222 ij0 = 101 ; ij1 = 102 223 ii0 = 139 ; ii1 = 139 224 DO jl = mi0(il0), mi1(il1) ! New salinity profile at Gibraltar 225 DO jj = mj0(ij0), mj1(ij1) 226 DO ji = mi0(ii0), mi1(ii1) 227 saldta(ji,jj,:,:) = saldta(jl,jj,:,:) 201 228 END DO 202 DO jk = 14, 15 203 saldta(ji,jj,jk,:) = saldta(ji,jj,jk,:) - 0.25 229 END DO 230 END DO 231 232 il0 = 164 ; il1 = 164 233 ij0 = 88 ; ij1 = 88 234 ii0 = 161 ; ii1 = 163 235 DO jl = mi0(il0), mi1(il1) ! New salinity profile at Bab el Mandeb 236 DO jj = mj0(ij0), mj1(ij1) 237 DO ji = mi0(ii0), mi1(ii1) 238 saldta(ji,jj,:,:) = saldta(jl,jj,:,:) 204 239 END DO 205 DO jk = 16, 17 206 saldta(ji,jj,jk,:) = saldta(ji,jj,jk,:) - 0.30 240 END DO 241 ij0 = 87 ; ij1 = 87 242 DO jj = mj0(ij0), mj1(ij1) 243 DO ji = mi0(ii0), mi1(ii1) 244 saldta(ji,jj,:,:) = saldta(jl,jj,:,:) 207 245 END DO 208 DO jk = 18, 25209 saldta(ji,jj,jk,:) = saldta(ji,jj,jk,:) - 0.35210 END DO211 246 END DO 212 247 END DO 213 IF( n_cla == 1 ) THEN214 ! ! New salinity profile at Gibraltar215 il0 = 138 ; il1 = 138216 ij0 = 101 ; ij1 = 101217 ii0 = 139 ; ii1 = 139218 saldta( mi0(ii0):mi1(ii1), mj0(ij0):mj1(ij1) , : , : ) = &219 & saldta( mi0(il0):mi1(il1) , mj0(ij0):mj1(ij1) , : , : )220 ij0 = 101 ; ij1 = 101221 saldta( mi0(ii0):mi1(ii1), mj0(ij0):mj1(ij1) , : , : ) = &222 & saldta( mi0(il0):mi1(il1) , mj0(ij0):mj1(ij1) , : , : )223 il0 = 138 ; il1 = 138224 ij0 = 101 ; ij1 = 102225 ii0 = 139 ; ii1 = 139226 DO jl = mi0(il0), mi1(il1) ! New salinity profile at Gibraltar227 DO jj = mj0(ij0), mj1(ij1)228 DO ji = mi0(ii0), mi1(ii1)229 saldta(ji,jj,:,:) = saldta(jl,jj,:,:)230 END DO231 END DO232 END DO233 234 il0 = 164 ; il1 = 164235 ij0 = 88 ; ij1 = 88236 ii0 = 161 ; ii1 = 163237 DO jl = mi0(il0), mi1(il1) ! New salinity profile at Bab el Mandeb238 DO jj = mj0(ij0), mj1(ij1)239 DO ji = mi0(ii0), mi1(ii1)240 saldta(ji,jj,:,:) = saldta(jl,jj,:,:)241 END DO242 END DO243 ij0 = 87 ; ij1 = 87244 DO jj = mj0(ij0), mj1(ij1)245 DO ji = mi0(ii0), mi1(ii1)246 saldta(ji,jj,:,:) = saldta(jl,jj,:,:)247 END DO248 END DO249 END DO250 251 ENDIF252 248 253 249 ENDIF 254 #endif 255 256 ! ! Mask 257 DO jl = 1, 2 258 saldta(:,:,:,jl) = saldta(:,:,:,jl)*tmask(:,:,:) 259 saldta(:,:,jpk,jl) = 0. 260 IF( lk_zps ) THEN ! z-coord. partial steps 261 DO jj = 1, jpj ! interpolation of salinity at the last ocean level (i.e. the partial step) 262 DO ji = 1, jpi 263 ik = mbathy(ji,jj) - 1 264 IF( ik > 2 ) THEN 265 zl = ( gdept(ik) - fsdept(ji,jj,ik) ) / ( gdept(ik) - gdept(ik-1) ) 266 saldta(ji,jj,ik,jl) = (1.-zl) * saldta(ji,jj,ik,jl) +zl * saldta(ji,jj,ik-1,jl) 267 ENDIF 268 END DO 269 END DO 270 ENDIF 271 END DO 272 273 274 IF(lwp) THEN 275 WRITE(numout,*)' salinity Levitus month ',nsal1,nsal2 276 WRITE(numout,*) 277 WRITE(numout,*) ' Levitus month = ',nsal1,' level = 1' 278 CALL prihre(saldta(:,:,1,1),jpi,jpj,1,jpi,20,1,jpj,20,1.,numout) 279 WRITE(numout,*) ' Levitus month = ',nsal1,' level = ',jpk/2 280 CALL prihre(saldta(:,:,jpk/2,1),jpi,jpj,1,jpi,20,1,jpj,20,1.,numout) 281 WRITE(numout,*) ' Levitus month = ',nsal1,' level = ',jpkm1 282 CALL prihre(saldta(:,:,jpkm1,1),jpi,jpj,1,jpi,20,1,jpj,20,1.,numout) 250 251 ENDIF 252 #endif 253 254 ! ! Mask 255 DO jl = 1, 2 256 saldta(:,:,:,jl) = saldta(:,:,:,jl)*tmask(:,:,:) 257 saldta(:,:,jpk,jl) = 0. 258 IF( lk_zps ) THEN ! z-coord. partial steps 259 DO jj = 1, jpj ! interpolation of salinity at the last ocean level (i.e. the partial step) 260 DO ji = 1, jpi 261 ik = mbathy(ji,jj) - 1 262 IF( ik > 2 ) THEN 263 zl = ( gdept(ik) - fsdept(ji,jj,ik) ) / ( gdept(ik) - gdept(ik-1) ) 264 saldta(ji,jj,ik,jl) = (1.-zl) * saldta(ji,jj,ik,jl) +zl * saldta(ji,jj,ik-1,jl) 265 ENDIF 266 END DO 267 END DO 283 268 ENDIF 284 ENDIF 285 269 END DO 270 271 272 IF(lwp) THEN 273 WRITE(numout,*)' salinity Levitus month ',nsal1,nsal2 274 WRITE(numout,*) 275 WRITE(numout,*) ' Levitus month = ',nsal1,' level = 1' 276 CALL prihre(saldta(:,:,1,1),jpi,jpj,1,jpi,20,1,jpj,20,1.,numout) 277 WRITE(numout,*) ' Levitus month = ',nsal1,' level = ',jpk/2 278 CALL prihre(saldta(:,:,jpk/2,1),jpi,jpj,1,jpi,20,1,jpj,20,1.,numout) 279 WRITE(numout,*) ' Levitus month = ',nsal1,' level = ',jpkm1 280 CALL prihre(saldta(:,:,jpkm1,1),jpi,jpj,1,jpi,20,1,jpj,20,1.,numout) 281 ENDIF 282 ENDIF 283 286 284 287 ! 3. At every time step compute salinity data 288 ! ------------------------------------------- 289 290 zxy = FLOAT(nday + 15 - 30*i15)/30. 291 s_dta(:,:,:) = ( 1.- zxy ) * saldta(:,:,:,1) + zxy * saldta(:,:,:,2) 292 293 ENDIF 285 ! 3. At every time step compute salinity data 286 ! ------------------------------------------- 287 288 zxy = FLOAT(nday + 15 - 30*i15)/30. 289 s_dta(:,:,:) = ( 1.- zxy ) * saldta(:,:,:,1) + zxy * saldta(:,:,:,2) 294 290 295 291 END SUBROUTINE dta_sal -
trunk/NEMO/OPA_SRC/DTA/dtatem.F90
r434 r440 98 98 !!---------------------------------------------------------------------- 99 99 100 IF( cp_cfg /= 'gyre' ) THEN 101 102 ! 0. Initialization 103 ! ----------------- 104 105 iman = jpmois 106 i15 = nday / 16 107 imois = nmonth + i15 - 1 108 IF( imois == 0 ) imois = iman 109 110 itime = jpmois 111 ipi = jpiglo 112 ipj = jpjglo 113 ipk = jpk 114 115 ! 1. First call kt=nit000 116 ! ----------------------- 117 118 IF( kt == nit000 .AND. nlecte == 0 ) THEN 119 ntem1 = 0 120 IF(lwp) WRITE(numout,*) 121 IF(lwp) WRITE(numout,*) ' dtatem : Levitus monthly fields' 122 IF(lwp) WRITE(numout,*) ' ~~~~~~' 123 IF(lwp) WRITE(numout,*) ' NetCDF FORMAT' 124 IF(lwp) WRITE(numout,*) 125 126 ! open file 127 128 cl_tdata = 'data_1m_potential_temperature_nomask ' 100 ! 0. Initialization 101 ! ----------------- 102 103 iman = jpmois 104 i15 = nday / 16 105 imois = nmonth + i15 - 1 106 IF( imois == 0 ) imois = iman 107 108 itime = jpmois 109 ipi = jpiglo 110 ipj = jpjglo 111 ipk = jpk 112 113 ! 1. First call kt=nit000 114 ! ----------------------- 115 116 IF( kt == nit000 .AND. nlecte == 0 ) THEN 117 ntem1 = 0 118 IF(lwp) WRITE(numout,*) 119 IF(lwp) WRITE(numout,*) ' dtatem : Levitus monthly fields' 120 IF(lwp) WRITE(numout,*) ' ~~~~~~' 121 IF(lwp) WRITE(numout,*) ' NetCDF FORMAT' 122 IF(lwp) WRITE(numout,*) 123 124 ! open file 125 126 cl_tdata = 'data_1m_potential_temperature_nomask ' 129 127 #if defined key_agrif 130 131 132 133 #endif 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 128 if ( .NOT. Agrif_Root() ) then 129 cl_tdata = TRIM(Agrif_CFixed())//'_'//TRIM(cl_tdata) 130 endif 131 #endif 132 CALL flinopen( TRIM(cl_tdata), mig(1), nlci , mjg(1), nlcj & 133 & , .false. , ipi , ipj , ipk , zlon & 134 & , zlat , zlev , itime, istep , zdate0 & 135 & , rdt , numtdt ) 136 137 ! title, dimensions and tests 138 139 IF( itime /= jpmois ) THEN 140 IF(lwp) THEN 141 WRITE(numout,*) 142 WRITE(numout,*) 'problem with time coordinates' 143 WRITE(numout,*) ' itime ',itime,' jpmois ',jpmois 144 ENDIF 145 STOP 'dtatem' 146 ENDIF 147 IF( ipi /= jpidta .OR. ipj /= jpjdta .OR. ipk /= jpk ) THEN 148 IF(lwp) THEN 149 WRITE(numout,*) 150 WRITE(numout,*) 'problem with dimensions' 151 WRITE(numout,*) ' ipi ',ipi,' jpidta ',jpidta 152 WRITE(numout,*) ' ipj ',ipj,' jpjdta ',jpjdta 153 WRITE(numout,*) ' ipk ',ipk,' jpk ',jpk 154 ENDIF 155 STOP 'dtatem' 156 ENDIF 157 IF(lwp) WRITE(numout,*) itime,istep,zdate0,rdt,numtdt 158 159 ENDIF 160 161 162 ! 2. Read monthly file 163 ! ------------------- 164 165 IF( ( kt == nit000 .AND. nlecte == 0 ) .OR. imois /= ntem1 ) THEN 166 nlecte = 1 167 168 ! Calendar computation 169 170 ntem1 = imois ! first file record used 171 ntem2 = ntem1 + 1 ! last file record used 172 ntem1 = MOD( ntem1, iman ) 173 IF( ntem1 == 0 ) ntem1 = iman 174 ntem2 = MOD( ntem2, iman ) 175 IF( ntem2 == 0 ) ntem2 = iman 176 IF(lwp) WRITE(numout,*) 'first record file used ntem1 ', ntem1 177 IF(lwp) WRITE(numout,*) 'last record file used ntem2 ', ntem2 178 179 ! Read monthly temperature data Levitus 180 181 CALL flinget( numtdt, 'votemper', jpidta, jpjdta, jpk & 182 , jpmois, ntem1 , ntem1 , mig(1), nlci & 183 , mjg(1), nlcj , temdta(1:nlci,1:nlcj,1:jpk,1) ) 184 CALL flinget( numtdt, 'votemper', jpidta, jpjdta, jpk & 185 , jpmois, ntem2 , ntem2 , mig(1), nlci & 186 , mjg(1), nlcj , temdta(1:nlci,1:nlcj,1:jpk,2) ) 187 188 IF(lwp) WRITE(numout,*) 189 IF(lwp) WRITE(numout,*) ' read Levitus temperature ok' 190 IF(lwp) WRITE(numout,*) 191 194 192 #if defined key_tradmp 195 IF( cp_cfg == "orca" .AND. jp_cfg == 2 ) THEN 196 197 ! ! ======================= 198 ! ! ORCA_R2 configuration 199 ! ! ======================= 200 201 ij0 = 101 ; ij1 = 109 202 ii0 = 141 ; ii1 = 155 203 DO jj = mj0(ij0), mj1(ij1) ! Reduced temperature in the Alboran Sea 204 DO ji = mi0(ii0), mi1(ii1) 205 temdta(ji,jj, 13:13 ,:) = temdta(ji,jj, 13:13 ,:) - 0.20 206 temdta(ji,jj, 14:15 ,:) = temdta(ji,jj, 14:15 ,:) - 0.35 207 temdta(ji,jj, 16:25 ,:) = temdta(ji,jj, 16:25 ,:) - 0.40 208 END DO 209 END DO 210 211 IF( n_cla == 0 ) THEN 212 ! ! Reduced temperature at Red Sea 213 ij0 = 87 ; ij1 = 96 214 ii0 = 148 ; ii1 = 160 215 temdta( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) , 4:10 , : ) = 7.0 216 temdta( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) , 11:13 , : ) = 6.5 217 temdta( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) , 14:20 , : ) = 6.0 218 ELSE 219 il0 = 138 ; il1 = 138 220 ij0 = 101 ; ij1 = 102 221 ii0 = 139 ; ii1 = 139 222 DO jl = mi0(il0), mi1(il1) ! New temperature profile at Gibraltar 223 DO jj = mj0(ij0), mj1(ij1) 224 DO ji = mi0(ii0), mi1(ii1) 225 temdta(ji,jj,:,:) = temdta(jl,jj,:,:) 226 END DO 193 IF( cp_cfg == "orca" .AND. jp_cfg == 2 ) THEN 194 195 ! ! ======================= 196 ! ! ORCA_R2 configuration 197 ! ! ======================= 198 199 ij0 = 101 ; ij1 = 109 200 ii0 = 141 ; ii1 = 155 201 DO jj = mj0(ij0), mj1(ij1) ! Reduced temperature in the Alboran Sea 202 DO ji = mi0(ii0), mi1(ii1) 203 temdta(ji,jj, 13:13 ,:) = temdta(ji,jj, 13:13 ,:) - 0.20 204 temdta(ji,jj, 14:15 ,:) = temdta(ji,jj, 14:15 ,:) - 0.35 205 temdta(ji,jj, 16:25 ,:) = temdta(ji,jj, 16:25 ,:) - 0.40 206 END DO 207 END DO 208 209 IF( n_cla == 0 ) THEN 210 ! ! Reduced temperature at Red Sea 211 ij0 = 87 ; ij1 = 96 212 ii0 = 148 ; ii1 = 160 213 temdta( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) , 4:10 , : ) = 7.0 214 temdta( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) , 11:13 , : ) = 6.5 215 temdta( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) , 14:20 , : ) = 6.0 216 ELSE 217 il0 = 138 ; il1 = 138 218 ij0 = 101 ; ij1 = 102 219 ii0 = 139 ; ii1 = 139 220 DO jl = mi0(il0), mi1(il1) ! New temperature profile at Gibraltar 221 DO jj = mj0(ij0), mj1(ij1) 222 DO ji = mi0(ii0), mi1(ii1) 223 temdta(ji,jj,:,:) = temdta(jl,jj,:,:) 227 224 END DO 228 225 END DO 229 il0 = 164 ; il1 = 164230 ij0 = 88 ; ij1 = 88231 ii0 = 161 ; ii1 = 163232 DO jl = mi0(il0), mi1(il1) ! New temperature profile at Bab el Mandeb233 DO jj = mj0(ij0), mj1(ij1)234 DO ji = mi0(ii0), mi1(ii1)235 temdta(ji,jj,:,:) = temdta(jl,jj,:,:)236 END DO226 END DO 227 il0 = 164 ; il1 = 164 228 ij0 = 88 ; ij1 = 88 229 ii0 = 161 ; ii1 = 163 230 DO jl = mi0(il0), mi1(il1) ! New temperature profile at Bab el Mandeb 231 DO jj = mj0(ij0), mj1(ij1) 232 DO ji = mi0(ii0), mi1(ii1) 233 temdta(ji,jj,:,:) = temdta(jl,jj,:,:) 237 234 END DO 238 ij0 = 87 ; ij1 = 87239 DO jj = mj0(ij0), mj1(ij1)240 DO ji = mi0(ii0), mi1(ii1)241 temdta(ji,jj,:,:) = temdta(jl,jj,:,:)242 END DO235 END DO 236 ij0 = 87 ; ij1 = 87 237 DO jj = mj0(ij0), mj1(ij1) 238 DO ji = mi0(ii0), mi1(ii1) 239 temdta(ji,jj,:,:) = temdta(jl,jj,:,:) 243 240 END DO 244 241 END DO 245 ENDIF 246 247 ENDIF 242 END DO 243 ENDIF 244 245 ENDIF 248 246 #endif 249 247 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 248 ! ! Mask 249 DO jl = 1, 2 250 temdta(:,:,:,jl) = temdta(:,:,:,jl) * tmask(:,:,:) 251 temdta(:,:,jpk,jl) = 0. 252 IF( lk_zps ) THEN ! z-coord. with partial steps 253 DO jj = 1, jpj ! interpolation of temperature at the last level 254 DO ji = 1, jpi 255 ik = mbathy(ji,jj) - 1 256 IF( ik > 2 ) THEN 257 zl = ( gdept(ik) - fsdept(ji,jj,ik) ) / ( gdept(ik) - gdept(ik-1) ) 258 temdta(ji,jj,ik,jl) = (1.-zl) * temdta(ji,jj,ik,jl) + zl * temdta(ji,jj,ik-1,jl) 259 ENDIF 260 END DO 261 END DO 262 ENDIF 263 END DO 264 265 IF(lwp) THEN 266 WRITE(numout,*) ' temperature Levitus month ', ntem1, ntem2 267 WRITE(numout,*) 268 WRITE(numout,*) ' Levitus month = ', ntem1, ' level = 1' 269 CALL prihre( temdta(:,:,1,1), jpi, jpj, 1, jpi, 20, 1, jpj, 20, 1., numout ) 270 WRITE(numout,*) ' Levitus month = ', ntem1, ' level = ', jpk/2 271 CALL prihre( temdta(:,:,jpk/2,1), jpi, jpj, 1, jpi, 20, 1, jpj, 20, 1., numout ) 272 WRITE(numout,*) ' Levitus month = ',ntem1,' level = ', jpkm1 273 CALL prihre( temdta(:,:,jpkm1,1), jpi, jpj, 1, jpi, 20, 1, jpj, 20, 1., numout ) 274 ENDIF 275 ENDIF 278 276 279 277 280 ! 2. At every time step compute temperature data 281 ! ---------------------------------------------- 282 283 zxy = FLOAT( nday + 15 - 30 * i15 ) / 30. 284 t_dta(:,:,:) = (1.-zxy) * temdta(:,:,:,1) + zxy * temdta(:,:,:,2) 285 286 ENDIF 278 ! 2. At every time step compute temperature data 279 ! ---------------------------------------------- 280 281 zxy = FLOAT( nday + 15 - 30 * i15 ) / 30. 282 t_dta(:,:,:) = (1.-zxy) * temdta(:,:,:,1) + zxy * temdta(:,:,:,2) 283 287 284 288 285 END SUBROUTINE dta_tem -
trunk/NEMO/OPA_SRC/SBC/flxmod.F90
r247 r440 19 19 !! * Routine accessibility 20 20 PUBLIC flx ! routine called by step.F90 21 PUBLIC flx_init ! routine called by opa.F90 22 23 !! * local declarations 24 REAL(wp), PUBLIC :: & !!! surface fluxes namelist (namflx) 25 q0 = 0.e0, & ! net heat flux 26 qsr0 = 0.e0, & ! solar heat flux 27 emp0 = 0.e0, & ! net freshwater flux 28 dqdt0 = -40., & ! coefficient for SST damping (W/m2/K) 29 deds0 = 27.7 ! coefficient for SSS damping (mm/day) 21 30 22 31 !! * Substitutions … … 91 100 !! 8.5 ! 02-09 (G. Madec) F90: Free form and module 92 101 !!---------------------------------------------------------------------- 93 !! * Modules used94 USE flxrnf ! ocean runoffs95 96 102 !! * arguments 97 103 INTEGER, INTENT( in ) :: kt ! ocean time step 98 99 !! * local declarations100 REAL(wp) :: & !!! surface fluxes namelist (namflx)101 q0 = 0.e0, & ! net heat flux102 qsr0 = 0.e0, & ! solar heat flux103 emp0 = 0.e0 ! net freshwater flux104 105 NAMELIST/namflx/ q0, qsr0, emp0106 104 !!--------------------------------------------------------------------- 107 105 108 IF( kt == nit000 ) THEN 109 110 ! Read Namelist namflx : surface thermohaline fluxes 111 ! -------------------- 112 REWIND ( numnam ) 113 READ ( numnam, namflx ) 114 106 IF( kt == nit000 ) THEN 115 107 IF(lwp) WRITE(numout,*)' ' 116 IF(lwp) WRITE(numout,*)' flx : Constant surface fluxes read in namelist'117 IF(lwp) WRITE(numout,*)' 118 IF(lwp) WRITE(numout,*)' : See the routine ocesbc'119 120 ENDIF108 IF(lwp) WRITE(numout,*)'flx : Analytical/Constant surface fluxes' 109 IF(lwp) WRITE(numout,*)'~~~~~~~ ' 110 IF(lwp) WRITE(numout,*)' See the routine oce_sbc' 111 IF(lwp) WRITE(numout,*)' ' 112 ENDIF 121 113 122 114 END SUBROUTINE flx 123 115 124 116 #endif 125 !!====================================================================== 117 118 119 SUBROUTINE flx_init 120 !!--------------------------------------------------------------------- 121 !! *** ROUTINE flx *** 122 !! 123 !! ** Purpose : provide the thermohaline fluxes (heat and freshwater) 124 !! to the ocean at each time step. 125 !! 126 !! ** Method : Constant surface fluxes (read in namelist (namflx)) 127 !! 128 !! ** Action : - q, qt, qsr, emp, emps, qrp, erp 129 !! 130 !! History : 131 !! ! 91-03 () Original code 132 !! 8.5 ! 02-09 (G. Madec) F90: Free form and module 133 !!---------------------------------------------------------------------- 134 NAMELIST/namflx/ q0, qsr0, emp0, dqdt0, deds0 135 !!--------------------------------------------------------------------- 136 137 ! Read Namelist namflx : surface thermohaline fluxes 138 ! -------------------- 139 REWIND ( numnam ) 140 READ ( numnam, namflx ) 141 142 IF(lwp) THEN 143 WRITE(numout,*)' ' 144 WRITE(numout,*)'flx_init : thermohaline forcing ' 145 WRITE(numout,*)'~~~~~~~~ ' 146 WRITE(numout,*)' net heat flux q0 = ', q0 , ' W/m2' 147 WRITE(numout,*)' solar heat flux qsr0 = ', qsr0, ' W/m2' 148 WRITE(numout,*)' net heat flux emp0 = ', emp0, ' W/m2' 149 WRITE(numout,*)' coefficient for SST damping dqdt0 = ', dqdt0,' W/m2/K' 150 WRITE(numout,*)' coefficient for SSS damping deds0 = ', deds0,' mm/day' 151 ENDIF 152 153 END SUBROUTINE flx_init 154 126 155 END MODULE flxmod -
trunk/NEMO/OPA_SRC/SBC/ocesbc.F90
r434 r440 87 87 !! * Local declarations 88 88 INTEGER :: ji, jj ! dummy loop indices 89 REAL(wp) :: ztx, ztaux, zty, ztauy , ztrp89 REAL(wp) :: ztx, ztaux, zty, ztauy 90 90 REAL(wp) :: ztdta, ztgel, zqrp 91 91 !!---------------------------------------------------------------------- … … 113 113 ! Surface heat flux (W/m2) 114 114 ! ----------------------- 115 ztrp = 0.e0116 115 117 116 ! restoring heat flux … … 124 123 ztdta = MAX( t_dta(ji,jj,1), ztgel ) 125 124 #endif 126 zqrp = ztrp* ( tb(ji,jj,1) - ztdta )125 zqrp = dqdt0 * ( tb(ji,jj,1) - ztdta ) 127 126 128 127 qrp(ji,jj) = (1.0-freeze(ji,jj) ) * zqrp … … 306 305 !! * Local declarations 307 306 INTEGER :: ji, jj, jf ! dummy loop indices 308 REAL(wp) :: zt rp, ztgel,& ! temporary scalars307 REAL(wp) :: ztgel, & ! temporary scalars 309 308 zice, zhemis, zqrp, zqri, & ! " " 310 309 zq, zqi, zerp, ze, zei, zro ! " " … … 313 312 ! Compute fluxes 314 313 ! -------------- 315 316 ! constant initialization317 ztrp = -40. ! restoring term for temperature (w/m2/k)318 314 319 315 DO jj = 1, jpj … … 343 339 344 340 zqrp = 0. 345 zqri = ztrp*MIN( 0., tb(ji,jj,1)-ztgel )341 zqri = dqdt0*MIN( 0., tb(ji,jj,1)-ztgel ) 346 342 qrp(ji,jj) = ( ( 1. - zice ) * zqrp + zice * zqri ) * tmask(ji,jj,1) 347 343 … … 417 413 REAL(wp) :: zxy 418 414 REAL(wp) :: zsice, zqri, zqrp, ztdta, zqrj 419 REAL(wp) :: zq, zqi, zhemis , ztrp415 REAL(wp) :: zq, zqi, zhemis 420 416 REAL(wp), DIMENSION(jpi,jpj) :: zeri, zerps, ziclim 421 417 REAL(wp), DIMENSION(jpi,jpj) :: zqt, zqsr, zemp … … 456 452 CALL oce_sbc_dmp 457 453 458 ztrp = -40. ! restoring terme for temperature (w/m2/k)459 454 zsice = - 0.04 / 0.8 ! ratio of isohaline compressibility over isotherme compressibility 460 455 ! ( d rho / dt ) / ( d rho / ds ) ( s = 34, t = -1.8 ) … … 486 481 ! - gamma*min(0,t-tgel) if climatological and opa ice (ziclim=1 zicopa=1) 487 482 488 zqri = ztrp* ( tb(ji,jj,1) - ( fzptn(ji,jj) - 1.) )489 zqrj = ztrp* MIN( 0., tb(ji,jj,1) - fzptn(ji,jj) )483 zqri = dqdt0 * ( tb(ji,jj,1) - ( fzptn(ji,jj) - 1.) ) 484 zqrj = dqdt0 * MIN( 0., tb(ji,jj,1) - fzptn(ji,jj) ) 490 485 491 486 qrp(ji,jj) = ( ziclim(ji,jj) * ( (1 - freeze(ji,jj)) * zqri & … … 493 488 494 489 #if ! defined key_flx_bulk_monthly || ! defined key_flx_bulk_daily 495 zqrp = ztrp* ( tb(ji,jj,1) - ztdta )490 zqrp = dqdt0 * ( tb(ji,jj,1) - ztdta ) 496 491 qrp(ji,jj) = qrp(ji,jj) + (1. - ziclim(ji,jj)) * zqrp 497 492 # endif … … 579 574 USE flxrnf ! ocean runoffs 580 575 USE daymod, ONLY : nyear ! calendar 576 USE dtasss ! sea surface salinity data 581 577 582 578 !! * arguments … … 588 584 qsr0 = 0.e0, & ! solar heat flux 589 585 emp0 = 0.e0 ! net freshwater flux 590 REAL(wp) :: ztrp, zemp_S, zemp_N, zemp_sais, zTstar, zcos_sais1, zconv, zcos_sais2 586 REAL(wp) :: zsrp, & 587 zemp_S, zemp_N, zemp_sais, & 588 zTstar, zcos_sais1, zconv, & 589 zcos_sais2 591 590 REAL(wp) :: & 592 591 zsumemp, & ! tampon used for the emp sum … … 643 642 zcos_sais2 = COS( (ztime - ztimemax2) / (ztimemax2 - ztimemin2) * rpi ) 644 643 645 ztrp= - 40. ! retroaction term (W/m2/K)646 644 zconv = 3.16e-5 ! convert 1m/yr->3.16e-5mm/s 647 645 DO jj = 1, jpj … … 653 651 & * COS( rpi * (gphit(ji,jj) - 5.) & 654 652 & / (53.5 * ( 1 + 11 / 53.5 * zcos_sais2 ) * 2.) ) 655 qt (ji,jj) = ztrp* ( tb(ji,jj,1) - t_star(ji,jj) )653 qt (ji,jj) = dqdt0 * ( tb(ji,jj,1) - t_star(ji,jj) ) 656 654 IF( gphit(ji,jj) >= 14.845 .AND. 37.2 >= gphit(ji,jj)) THEN 657 655 ! zero at 37.8 deg, max at 24.6 deg … … 693 691 ENDIF 694 692 695 !salinity terms 693 IF( lk_dtasss ) THEN ! Sea surface salinity damping 694 ! deds0 from (mm/day) => (mm/s) 695 zsrp = deds0 / rday 696 erp(:,:) = zsrp * ( sss(:,:) - sb(:,:,1) ) / ( sn(:,:,1) + 1.e-20 ) 697 ELSE ! NO Sea surface salinity damping 698 zsrp = 0.e0 699 erp(:,:) = 0.e0 700 ENDIF 701 702 ! freshwater fluxes terms 696 703 DO jj = 1, jpj 697 704 DO ji = 1, jpi 698 erp(ji,jj) = 0.e0699 705 emp(ji, jj) = emp(ji,jj) - zsumemp * tmask(ji,jj,1) 700 emps(ji, jj)= emp(ji,jj) 706 emps(ji, jj)= emp(ji,jj) + erp(ji,jj) 701 707 END DO 702 708 END DO … … 722 728 WRITE(numout,*)' zsumemp = ',zsumemp 723 729 WRITE(numout,*)' zsurf = ',zsurf 724 WRITE(numout,*)' ztrp = ',ztrp 730 WRITE(numout,*)' dqdt0 = ',dqdt0 731 WRITE(numout,*)' deds0 = ',deds0 725 732 WRITE(numout,*)' zconv = ',zconv 726 733 ENDIF … … 728 735 ELSE 729 736 737 ! Constant surface fluxes 738 730 739 IF( kt == nit000 ) THEN 731 732 ! Read Namelist namflx : surface thermohaline fluxes 733 ! -------------------- 734 REWIND ( numnam ) 735 READ ( numnam, namflx ) 736 737 IF(lwp) WRITE(numout,*)' ' 738 IF(lwp) WRITE(numout,*)' ocesbc : Constant surface fluxes read in namelist' 739 IF(lwp) WRITE(numout,*)' ~~~~~~~ ' 740 IF(lwp) WRITE(numout,*)' Namelist namflx: set the constant flux values' 741 IF(lwp) WRITE(numout,*)' net heat flux q0 = ', q0 , ' W/m2' 742 IF(lwp) WRITE(numout,*)' solar heat flux qsr0 = ', qsr0, ' W/m2' 743 IF(lwp) WRITE(numout,*)' net heat flux emp0 = ', emp0, ' W/m2' 740 IF(lwp) THEN 741 WRITE(numout,*)' ' 742 WRITE(numout,*)' ocesbc : Constant surface fluxes read in namelist' 743 WRITE(numout,*)' ~~~~~~~ ' 744 WRITE(numout,*)' Namelist namflx: set the constant flux values' 745 WRITE(numout,*)' net heat flux q0 = ', q0 , ' W/m2' 746 WRITE(numout,*)' solar heat flux qsr0 = ', qsr0, ' W/m2' 747 WRITE(numout,*)' net heat flux emp0 = ', emp0, ' W/m2' 748 ENDIF 744 749 745 750 qt (:,:) = q0 … … 752 757 runoff(:,:) = 0.e0 753 758 ENDIF 759 754 760 ENDIF 755 761 … … 777 783 INTEGER :: ji, jj ! dummy loop indices 778 784 REAL(wp), DIMENSION(jpi,jpj) :: zsss, zfreeze 779 REAL(wp) :: zerp, z trp, zsrp785 REAL(wp) :: zerp, zsrp 780 786 CHARACTER (len=71) :: charout 781 787 #if ! defined key_dynspg_rl … … 807 813 ! -------------- 808 814 ! Restoring coefficients on SST and SSS 809 IF( lk_cpl ) THEN 810 ztrp = 0.e0 811 zsrp = 0.e0 812 ELSE 813 ztrp = -40. ! (W/m2/K) 814 zsrp = ztrp * ro0cpr * rauw ! (Kg/m2/s2) 815 ENDIF 815 zsrp = dqdt0 * ro0cpr * rauw ! (Kg/m2/s) 816 816 817 817 #if ! defined key_dynspg_rl -
trunk/NEMO/OPA_SRC/TRA/tradmp.F90
r434 r440 24 24 USE dtatem ! temperature data 25 25 USE dtasal ! salinity data 26 USE dtasss ! surface salinity data27 26 USE zdfmxl ! mixed layer depth 28 27 USE lib_mpp ! distribued memory computing … … 48 47 !! * Module variables 49 48 INTEGER :: & !!! * newtonian damping namelist (mandmp) * 50 ndmp = -1 , & ! = 0/-1/ -2/'latitude' for damping over T and S49 ndmp = -1 , & ! = 0/-1/'latitude' for damping over T and S 51 50 ndmpf = 2 , & ! = 1 create a damping.coeff NetCDF file 52 nmldmp = 0 ! = 0/1/2 /3flag for damping in the mixed layer51 nmldmp = 0 ! = 0/1/2 flag for damping in the mixed layer 53 52 REAL(wp) :: & !!! * newtonian damping namelist * 54 53 sdmp = 50., & ! surface time scale for internal damping (days) … … 178 177 END DO 179 178 180 CASE( 3 ) ! newtonian damping of SSS only181 DO jj = 2, jpjm1182 DO ji = fs_2, fs_jpim1 ! vector opt.183 zsa = resto(ji,jj,1) * ( sss(ji,jj) - sb(ji,jj,1) )184 ! add the trends to the general tracer trends185 sa(ji,jj,1) = sa(ji,jj,1) + zsa186 ! save the salinity trend (used in flx to close the salt budget)187 strdmp(ji,jj,1) = zsa188 END DO189 END DO190 191 179 END SELECT 192 180 … … 249 237 SELECT CASE ( ndmp ) 250 238 251 CASE ( -2 ) ! GYRE: damping SSS only252 IF(lwp) WRITE(numout,*) ' SSS damping in Gyre'253 254 239 CASE ( -1 ) ! ORCA: damping in Red & Med Seas only 255 240 IF(lwp) WRITE(numout,*) ' tracer damping in the Med & Red seas only' … … 276 261 CASE ( 2 ) ! no damping in the mixed layer 277 262 IF(lwp) WRITE(numout,*) ' no tracer damping in the mixed layer' 278 279 CASE ( 3 ) ! SSS damping only280 IF(lwp) WRITE(numout,*) ' SSS surface damping'281 263 282 264 CASE DEFAULT … … 293 275 nstop = nstop + 1 294 276 ENDIF 295 296 IF( lk_dtasss .AND. ( ( ndmp /= -2 ) .OR. (nmldmp /= 3) ) ) THEN297 IF(lwp) WRITE(numout,cform_err)298 IF(lwp) WRITE(numout,*) ' Check namelist for SSS restoring in Gyre '299 IF(lwp) WRITE(numout,*) ' ndmp must be -2 and nmldmp must be 3'300 nstop = nstop + 1301 ENDIF302 303 277 304 278 … … 683 657 resto(:,:,jpk) = 0.e0 684 658 685 ELSEIF( cp_cfg == "gyre" .AND. ( ndmp == -2 )) THEN686 687 ! ! =========================688 ! ! SSS damping689 ! ! =========================690 zsdmp = 1./(sdmp * rday)691 IF(lwp)WRITE(numout,*)692 IF(lwp)WRITE(numout,*) ' GYRE configuration: Damping coefficient'693 resto(:,:, : ) = 0.694 resto(:,:, 1 ) = zsdmp * tmask(:,:,1)695 696 659 ELSE 697 660 ! ------------ -
trunk/NEMO/OPA_SRC/opa.F90
r413 r440 42 42 USE trdvor ! vorticity trends (trd_vor_init routine) 43 43 USE trdmld ! tracer mixed layer trends (trd_mld_init routine) 44 USE flxfwb ! 44 USE flxfwb ! freshwater budget correction (flx_fwb_init routine) 45 USE flxmod ! thermohaline forcing of the ocean (flx_init routine) 45 46 46 47 USE diaptr ! poleward transports (dia_ptr_init routine) … … 320 321 !!add 321 322 CALL eos( tb, sb, rhd, rhop ) ! before potential and in situ densities 322 323 323 324 CALL bn2( tb, sb, rn2 ) ! before Brunt-Vaisala frequency 324 325 … … 372 373 #endif 373 374 375 CALL flx_init ! Thermohaline forcing initialization 376 374 377 CALL flx_fwb_init ! FreshWater Budget correction 375 378
Note: See TracChangeset
for help on using the changeset viewer.