Changeset 1524
- Timestamp:
- 2009-07-22T14:04:35+02:00 (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMO/OPA_SRC/SBC/sbcssr.F90
r1494 r1524 2 2 !!====================================================================== 3 3 !! *** MODULE sbcssr *** 4 !! Surface module : add to heat and fresh water fluxes a restoring term 5 !! toward observed SST/SSS 4 !! Surface module : heat and fresh water fluxes a restoring term toward observed SST/SSS 6 5 !!====================================================================== 7 !! History : 1.0 ! 2006-06 (G. Madec) Original code6 !! History : 3.0 ! 2006-06 (G. Madec) Original code 8 7 !! 3.2 ! 2009-04 (B. Lemaire) Introduce iom_put 9 8 !!---------------------------------------------------------------------- … … 29 28 PUBLIC sbc_ssr ! routine called in sbcmod 30 29 31 REAL(wp), ALLOCATABLE, DIMENSION(:) :: buffer ! Temporary buffer for exchange32 30 31 REAL(wp), PUBLIC, DIMENSION(jpi,jpj) :: erp !: evaporation damping [kg/m2/s] 32 REAL(wp), PUBLIC, DIMENSION(jpi,jpj) :: qrp !: heat flux damping [w/m2] 33 34 ! !!* Namelist namsbc_ssr * 35 INTEGER :: nn_sstr, nn_sssr ! SST/SSS restoring indicator 36 REAL(wp) :: dqdt , deds ! restoring factor on SST and SSS 37 38 REAL(wp) , ALLOCATABLE, DIMENSION(:) :: buffer ! Temporary buffer for exchange 33 39 TYPE(FLD), ALLOCATABLE, DIMENSION(:) :: sf_sst ! structure of input SST (file informations, fields read) 34 40 TYPE(FLD), ALLOCATABLE, DIMENSION(:) :: sf_sss ! structure of input SSS (file informations, fields read) 35 36 REAL(wp), PUBLIC, DIMENSION(jpi,jpj) :: erp !: evaporation damping [kg/m2/s]37 REAL(wp), PUBLIC, DIMENSION(jpi,jpj) :: qrp !: heat flux damping [w/m2]38 39 ! !!* Namelist namsbc_ssr *40 INTEGER :: nn_sstr, nn_sssr ! SST/SSS indicator41 REAL(wp) :: dqdt , deds ! restoring term factor42 41 43 42 !! * Substitutions … … 77 76 NAMELIST/namsbc_ssr/ cn_dir, nn_sstr, nn_sssr, dqdt, deds, sn_sst, sn_sss 78 77 !!---------------------------------------------------------------------- 78 ! 79 79 ! ! -------------------- ! 80 80 IF( kt == nit000 ) THEN ! First call kt=nit000 ! 81 81 ! ! -------------------- ! 82 ! ! set file information 83 nn_sstr = 0 82 nn_sstr = 0 !* set file information 84 83 nn_sssr = 0 85 dqdt = -40.e086 deds = -27.7087 cn_dir = './'! directory in which the model is executed84 dqdt = -40.e0 85 deds = -27.70 86 cn_dir = './' ! directory in which the model is executed 88 87 ! ... default values (NB: frequency positive => hours, negative => months) 89 88 ! ! file ! frequency ! variable ! time intep ! clim ! 'yearly' or ! weights ! rotation ! … … 92 91 sn_sss = FLD_N( 'sss' , -1. , 'sss' , .true. , .false. , 'yearly' , '' , '' ) 93 92 94 REWIND ( numnam ) ! ...read in namlist namflx93 REWIND ( numnam ) !* read in namlist namflx 95 94 READ( numnam, namsbc_ssr ) 96 95 97 IF(lwp) THEN !control print96 IF(lwp) THEN !* control print 98 97 WRITE(numout,*) 99 98 WRITE(numout,*) 'sbc_ssr : SST and/or SSS damping term ' … … 106 105 ENDIF 107 106 108 IF( nn_sstr == 1 ) THEN ! set sf_sst structure107 IF( nn_sstr == 1 ) THEN !* set sf_sst structure 109 108 ! 110 109 ALLOCATE( sf_sst(1), STAT=ierror ) … … 114 113 ALLOCATE( sf_sst(1)%fnow(jpi,jpj) ) 115 114 ALLOCATE( sf_sst(1)%fdta(jpi,jpj,2) ) 116 115 ! 117 116 ! fill sf_sst with sn_sst and control print 118 117 CALL fld_fill( sf_sst, (/ sn_sst /), cn_dir, 'sbc_ssr', 'SST restoring term toward SST data', 'namsbc_ssr' ) 119 120 118 ENDIF 121 119 ! … … 128 126 ALLOCATE( sf_sss(1)%fnow(jpi,jpj) ) 129 127 ALLOCATE( sf_sss(1)%fdta(jpi,jpj,2) ) 130 128 ! 131 129 ! fill sf_sss with sn_sss and control print 132 130 CALL fld_fill( sf_sss, (/ sn_sss /), cn_dir, 'sbc_ssr', 'SSS restoring term toward SSS data', 'namsbc_ssr' ) 133 134 131 ENDIF 135 132 ! … … 140 137 141 138 IF( nn_sstr + nn_sssr /= 0 ) THEN 142 143 IF( nn_sstr == 1) CALL fld_read( kt, nn_fsbc, sf_sst ) ! Read SST data and provides it 144 ! ! at the current time-step 145 IF( nn_sssr >= 1) CALL fld_read( kt, nn_fsbc, sf_sss ) ! Read SSS data and provides it 146 ! ! at the current time-step 147 139 ! 140 IF( nn_sstr == 1) CALL fld_read( kt, nn_fsbc, sf_sst ) ! Read SST data and provides it at kt 141 IF( nn_sssr >= 1) CALL fld_read( kt, nn_fsbc, sf_sss ) ! Read SSS data and provides it at kt 142 ! 148 143 ! ! ========================= ! 149 144 IF( MOD( kt-1, nn_fsbc ) == 0 ) THEN ! Add restoring term ! 150 145 ! ! ========================= ! 151 146 ! 152 IF( nn_sstr == 1 ) THEN ! Temperature restoring term147 IF( nn_sstr == 1 ) THEN !* Temperature restoring term 153 148 !CDIR COLLAPSE 154 ! use zqrp scalar to optimize memory access (speedup the loop)155 149 DO jj = 1, jpj 156 150 DO ji = 1, jpi … … 163 157 ENDIF 164 158 ! 165 IF( nn_sssr == 1 ) THEN ! Salinity damping term (salt flux, emps only)159 IF( nn_sssr == 1 ) THEN !* Salinity damping term (salt flux, emps only) 166 160 zsrp = deds / rday ! from [mm/day] to [kg/m2/s] 167 161 !CDIR COLLAPSE 168 ! use zerp scalar to optimize memory access (speedup the loop)169 162 DO jj = 1, jpj 170 163 DO ji = 1, jpi … … 177 170 END DO 178 171 CALL iom_put( "erp", erp ) ! freshwater flux damping 179 ELSEIF( nn_sssr == 2 ) THEN ! Salinity damping term (volume flux, emp and emps)172 ELSEIF( nn_sssr == 2 ) THEN !* Salinity damping term (volume flux, emp and emps) 180 173 zsrp = deds / rday ! from [mm/day] to [kg/m2/s] 181 174 !CDIR COLLAPSE 182 ! use zerp scalar to optimize memory access (speedup the loop)183 175 DO jj = 1, jpj 184 176 DO ji = 1, jpi
Note: See TracChangeset
for help on using the changeset viewer.