- Timestamp:
- 2007-12-07T11:55:54+01:00 (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/dev_001_SBC/NEMO/OPA_SRC/SBC/sbcssr.F90
r717 r749 38 38 39 39 !! * Namelist namsbc_ssr 40 INTEGER :: nn_sst , nn_sss! SST/SSS indicator41 REAL(wp) :: dqdt , deds! restoring term factor40 INTEGER :: nn_sstr, nn_sssr ! SST/SSS indicator 41 REAL(wp) :: dqdt , deds ! restoring term factor 42 42 43 43 !! * Substitutions … … 61 61 !! - Read observed SST and/or SSS 62 62 !! - at each nscb time step 63 !! add a retroaction term on qns (nn_sst = 1)64 !! add a damping term on emps (nn_sss = 1)65 !! add a damping term on emp & emps (nn_sss = 2)63 !! add a retroaction term on qns (nn_sstr = 1) 64 !! add a damping term on emps (nn_sssr = 1) 65 !! add a damping term on emp & emps (nn_sssr = 2) 66 66 !!--------------------------------------------------------------------- 67 67 INTEGER, INTENT(in ) :: kt ! ocean time step … … 70 70 REAL(wp) :: zerp ! local scalar for evaporation damping 71 71 REAL(wp) :: zqrp ! local scalar for heat flux damping 72 REAL(wp) :: zsrp ! local scalar for unit conversion of deds factor 72 73 INTEGER :: ierror ! return error code 73 74 !! 74 75 CHARACTER(len=100) :: cn_dir ! Root directory for location of ssr files 75 76 TYPE(FLD_N) :: sn_sst, sn_sss ! informations about the fields to be read 76 NAMELIST/namsbc_ssr/ cn_dir, nn_sst , nn_sss, dqdt, deds, sn_sst, sn_sss77 NAMELIST/namsbc_ssr/ cn_dir, nn_sstr, nn_sssr, dqdt, deds, sn_sst, sn_sss 77 78 !!---------------------------------------------------------------------- 78 79 ! ! -------------------- ! … … 80 81 ! ! -------------------- ! 81 82 ! ! set file information 82 nn_sst = 083 nn_sss = 083 nn_sstr = 0 84 nn_sssr = 0 84 85 dqdt = -40.e0 85 deds = - 40.e086 deds = -27.70 86 87 cn_dir = './' ! directory in which the model is executed 87 88 ! ... default values (NB: frequency positive => hours, negative => months) … … 98 99 WRITE(numout,*) 'sbc_ssr : SST and/or SSS damping term ' 99 100 WRITE(numout,*) '~~~~~~~ ' 100 WRITE(numout,*) ' SST restoring term (Yes=1) nn_sst = ', nn_sst101 WRITE(numout,*) ' SSS damping term (Yes=1, salt flux) nn_sss = ', nn_sss101 WRITE(numout,*) ' SST restoring term (Yes=1) nn_sstr = ', nn_sstr 102 WRITE(numout,*) ' SSS damping term (Yes=1, salt flux) nn_sssr = ', nn_sssr 102 103 WRITE(numout,*) ' (Yes=2, volume flux) ' 103 WRITE(numout,*) ' dQ/dT (restoring magnitude on SST) dqdt 104 WRITE(numout,*) ' dE/dS (restoring magnitude on SST) deds = ', deds, ' ...'105 ENDIF 106 107 IF( nn_sst == 1 ) THEN ! set sf_sst structure104 WRITE(numout,*) ' dQ/dT (restoring magnitude on SST) dqdt = ', dqdt, ' W/m2/K' 105 WRITE(numout,*) ' dE/dS (restoring magnitude on SST) deds = ', deds, ' mm/day' 106 ENDIF 107 108 IF( nn_sstr == 1 ) THEN ! set sf_sst structure 108 109 ! 109 110 ALLOCATE( sf_sst(1), STAT=ierror ) … … 129 130 ENDIF 130 131 ! 131 IF( nn_sss == 1 ) THEN ! set sf_sss structure132 IF( nn_sssr == 1 ) THEN ! set sf_sss structure 132 133 ! 133 134 ALLOCATE( sf_sss(1), STAT=ierror ) … … 154 155 ! 155 156 ! Initialize qrp and erp if no restoring 156 IF( nn_sst /= 1) qrp(:,:) = 0.e0157 IF( nn_sss /= 1 .OR. nn_sss/= 2 ) erp(:,:) = 0.e0157 IF( nn_sstr /= 1 ) qrp(:,:) = 0.e0 158 IF( nn_sssr /= 1 .OR. nn_sssr /= 2 ) erp(:,:) = 0.e0 158 159 ENDIF 159 160 160 IF( nn_sst + nn_sss/= 0 ) THEN161 162 IF( nn_sst == 1) CALL fld_read( kt, nn_fsbc, sf_sst ) ! Read SST data and provides it163 ! ! at the current time-step164 IF( nn_sss == 1) CALL fld_read( kt, nn_fsbc, sf_sss ) ! Read SSS data and provides it165 ! ! at the current time-step161 IF( nn_sstr + nn_sssr /= 0 ) THEN 162 163 IF( nn_sstr == 1) CALL fld_read( kt, nn_fsbc, sf_sst ) ! Read SST data and provides it 164 ! ! at the current time-step 165 IF( nn_sssr == 1) CALL fld_read( kt, nn_fsbc, sf_sss ) ! Read SSS data and provides it 166 ! ! at the current time-step 166 167 167 168 ! ! ========================= ! … … 169 170 ! ! ========================= ! 170 171 ! 171 IF( nn_sst == 1 ) THEN ! Temperature restoring term172 IF( nn_sstr == 1 ) THEN ! Temperature restoring term 172 173 !CDIR COLLAPSE 173 174 ! use zqrp scalar to optimize memory access (speedup the loop) … … 181 182 ENDIF 182 183 ! 183 IF( nn_sss == 1 ) THEN ! Salinity damping term (saltflux, emps only)184 IF( nn_sssr == 1 ) THEN ! Salinity damping term (salt flux, emps only) 184 185 !CDIR COLLAPSE 185 186 ! use zerp scalar to optimize memory access (speedup the loop) 186 187 DO jj = 1, jpj 187 188 DO ji = 1, jpi 188 zerp = deds * ( 1. - 2.*rnfmsk(ji,jj) ) & ! No damping in vivinity of river mouths 189 zsrp = deds / rday ! from [mm/day] to [kg/m2/s] 190 zerp = zsrp * ( 1. - 2.*rnfmsk(ji,jj) ) & ! No damping in vicinity of river mouths 189 191 & * ( sss_m(ji,jj) - sf_sss(1)%fnow(ji,jj) ) & 190 192 & / ( sss_m(ji,jj) + 1.e-20 ) … … 193 195 END DO 194 196 END DO 195 ELSEIF( nn_sss == 2 ) THEN ! Salinity damping term (volume flux, emp and emps)197 ELSEIF( nn_sssr == 2 ) THEN ! Salinity damping term (volume flux, emp and emps) 196 198 !CDIR COLLAPSE 197 199 ! use zerp scalar to optimize memory access (speedup the loop) 198 200 DO jj = 1, jpj 199 201 DO ji = 1, jpi 200 zerp = deds * ( 1. - 2.*rnfmsk(ji,jj) ) & ! No damping in vivinity of river mouths 202 zsrp = deds / rday ! from [mm/day] to [kg/m2/s] 203 zerp = zsrp * ( 1. - 2.*rnfmsk(ji,jj) ) & ! No damping in vicinity of river mouths 201 204 & * ( sss_m(ji,jj) - sf_sss(1)%fnow(ji,jj) ) & 202 205 & / ( sss_m(ji,jj) + 1.e-20 )
Note: See TracChangeset
for help on using the changeset viewer.