- Timestamp:
- 2013-11-14T11:01:51+01:00 (11 years ago)
- Location:
- branches/2013/dev_r4119_INGV6_sol/NEMOGCM/NEMO/OPA_SRC/SBC
- Files:
-
- 13 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2013/dev_r4119_INGV6_sol/NEMOGCM/NEMO/OPA_SRC/SBC/fldread.F90
r3851 r4189 7 7 !! ! 05-2008 (S. Alderson) Modified for Interpolation in memory 8 8 !! ! from input grid to model grid 9 !! ! 10-2013 (D. Delrosso, P. Oddo) implement suppression of 10 !! ! land point prior to interpolation 9 11 !!---------------------------------------------------------------------- 10 12 … … 22 24 USE wrk_nemo ! work arrays 23 25 USE ioipsl, ONLY : ymds2ju, ju2ymds ! for calendar 24 26 USE sbc_oce 27 25 28 IMPLICIT NONE 26 29 PRIVATE … … 40 43 ! ! a string starting with "U" or "V" for each component 41 44 ! ! chars 2 onwards identify which components go together 45 CHARACTER(len = 34) :: lname ! generic name of a NetCDF land/sea mask file to be used, blank if not 46 ! ! 0=sea 1=land 42 47 END TYPE FLD_N 43 48 … … 60 65 LOGICAL, DIMENSION(2) :: rotn ! flag to indicate whether before/after field has been rotated 61 66 INTEGER :: nreclast ! last record to be read in the current file 67 CHARACTER(len = 256) :: lsmname ! current name of the NetCDF mask file acting as a key 62 68 END TYPE FLD 63 69 … … 95 101 TYPE( WGT ), DIMENSION(tot_wgts) :: ref_wgts ! array of wgts 96 102 INTEGER :: nxt_wgt = 1 ! point to next available space in ref_wgts array 103 REAL(wp), PARAMETER :: undeff_lsm = -999.00_wp 97 104 98 105 !$AGRIF_END_DO_NOT_TREAT … … 591 598 ELSE IF( LEN(TRIM(sdjf%wgtname)) > 0 ) THEN 592 599 CALL wgt_list( sdjf, iw ) 593 IF( sdjf%ln_tint ) THEN ; CALL fld_interp( sdjf%num, sdjf%clvar, iw , ipk , sdjf%fdta(:,:,:,2), sdjf%nrec_a(1) )594 ELSE ; CALL fld_interp( sdjf%num, sdjf%clvar, iw , ipk , sdjf%fnow(:,:,: ), sdjf%nrec_a(1) )600 IF( sdjf%ln_tint ) THEN ; CALL fld_interp( sdjf%num, sdjf%clvar, iw , ipk , sdjf%fdta(:,:,:,2), sdjf%nrec_a(1), sdjf%lsmname ) 601 ELSE ; CALL fld_interp( sdjf%num, sdjf%clvar, iw , ipk , sdjf%fnow(:,:,: ), sdjf%nrec_a(1), sdjf%lsmname ) 595 602 ENDIF 596 603 ELSE … … 856 863 sdf(jf)%wgtname = " " 857 864 IF( LEN( TRIM(sdf_n(jf)%wname) ) > 0 ) sdf(jf)%wgtname = TRIM( cdir )//TRIM( sdf_n(jf)%wname ) 865 sdf(jf)%lsmname = " " 866 IF( LEN( TRIM(sdf_n(jf)%lname) ) > 0 ) sdf(jf)%lsmname = TRIM( cdir )//TRIM( sdf_n(jf)%lname ) 858 867 sdf(jf)%vcomp = sdf_n(jf)%vcomp 859 868 sdf(jf)%rotn(:) = .TRUE. ! pretend to be rotated -> won't try to rotate data before the first call to fld_get … … 878 887 & ' weights : ' , TRIM( sdf(jf)%wgtname ), & 879 888 & ' pairing : ' , TRIM( sdf(jf)%vcomp ), & 880 & ' data type: ' , sdf(jf)%cltype 889 & ' data type: ' , sdf(jf)%cltype , & 890 & ' land/sea mask:' , TRIM( sdf(jf)%lsmname ) 881 891 call flush(numout) 882 892 END DO … … 1098 1108 1099 1109 1100 SUBROUTINE fld_interp( num, clvar, kw, kk, dta, nrec ) 1110 SUBROUTINE apply_seaoverland(clmaskfile,zfieldo,jpi1_lsm,jpi2_lsm,jpj1_lsm, & 1111 & jpj2_lsm,itmpi,itmpj,itmpz,rec1_lsm,recn_lsm) 1112 !!--------------------------------------------------------------------- 1113 !! *** ROUTINE apply_seaoverland *** 1114 !! 1115 !! ** Purpose : avoid spurious fluxes in coastal or near-coastal areas 1116 !! due to the wrong usage of "land" values from the coarse 1117 !! atmospheric model when spatial interpolation is required 1118 !! D. Delrosso INGV 1119 !!---------------------------------------------------------------------- 1120 INTEGER :: inum,jni,jnj,jnz,jc ! temporary indices 1121 INTEGER, INTENT(in) :: itmpi,itmpj,itmpz ! lengths 1122 INTEGER, INTENT(in) :: jpi1_lsm,jpi2_lsm,jpj1_lsm,jpj2_lsm ! temporary indices 1123 INTEGER, DIMENSION(3), INTENT(in) :: rec1_lsm,recn_lsm ! temporary arrays for start and length 1124 REAL(wp),DIMENSION (:,:,:),INTENT(inout) :: zfieldo ! input/output array for seaoverland application 1125 REAL(wp),DIMENSION (:,:,:),ALLOCATABLE :: zslmec1 ! temporary array for land point detection 1126 REAL(wp),DIMENSION (:,:), ALLOCATABLE :: zfieldn ! array of forcing field with undeff for land points 1127 REAL(wp),DIMENSION (:,:), ALLOCATABLE :: zfield ! array of forcing field 1128 CHARACTER (len=100), INTENT(in) :: clmaskfile ! land/sea mask file name 1129 !!--------------------------------------------------------------------- 1130 ALLOCATE ( zslmec1(itmpi,itmpj,itmpz) ) 1131 ALLOCATE ( zfieldn(itmpi,itmpj) ) 1132 ALLOCATE ( zfield(itmpi,itmpj) ) 1133 1134 ! Retrieve the land sea mask data 1135 CALL iom_open( clmaskfile, inum ) 1136 SELECT CASE( SIZE(zfieldo(jpi1_lsm:jpi2_lsm,jpj1_lsm:jpj2_lsm,:),3) ) 1137 CASE(1) 1138 CALL iom_get( inum, jpdom_unknown, 'LSM', zslmec1(jpi1_lsm:jpi2_lsm,jpj1_lsm:jpj2_lsm,1), 1, rec1_lsm, recn_lsm) 1139 CASE DEFAULT 1140 CALL iom_get( inum, jpdom_unknown, 'LSM', zslmec1(jpi1_lsm:jpi2_lsm,jpj1_lsm:jpj2_lsm,:), 1, rec1_lsm, recn_lsm) 1141 END SELECT 1142 CALL iom_close( inum ) 1143 1144 DO jnz=1,rec1_lsm(3) !! Loop over k dimension 1145 1146 DO jni=1,itmpi !! copy the original field into a tmp array 1147 DO jnj=1,itmpj !! substituting undeff over land points 1148 zfieldn(jni,jnj) = zfieldo(jni,jnj,jnz) 1149 IF ( zslmec1(jni,jnj,jnz) == 1. ) THEN 1150 zfieldn(jni,jnj) = undeff_lsm 1151 ENDIF 1152 END DO 1153 END DO 1154 1155 CALL seaoverland(zfieldn,itmpi,itmpj,zfield) 1156 DO jc=1,nn_lsm 1157 CALL seaoverland(zfield,itmpi,itmpj,zfield) 1158 END DO 1159 1160 ! Check for Undeff and substitute original values 1161 IF(ANY(zfield==undeff_lsm)) THEN 1162 DO jni=1,itmpi 1163 DO jnj=1,itmpj 1164 IF (zfield(jni,jnj)==undeff_lsm) THEN 1165 zfield(jni,jnj) = zfieldo(jni,jnj,jnz) 1166 ENDIF 1167 ENDDO 1168 ENDDO 1169 ENDIF 1170 1171 zfieldo(:,:,jnz)=zfield(:,:) 1172 1173 END DO !! End Loop over k dimension 1174 1175 DEALLOCATE ( zslmec1 ) 1176 DEALLOCATE ( zfieldn ) 1177 DEALLOCATE ( zfield ) 1178 1179 END SUBROUTINE apply_seaoverland 1180 1181 1182 SUBROUTINE seaoverland(zfieldn,ileni,ilenj,zfield) 1183 !!--------------------------------------------------------------------- 1184 !! *** ROUTINE seaoverland *** 1185 !! 1186 !! ** Purpose : create shifted matrices for seaoverland application 1187 !! D. Delrosso INGV 1188 !!---------------------------------------------------------------------- 1189 INTEGER,INTENT(in) :: ileni,ilenj ! lengths 1190 REAL,DIMENSION (ileni,ilenj),INTENT(in) :: zfieldn ! array of forcing field with undeff for land points 1191 REAL,DIMENSION (ileni,ilenj),INTENT(out) :: zfield ! array of forcing field 1192 REAL,DIMENSION (ileni,ilenj) :: zmat1,zmat2,zmat3,zmat4 ! temporary arrays for seaoverland application 1193 REAL,DIMENSION (ileni,ilenj) :: zmat5,zmat6,zmat7,zmat8 ! temporary arrays for seaoverland application 1194 REAL,DIMENSION (ileni,ilenj) :: zlsm2d ! temporary arrays for seaoverland application 1195 REAL,DIMENSION (ileni,ilenj,8) :: zlsm3d ! temporary arrays for seaoverland application 1196 LOGICAL,DIMENSION (ileni,ilenj,8) :: ll_msknan3d ! logical mask for undeff detection 1197 LOGICAL,DIMENSION (ileni,ilenj) :: ll_msknan2d ! logical mask for undeff detection 1198 !!---------------------------------------------------------------------- 1199 zmat8 = eoshift(zfieldn , SHIFT=-1, BOUNDARY = (/zfieldn(:,1)/) ,DIM=2) 1200 zmat1 = eoshift(zmat8 , SHIFT=-1, BOUNDARY = (/zmat8(1,:)/) ,DIM=1) 1201 zmat2 = eoshift(zfieldn , SHIFT=-1, BOUNDARY = (/zfieldn(1,:)/) ,DIM=1) 1202 zmat4 = eoshift(zfieldn , SHIFT= 1, BOUNDARY = (/zfieldn(:,ilenj)/),DIM=2) 1203 zmat3 = eoshift(zmat4 , SHIFT=-1, BOUNDARY = (/zmat4(1,:)/) ,DIM=1) 1204 zmat5 = eoshift(zmat4 , SHIFT= 1, BOUNDARY = (/zmat4(ileni,:)/) ,DIM=1) 1205 zmat6 = eoshift(zfieldn , SHIFT= 1, BOUNDARY = (/zfieldn(ileni,:)/),DIM=1) 1206 zmat7 = eoshift(zmat8 , SHIFT= 1, BOUNDARY = (/zmat8(ileni,:)/) ,DIM=1) 1207 1208 zlsm3d = RESHAPE( (/ zmat1, zmat2, zmat3, zmat4, zmat5, zmat6, zmat7, zmat8 /), (/ ileni, ilenj, 8 /)) 1209 ll_msknan3d = .not.(zlsm3d==undeff_lsm) 1210 ll_msknan2d = .not.(zfieldn==undeff_lsm) ! FALSE where is Undeff (land) 1211 zlsm2d = (SUM ( zlsm3d, 3 , ll_msknan3d ) )/(MAX(1,(COUNT( ll_msknan3d , 3 )) )) 1212 WHERE ((COUNT( ll_msknan3d , 3 )) == 0.0_wp) zlsm2d = undeff_lsm 1213 zfield = MERGE (zfieldn,zlsm2d,ll_msknan2d) 1214 END SUBROUTINE seaoverland 1215 1216 1217 SUBROUTINE fld_interp( num, clvar, kw, kk, dta, & 1218 & nrec, lsmfile) 1101 1219 !!--------------------------------------------------------------------- 1102 1220 !! *** ROUTINE fld_interp *** … … 1111 1229 REAL(wp), DIMENSION(:,:,:), INTENT(inout) :: dta ! output field on model grid 1112 1230 INTEGER , INTENT(in ) :: nrec ! record number to read (ie time slice) 1231 CHARACTER(LEN=*) , INTENT(in ) :: lsmfile ! land sea mask file name 1113 1232 !! 1114 INTEGER, DIMENSION(3) :: rec1,recn ! temporary arrays for start and length 1115 INTEGER :: jk, jn, jm ! loop counters 1116 INTEGER :: ni, nj ! lengths 1117 INTEGER :: jpimin,jpiwid ! temporary indices 1118 INTEGER :: jpjmin,jpjwid ! temporary indices 1119 INTEGER :: jpi1,jpi2,jpj1,jpj2 ! temporary indices 1233 REAL(wp),DIMENSION(:,:,:),ALLOCATABLE :: ztmp_fly_dta,zfieldo ! temporary array of values on input grid 1234 INTEGER, DIMENSION(3) :: rec1,recn ! temporary arrays for start and length 1235 INTEGER, DIMENSION(3) :: rec1_lsm,recn_lsm ! temporary arrays for start and length in case of seaoverland 1236 INTEGER :: ii_lsm1,ii_lsm2,ij_lsm1,ij_lsm2 ! temporary indices 1237 INTEGER :: jk, jn, jm, jir, jjr ! loop counters 1238 INTEGER :: ni, nj ! lengths 1239 INTEGER :: jpimin,jpiwid ! temporary indices 1240 INTEGER :: jpimin_lsm,jpiwid_lsm ! temporary indices 1241 INTEGER :: jpjmin,jpjwid ! temporary indices 1242 INTEGER :: jpjmin_lsm,jpjwid_lsm ! temporary indices 1243 INTEGER :: jpi1,jpi2,jpj1,jpj2 ! temporary indices 1244 INTEGER :: jpi1_lsm,jpi2_lsm,jpj1_lsm,jpj2_lsm ! temporary indices 1245 INTEGER :: itmpi,itmpj,itmpz ! lengths 1246 1120 1247 !!---------------------------------------------------------------------- 1121 1248 ! … … 1147 1274 jpj2 = jpj1 + recn(2) - 1 1148 1275 1149 ref_wgts(kw)%fly_dta(:,:,:) = 0.0 1150 SELECT CASE( SIZE(ref_wgts(kw)%fly_dta(jpi1:jpi2,jpj1:jpj2,:),3) ) 1151 CASE(1) 1152 CALL iom_get( num, jpdom_unknown, clvar, ref_wgts(kw)%fly_dta(jpi1:jpi2,jpj1:jpj2,1), nrec, rec1, recn) 1153 CASE DEFAULT 1154 CALL iom_get( num, jpdom_unknown, clvar, ref_wgts(kw)%fly_dta(jpi1:jpi2,jpj1:jpj2,:), nrec, rec1, recn) 1155 END SELECT 1276 1277 IF( LEN( TRIM(lsmfile) ) > 0 ) THEN 1278 !! indeces for ztmp_fly_dta 1279 ! -------------------------- 1280 rec1_lsm(1)=MAX(rec1(1)-nn_lsm,1) ! starting index for enlarged external data, x direction 1281 rec1_lsm(2)=MAX(rec1(2)-nn_lsm,1) ! starting index for enlarged external data, y direction 1282 rec1_lsm(3) = 1 ! vertical dimension 1283 recn_lsm(1)=MIN(rec1(1)-rec1_lsm(1)+recn(1)+nn_lsm,ref_wgts(kw)%ddims(1)-rec1_lsm(1)) ! n points in x direction 1284 recn_lsm(2)=MIN(rec1(2)-rec1_lsm(2)+recn(2)+nn_lsm,ref_wgts(kw)%ddims(2)-rec1_lsm(2)) ! n points in y direction 1285 recn_lsm(3) = kk ! number of vertical levels in the input file 1286 1287 ! Avoid out of bound 1288 jpimin_lsm = MAX( rec1_lsm(1)+1, 1 ) 1289 jpjmin_lsm = MAX( rec1_lsm(2)+1, 1 ) 1290 jpiwid_lsm = MIN( recn_lsm(1)-2,ref_wgts(kw)%ddims(1)-rec1(1)+1) 1291 jpjwid_lsm = MIN( recn_lsm(2)-2,ref_wgts(kw)%ddims(2)-rec1(2)+1) 1292 1293 jpi1_lsm = 2+rec1_lsm(1)-jpimin_lsm 1294 jpj1_lsm = 2+rec1_lsm(2)-jpjmin_lsm 1295 jpi2_lsm = jpi1_lsm + recn_lsm(1) - 1 1296 jpj2_lsm = jpj1_lsm + recn_lsm(2) - 1 1297 1298 1299 itmpi=SIZE(ztmp_fly_dta(jpi1_lsm:jpi2_lsm,jpj1_lsm:jpj2_lsm,:),1) 1300 itmpj=SIZE(ztmp_fly_dta(jpi1_lsm:jpi2_lsm,jpj1_lsm:jpj2_lsm,:),2) 1301 itmpz=kk 1302 ALLOCATE(ztmp_fly_dta(itmpi,itmpj,itmpz)) 1303 ztmp_fly_dta(:,:,:) = 0.0 1304 SELECT CASE( SIZE(ztmp_fly_dta(jpi1_lsm:jpi2_lsm,jpj1_lsm:jpj2_lsm,:),3) ) 1305 CASE(1) 1306 CALL iom_get( num, jpdom_unknown, clvar, ztmp_fly_dta(jpi1_lsm:jpi2_lsm,jpj1_lsm:jpj2_lsm,1), & 1307 & nrec, rec1_lsm, recn_lsm) 1308 CASE DEFAULT 1309 CALL iom_get( num, jpdom_unknown, clvar, ztmp_fly_dta(jpi1_lsm:jpi2_lsm,jpj1_lsm:jpj2_lsm,:), & 1310 & nrec, rec1_lsm, recn_lsm) 1311 END SELECT 1312 CALL apply_seaoverland(lsmfile,ztmp_fly_dta(jpi1_lsm:jpi2_lsm,jpj1_lsm:jpj2_lsm,:), & 1313 & jpi1_lsm,jpi2_lsm,jpj1_lsm,jpj2_lsm, & 1314 & itmpi,itmpj,itmpz,rec1_lsm,recn_lsm) 1315 1316 1317 ! Relative indeces for remapping 1318 ii_lsm1 = (rec1(1)-rec1_lsm(1))+1 1319 ii_lsm2 = (ii_lsm1+recn(1))-1 1320 ij_lsm1 = (rec1(2)-rec1_lsm(2))+1 1321 ij_lsm2 = (ij_lsm1+recn(2))-1 1322 1323 ref_wgts(kw)%fly_dta(:,:,:) = 0.0 1324 ref_wgts(kw)%fly_dta(jpi1:jpi2,jpj1:jpj2,:) = ztmp_fly_dta(ii_lsm1:ii_lsm2,ij_lsm1:ij_lsm2,:) 1325 DEALLOCATE(ztmp_fly_dta) 1326 1327 ELSE 1328 1329 ref_wgts(kw)%fly_dta(:,:,:) = 0.0 1330 SELECT CASE( SIZE(ref_wgts(kw)%fly_dta(jpi1:jpi2,jpj1:jpj2,:),3) ) 1331 CASE(1) 1332 CALL iom_get( num, jpdom_unknown, clvar, ref_wgts(kw)%fly_dta(jpi1:jpi2,jpj1:jpj2,1), nrec, rec1, recn) 1333 CASE DEFAULT 1334 CALL iom_get( num, jpdom_unknown, clvar, ref_wgts(kw)%fly_dta(jpi1:jpi2,jpj1:jpj2,:), nrec, rec1, recn) 1335 END SELECT 1336 ENDIF 1337 1156 1338 1157 1339 !! first four weights common to both bilinear and bicubic -
branches/2013/dev_r4119_INGV6_sol/NEMOGCM/NEMO/OPA_SRC/SBC/sbc_oce.F90
r3905 r4189 52 52 LOGICAL , PUBLIC :: ln_cdgw = .FALSE. !: true if neutral drag coefficient from wave model 53 53 LOGICAL , PUBLIC :: ln_sdw = .FALSE. !: true if 3d stokes drift from wave model 54 54 INTEGER , PUBLIC :: nn_lsm = 0 !: Number of iteration if seaoverland is applied 55 55 !!---------------------------------------------------------------------- 56 56 !! Ocean Surface Boundary Condition fields -
branches/2013/dev_r4119_INGV6_sol/NEMOGCM/NEMO/OPA_SRC/SBC/sbcapr.F90
r3795 r4189 78 78 ! !* set file information (default values) 79 79 ! ... default values (NB: frequency positive => hours, negative => months) 80 ! ! file ! frequency ! variable ! time intep ! clim ! 'yearly' or ! weights ! rotation ! 81 ! ! name ! (hours) ! name ! (T/F) ! (T/F) ! 'monthly' ! filename ! pairs ! 82 sn_apr = FLD_N( 'patm' , 24 , 'patm' , .false. , .true. , 'yearly' , '' , '' )80 ! ! file ! frequency ! variable ! time intep ! clim ! 'yearly' or ! weights ! rotation ! land/sea mask ! 81 ! ! name ! (hours) ! name ! (T/F) ! (T/F) ! 'monthly' ! filename ! pairs ! filename ! 82 sn_apr = FLD_N( 'patm' , 24 , 'patm' , .false. , .true. , 'yearly' , '' , '' , '' ) 83 83 cn_dir = './' ! directory in which the Patm data are 84 84 -
branches/2013/dev_r4119_INGV6_sol/NEMOGCM/NEMO/OPA_SRC/SBC/sbcblk_clio.F90
r3625 r4189 143 143 144 144 ! (NB: frequency positive => hours, negative => months) 145 ! ! file ! frequency ! variable ! time intep ! clim ! 'yearly' or ! weights ! rotation ! 146 ! ! name ! (hours) ! name ! (T/F) ! (T/F) ! 'monthly' ! filename ! pairs ! 147 sn_utau = FLD_N( 'utau' , 24 , 'utau' , .true. , .false. , 'yearly' , '' , '' )148 sn_vtau = FLD_N( 'vtau' , 24 , 'vtau' , .true. , .false. , 'yearly' , '' , '' )149 sn_wndm = FLD_N( 'mwnd10m', 24 , 'm_10' , .true. , .false. , 'yearly' , '' , '' )150 sn_tair = FLD_N( 'tair10m', 24 , 't_10' , .false. , .false. , 'yearly' , '' , '' )151 sn_humi = FLD_N( 'humi10m', 24 , 'q_10' , .false. , .false. , 'yearly' , '' , '' )152 sn_ccov = FLD_N( 'ccover' , -1 , 'cloud' , .true. , .false. , 'yearly' , '' , '' )153 sn_prec = FLD_N( 'precip' , -1 , 'precip' , .true. , .false. , 'yearly' , '' , '' )145 ! ! file ! frequency ! variable ! time intep ! clim ! 'yearly' or ! weights ! rotation ! land/sea mask ! 146 ! ! name ! (hours) ! name ! (T/F) ! (T/F) ! 'monthly' ! filename ! pairs ! filename ! 147 sn_utau = FLD_N( 'utau' , 24 , 'utau' , .true. , .false. , 'yearly' , '' , '' , '' ) 148 sn_vtau = FLD_N( 'vtau' , 24 , 'vtau' , .true. , .false. , 'yearly' , '' , '' , '' ) 149 sn_wndm = FLD_N( 'mwnd10m', 24 , 'm_10' , .true. , .false. , 'yearly' , '' , '' , '' ) 150 sn_tair = FLD_N( 'tair10m', 24 , 't_10' , .false. , .false. , 'yearly' , '' , '' , '' ) 151 sn_humi = FLD_N( 'humi10m', 24 , 'q_10' , .false. , .false. , 'yearly' , '' , '' , '' ) 152 sn_ccov = FLD_N( 'ccover' , -1 , 'cloud' , .true. , .false. , 'yearly' , '' , '' , '' ) 153 sn_prec = FLD_N( 'precip' , -1 , 'precip' , .true. , .false. , 'yearly' , '' , '' , '' ) 154 154 155 155 REWIND( numnam ) ! ... read in namlist namsbc_clio -
branches/2013/dev_r4119_INGV6_sol/NEMOGCM/NEMO/OPA_SRC/SBC/sbcblk_core.F90
r3772 r4189 139 139 ! 140 140 ! (NB: frequency positive => hours, negative => months) 141 ! ! file ! frequency ! variable ! time intep ! clim ! 'yearly' or ! weights ! rotation ! 142 ! ! name ! (hours) ! name ! (T/F) ! (T/F) ! 'monthly' ! filename ! pairs ! 143 sn_wndi = FLD_N( 'uwnd10m', 24 , 'u_10' , .false. , .false. , 'yearly' , '' , '' )144 sn_wndj = FLD_N( 'vwnd10m', 24 , 'v_10' , .false. , .false. , 'yearly' , '' , '' )145 sn_qsr = FLD_N( 'qsw' , 24 , 'qsw' , .false. , .false. , 'yearly' , '' , '' )146 sn_qlw = FLD_N( 'qlw' , 24 , 'qlw' , .false. , .false. , 'yearly' , '' , '' )147 sn_tair = FLD_N( 'tair10m', 24 , 't_10' , .false. , .false. , 'yearly' , '' , '' )148 sn_humi = FLD_N( 'humi10m', 24 , 'q_10' , .false. , .false. , 'yearly' , '' , '' )149 sn_prec = FLD_N( 'precip' , -1 , 'precip' , .true. , .false. , 'yearly' , '' , '' )150 sn_snow = FLD_N( 'snow' , -1 , 'snow' , .true. , .false. , 'yearly' , '' , '' )151 sn_tdif = FLD_N( 'taudif' , 24 , 'taudif' , .true. , .false. , 'yearly' , '' , '' )141 ! ! file ! frequency ! variable ! time intep ! clim ! 'yearly' or ! weights ! rotation ! land/sea mask ! 142 ! ! name ! (hours) ! name ! (T/F) ! (T/F) ! 'monthly' ! filename ! pairs ! filename ! 143 sn_wndi = FLD_N( 'uwnd10m', 24 , 'u_10' , .false. , .false. , 'yearly' , '' , '' , '' ) 144 sn_wndj = FLD_N( 'vwnd10m', 24 , 'v_10' , .false. , .false. , 'yearly' , '' , '' , '' ) 145 sn_qsr = FLD_N( 'qsw' , 24 , 'qsw' , .false. , .false. , 'yearly' , '' , '' , '' ) 146 sn_qlw = FLD_N( 'qlw' , 24 , 'qlw' , .false. , .false. , 'yearly' , '' , '' , '' ) 147 sn_tair = FLD_N( 'tair10m', 24 , 't_10' , .false. , .false. , 'yearly' , '' , '' , '' ) 148 sn_humi = FLD_N( 'humi10m', 24 , 'q_10' , .false. , .false. , 'yearly' , '' , '' , '' ) 149 sn_prec = FLD_N( 'precip' , -1 , 'precip' , .true. , .false. , 'yearly' , '' , '' , '' ) 150 sn_snow = FLD_N( 'snow' , -1 , 'snow' , .true. , .false. , 'yearly' , '' , '' , '' ) 151 sn_tdif = FLD_N( 'taudif' , 24 , 'taudif' , .true. , .false. , 'yearly' , '' , '' , '' ) 152 152 ! 153 153 REWIND( numnam ) ! read in namlist namsbc_core -
branches/2013/dev_r4119_INGV6_sol/NEMOGCM/NEMO/OPA_SRC/SBC/sbcblk_mfs.F90
r3625 r4189 137 137 ! 138 138 ! (NB: frequency positive => hours, negative => months) 139 ! ! file ! frequency ! variable ! time intep ! clim ! 'yearly' or ! weights ! rotation ! 140 ! ! name ! (hours) ! name ! (T/F) ! (T/F) ! 'monthly' ! filename ! pairs ! 141 sn_wndi = FLD_N( 'ecmwf' , 24 , 'u10' , .false. , .false. , 'daily' , '' , '' )142 sn_wndj = FLD_N( 'ecmwf' , 24 , 'v10' , .false. , .false. , 'daily' , '' , '' )143 sn_clc = FLD_N( 'ecmwf' , 24 , 'clc' , .false. , .false. , 'daily' , '' , '' )144 sn_msl = FLD_N( 'ecmwf' , 24 , 'msl' , .false. , .false. , 'daily' , '' , '' )145 sn_tair = FLD_N( 'ecmwf' , 24 , 't2' , .false. , .false. , 'daily' , '' , '' )146 sn_rhm = FLD_N( 'ecmwf' , 24 , 'rh' , .false. , .false. , 'daily' , '' , '' )147 sn_prec = FLD_N( 'precip_cmap' , -1 , 'precip' , .true. , .true. , 'yearly' , '' , '' )139 ! ! file ! frequency ! variable ! time intep ! clim ! 'yearly' or ! weights ! rotation ! land/sea mask ! 140 ! ! name ! (hours) ! name ! (T/F) ! (T/F) ! 'monthly' ! filename ! pairs ! filename ! 141 sn_wndi = FLD_N( 'ecmwf' , 24 , 'u10' , .false. , .false. , 'daily' , '' , '' , '' ) 142 sn_wndj = FLD_N( 'ecmwf' , 24 , 'v10' , .false. , .false. , 'daily' , '' , '' , '' ) 143 sn_clc = FLD_N( 'ecmwf' , 24 , 'clc' , .false. , .false. , 'daily' , '' , '' , '' ) 144 sn_msl = FLD_N( 'ecmwf' , 24 , 'msl' , .false. , .false. , 'daily' , '' , '' , '' ) 145 sn_tair = FLD_N( 'ecmwf' , 24 , 't2' , .false. , .false. , 'daily' , '' , '' , '' ) 146 sn_rhm = FLD_N( 'ecmwf' , 24 , 'rh' , .false. , .false. , 'daily' , '' , '' , '' ) 147 sn_prec = FLD_N( 'precip_cmap' , -1 , 'precip' , .true. , .true. , 'yearly' , '' , '' , '' ) 148 148 ! 149 149 REWIND( numnam ) ! ... read in namlist namsbc_mfs -
branches/2013/dev_r4119_INGV6_sol/NEMOGCM/NEMO/OPA_SRC/SBC/sbcflx.F90
r3625 r4189 92 92 cn_dir = './' ! directory in which the model is executed 93 93 ! ... default values (NB: frequency positive => hours, negative => months) 94 ! ! file ! frequency ! variable ! time intep ! clim ! 'yearly' or ! weights ! rotation ! 95 ! ! name ! (hours) ! name ! (T/F) ! (T/F) ! 'monthly' ! filename ! pairs ! 96 sn_utau = FLD_N( 'utau' , 24 , 'utau' , .false. , .false. , 'yearly' , '' , '' )97 sn_vtau = FLD_N( 'vtau' , 24 , 'vtau' , .false. , .false. , 'yearly' , '' , '' )98 sn_qtot = FLD_N( 'qtot' , 24 , 'qtot' , .false. , .false. , 'yearly' , '' , '' )99 sn_qsr = FLD_N( 'qsr' , 24 , 'qsr' , .false. , .false. , 'yearly' , '' , '' )100 sn_emp = FLD_N( 'emp' , 24 , 'emp' , .false. , .false. , 'yearly' , '' , '' )94 ! ! file ! frequency ! variable ! time intep ! clim ! 'yearly' or ! weights ! rotation ! land/sea mask ! 95 ! ! name ! (hours) ! name ! (T/F) ! (T/F) ! 'monthly' ! filename ! pairs ! filename ! 96 sn_utau = FLD_N( 'utau' , 24 , 'utau' , .false. , .false. , 'yearly' , '' , '' , '' ) 97 sn_vtau = FLD_N( 'vtau' , 24 , 'vtau' , .false. , .false. , 'yearly' , '' , '' , '' ) 98 sn_qtot = FLD_N( 'qtot' , 24 , 'qtot' , .false. , .false. , 'yearly' , '' , '' , '' ) 99 sn_qsr = FLD_N( 'qsr' , 24 , 'qsr' , .false. , .false. , 'yearly' , '' , '' , '' ) 100 sn_emp = FLD_N( 'emp' , 24 , 'emp' , .false. , .false. , 'yearly' , '' , '' , '' ) 101 101 ! 102 102 REWIND ( numnam ) ! read in namlist namflx -
branches/2013/dev_r4119_INGV6_sol/NEMOGCM/NEMO/OPA_SRC/SBC/sbcice_cice.F90
r3625 r4189 743 743 744 744 ! (NB: frequency positive => hours, negative => months) 745 ! ! file ! frequency ! variable ! time intep ! clim ! 'yearly' or ! weights ! rotation ! 746 ! ! name ! (hours) ! name ! (T/F) ! (T/F) ! 'monthly' ! filename ! pairs ! 747 sn_snow = FLD_N( 'snowfall_1m' , -1. , 'snowfall' , .true. , .true. , ' yearly' , '' , '' )748 sn_rain = FLD_N( 'rainfall_1m' , -1. , 'rainfall' , .true. , .true. , ' yearly' , '' , '' )749 sn_sblm = FLD_N( 'sublim_1m' , -1. , 'sublim' , .true. , .true. , ' yearly' , '' , '' )750 sn_top1 = FLD_N( 'topmeltn1_1m' , -1. , 'topmeltn1' , .true. , .true. , ' yearly' , '' , '' )751 sn_top2 = FLD_N( 'topmeltn2_1m' , -1. , 'topmeltn2' , .true. , .true. , ' yearly' , '' , '' )752 sn_top3 = FLD_N( 'topmeltn3_1m' , -1. , 'topmeltn3' , .true. , .true. , ' yearly' , '' , '' )753 sn_top4 = FLD_N( 'topmeltn4_1m' , -1. , 'topmeltn4' , .true. , .true. , ' yearly' , '' , '' )754 sn_top5 = FLD_N( 'topmeltn5_1m' , -1. , 'topmeltn5' , .true. , .true. , ' yearly' , '' , '' )755 sn_bot1 = FLD_N( 'botmeltn1_1m' , -1. , 'botmeltn1' , .true. , .true. , ' yearly' , '' , '' )756 sn_bot2 = FLD_N( 'botmeltn2_1m' , -1. , 'botmeltn2' , .true. , .true. , ' yearly' , '' , '' )757 sn_bot3 = FLD_N( 'botmeltn3_1m' , -1. , 'botmeltn3' , .true. , .true. , ' yearly' , '' , '' )758 sn_bot4 = FLD_N( 'botmeltn4_1m' , -1. , 'botmeltn4' , .true. , .true. , ' yearly' , '' , '' )759 sn_bot5 = FLD_N( 'botmeltn5_1m' , -1. , 'botmeltn5' , .true. , .true. , ' yearly' , '' , '' )745 ! ! file ! frequency ! variable ! time intep ! clim ! 'yearly' or ! weights ! rotation ! land/sea mask ! 746 ! ! name ! (hours) ! name ! (T/F) ! (T/F) ! 'monthly' ! filename ! pairs ! filename ! 747 sn_snow = FLD_N( 'snowfall_1m' , -1. , 'snowfall' , .true. , .true. , ' yearly' , '' , '' , '' ) 748 sn_rain = FLD_N( 'rainfall_1m' , -1. , 'rainfall' , .true. , .true. , ' yearly' , '' , '' , '' ) 749 sn_sblm = FLD_N( 'sublim_1m' , -1. , 'sublim' , .true. , .true. , ' yearly' , '' , '' , '' ) 750 sn_top1 = FLD_N( 'topmeltn1_1m' , -1. , 'topmeltn1' , .true. , .true. , ' yearly' , '' , '' , '' ) 751 sn_top2 = FLD_N( 'topmeltn2_1m' , -1. , 'topmeltn2' , .true. , .true. , ' yearly' , '' , '' , '' ) 752 sn_top3 = FLD_N( 'topmeltn3_1m' , -1. , 'topmeltn3' , .true. , .true. , ' yearly' , '' , '' , '' ) 753 sn_top4 = FLD_N( 'topmeltn4_1m' , -1. , 'topmeltn4' , .true. , .true. , ' yearly' , '' , '' , '' ) 754 sn_top5 = FLD_N( 'topmeltn5_1m' , -1. , 'topmeltn5' , .true. , .true. , ' yearly' , '' , '' , '' ) 755 sn_bot1 = FLD_N( 'botmeltn1_1m' , -1. , 'botmeltn1' , .true. , .true. , ' yearly' , '' , '' , '' ) 756 sn_bot2 = FLD_N( 'botmeltn2_1m' , -1. , 'botmeltn2' , .true. , .true. , ' yearly' , '' , '' , '' ) 757 sn_bot3 = FLD_N( 'botmeltn3_1m' , -1. , 'botmeltn3' , .true. , .true. , ' yearly' , '' , '' , '' ) 758 sn_bot4 = FLD_N( 'botmeltn4_1m' , -1. , 'botmeltn4' , .true. , .true. , ' yearly' , '' , '' , '' ) 759 sn_bot5 = FLD_N( 'botmeltn5_1m' , -1. , 'botmeltn5' , .true. , .true. , ' yearly' , '' , '' , '' ) 760 760 761 761 ! REWIND ( numnam ) ! ... at some point might read in from NEMO namelist? -
branches/2013/dev_r4119_INGV6_sol/NEMOGCM/NEMO/OPA_SRC/SBC/sbcice_if.F90
r3625 r4189 72 72 cn_dir = './' ! directory in which the model is executed 73 73 ! ... default values (NB: frequency positive => hours, negative => months) 74 ! ! file ! frequency ! variable ! time intep ! clim ! 'yearly' or ! weights ! rotation ! 75 ! ! name ! (hours) ! name ! (T/F) ! (T/F) ! 'monthly' ! filename ! pairs ! 76 sn_ice = FLD_N('ice_cover', -1 , 'ice_cov' , .true. , .true. , 'yearly' , '' , '')74 ! ! file ! frequency ! variable ! time intep ! clim ! 'yearly' or ! weights ! rotation ! land/sea mask ! 75 ! ! name ! (hours) ! name ! (T/F) ! (T/F) ! 'monthly' ! filename ! pairs ! filename ! 76 sn_ice = FLD_N('ice_cover', -1 , 'ice_cov' , .true. , .true. , 'yearly' , '' , '' , '' ) 77 77 78 78 REWIND ( numnam ) ! ... read in namlist namiif -
branches/2013/dev_r4119_INGV6_sol/NEMOGCM/NEMO/OPA_SRC/SBC/sbcmod.F90
r4028 r4189 86 86 NAMELIST/namsbc/ nn_fsbc , ln_ana , ln_flx, ln_blk_clio, ln_blk_core, ln_cpl, & 87 87 & ln_blk_mfs, ln_apr_dyn, nn_ice, nn_ice_embd, ln_dm2dc , ln_rnf, & 88 & ln_ssr , nn_fwb , ln_cdgw , ln_wave , ln_sdw 88 & ln_ssr , nn_fwb , ln_cdgw , ln_wave , ln_sdw , nn_lsm 89 89 !!---------------------------------------------------------------------- 90 90 … … 128 128 WRITE(numout,*) ' FreshWater Budget control (=0/1/2) nn_fwb = ', nn_fwb 129 129 WRITE(numout,*) ' closed sea (=0/1) (set in namdom) nn_closea = ', nn_closea 130 WRITE(numout,*) ' n. of iterations if land-sea-mask applied nn_lsm = ', nn_lsm 130 131 ENDIF 131 132 -
branches/2013/dev_r4119_INGV6_sol/NEMOGCM/NEMO/OPA_SRC/SBC/sbcrnf.F90
r3832 r4189 255 255 ! ! ============ 256 256 ! (NB: frequency positive => hours, negative => months) 257 ! ! file ! frequency ! variable ! time intep ! clim ! 'yearly' or ! weights ! rotation!258 ! ! name ! (hours) ! name ! (T/F) ! (T/F) ! 'monthly' ! filename ! pairs!259 sn_rnf = FLD_N( 'runoffs' , -1 , 'sorunoff' , .TRUE. , .true. , 'yearly' , '' , '')260 sn_cnf = FLD_N( 'runoffs' , 0 , 'sorunoff' , .FALSE. , .true. , 'yearly' , '' , '')261 262 sn_s_rnf = FLD_N( 'runoffs' , 24. , 'rosaline' , .TRUE. , .true. , 'yearly' , '' , '')263 sn_t_rnf = FLD_N( 'runoffs' , 24. , 'rotemper' , .TRUE. , .true. , 'yearly' , '' , '')264 sn_dep_rnf = FLD_N( 'runoffs', 0. , 'rodepth' , .FALSE. , .true. , 'yearly' , '' , '')257 ! ! file ! frequency ! variable ! time intep ! clim ! 'yearly' or ! weights ! rotation ! land/sea mask ! 258 ! ! name ! (hours) ! name ! (T/F) ! (T/F) ! 'monthly' ! filename ! pairs ! filename ! 259 sn_rnf = FLD_N( 'runoffs' , -1 , 'sorunoff' , .TRUE. , .true. , 'yearly' , '' , '' , '' ) 260 sn_cnf = FLD_N( 'runoffs' , 0 , 'sorunoff' , .FALSE. , .true. , 'yearly' , '' , '' , '' ) 261 262 sn_s_rnf = FLD_N( 'runoffs' , 24. , 'rosaline' , .TRUE. , .true. , 'yearly' , '' , '' , '' ) 263 sn_t_rnf = FLD_N( 'runoffs' , 24. , 'rotemper' , .TRUE. , .true. , 'yearly' , '' , '' , '' ) 264 sn_dep_rnf = FLD_N( 'runoffs', 0. , 'rodepth' , .FALSE. , .true. , 'yearly' , '' , '' , '' ) 265 265 ! 266 266 REWIND ( numnam ) ! Read Namelist namsbc_rnf -
branches/2013/dev_r4119_INGV6_sol/NEMOGCM/NEMO/OPA_SRC/SBC/sbcssr.F90
r3764 r4189 169 169 cn_dir = './' ! directory in which the model is executed 170 170 ! ... default values (NB: frequency positive => hours, negative => months) 171 ! ! file ! frequency ! variable ! time intep ! clim ! 'yearly' or ! weights ! rotation ! 172 ! ! name ! (hours) ! name ! (T/F) ! (T/F) ! 'monthly' ! filename ! pairs ! 173 sn_sst = FLD_N( 'sst' , 24 , 'sst' , .false. , .false. , 'yearly' , '' , '' )174 sn_sss = FLD_N( 'sss' , -1 , 'sss' , .true. , .false. , 'yearly' , '' , '' )171 ! ! file ! frequency ! variable ! time intep ! clim ! 'yearly' or ! weights ! rotation ! land/sea mask ! 172 ! ! name ! (hours) ! name ! (T/F) ! (T/F) ! 'monthly' ! filename ! pairs ! filename ! 173 sn_sst = FLD_N( 'sst' , 24 , 'sst' , .false. , .false. , 'yearly' , '' , '' , '' ) 174 sn_sss = FLD_N( 'sss' , -1 , 'sss' , .true. , .false. , 'yearly' , '' , '' , '' ) 175 175 176 176 REWIND( numnam ) !* read in namlist namflx -
branches/2013/dev_r4119_INGV6_sol/NEMOGCM/NEMO/OPA_SRC/SBC/sbcwave.F90
r3680 r4189 84 84 ! !* set file information (default values) 85 85 ! ... default values (NB: frequency positive => hours, negative => months) 86 ! ! file ! frequency ! variable ! time intep ! clim ! 'yearly' or ! weights ! rotation ! 87 ! ! name ! (hours) ! name ! (T/F) ! (T/F) ! 'monthly' ! filename ! pairs ! 88 sn_cdg = FLD_N('cdg_wave' , 1 ,'drag_coeff', .true. , .false. , 'daily' , '' , '' )89 sn_usd = FLD_N('sdw_wave' , 1 ,'u_sd2d', .true. , .false. , 'daily' , '' , '' )90 sn_vsd = FLD_N('sdw_wave' , 1 ,'v_sd2d', .true. , .false. , 'daily' , '' , '' )91 sn_wn = FLD_N( 'sdw_wave' , 1 ,'wave_num', .true. , .false. , 'daily' , '' , '' )86 ! ! file ! frequency ! variable ! time intep ! clim ! 'yearly' or ! weights ! rotation ! land/sea mask ! 87 ! ! name ! (hours) ! name ! (T/F) ! (T/F) ! 'monthly' ! filename ! pairs ! filename ! 88 sn_cdg = FLD_N('cdg_wave' , 1 ,'drag_coeff', .true. , .false. , 'daily' , '' , '' , '' ) 89 sn_usd = FLD_N('sdw_wave' , 1 ,'u_sd2d', .true. , .false. , 'daily' , '' , '' , '' ) 90 sn_vsd = FLD_N('sdw_wave' , 1 ,'v_sd2d', .true. , .false. , 'daily' , '' , '' , '' ) 91 sn_wn = FLD_N( 'sdw_wave' , 1 ,'wave_num', .true. , .false. , 'daily' , '' , '' , '' ) 92 92 cn_dir = './' ! directory in which the wave data are 93 93
Note: See TracChangeset
for help on using the changeset viewer.