Changeset 473 for trunk/NEMO/OPA_SRC/SBC/flx_bulk_monthly.h90
- Timestamp:
- 2006-05-11T17:04:37+02:00 (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMO/OPA_SRC/SBC/flx_bulk_monthly.h90
r392 r473 12 12 ji, jj, & ! loop indices 13 13 numflx, & ! logical unit for surface fluxes data 14 nflx1 , nflx2,& ! first and second record used14 nflx1 , nflx2, & ! first and second record used 15 15 nflx11, nflx12 ! ??? 16 16 17 REAL(wp), DIMENSION(jpi,jpj,2,7) :: & 17 INTEGER, PARAMETER :: jpf = 7 18 REAL(wp), DIMENSION(jpi,jpj,2,jpf) :: & 18 19 flxdta ! 2 consecutive set of CLIO monthly fluxes 19 20 !!---------------------------------------------------------------------- … … 60 61 !! ! 92-07 (M. Imbard) 61 62 !! ! 96-11 (E. Guilyardi) Daily AGCM input files 62 !! ! 99-11 (M. Imbard) NetCDF FORMAT with io ipsl63 !! ! 99-11 (M. Imbard) NetCDF FORMAT with io-ipsl 63 64 !! ! 00-10 (J.-P. Boulanger) adjusted for reading any 64 65 !! daily wind stress data including a climatology … … 67 68 !!---------------------------------------------------------------------- 68 69 !! * modules used 69 USE io ipsl70 USE iom 70 71 USE blk_oce ! bulk variable 71 72 USE bulk ! bulk module … … 75 76 76 77 !! * Local declarations 77 INTEGER, PARAMETER :: &78 jpmois = 12, & ! number of months79 jpf = 7 ! ??? !bug ?80 78 INTEGER :: jm, jt ! dummy loop indices 81 79 INTEGER :: & 82 imois, imois2, itime, & ! temporary integers 83 i15 , iman , & ! " " 84 ipi , ipj , ipk ! " " 85 INTEGER, DIMENSION(jpmois) :: & 86 istep ! ??? 80 imois, imois2, & ! temporary integers 81 i15 , iman ! " " 87 82 REAL(wp) :: & 88 zsecond, zdate0, & ! temporary scalars 89 zxy , zdtt , & ! " " 90 zdatet , zttbt , & ! " " 91 zttat , zdtts6 ! " " 92 REAL(wp), DIMENSION(jpk) :: & 93 zlev ! ??? 94 REAL(wp), DIMENSION(jpi,jpj) :: & 95 zlon , zlat ! ??? 96 CHARACTER (len=32) :: & 97 clname ! flux filename 83 zxy , zdtt , & ! " " 84 zdatet , zttbt , & ! " " 85 zttat , zdtts6 ! " " 98 86 !!--------------------------------------------------------------------- 99 clname = 'flx.nc'100 101 87 102 88 ! Initialization … … 104 90 105 91 i15 = INT( 2 * FLOAT( nday ) / ( FLOAT( nobis(nmonth) ) + 0.5 ) ) 106 iman = 1292 iman = INT( raamo ) 107 93 imois = nmonth + i15 - 1 108 94 IF( imois == 0 ) imois = iman 109 95 imois2 = nmonth 110 96 111 itime = jpmois112 113 ipi = jpiglo114 ipj = jpjglo115 ipk = jpk116 117 118 97 ! 1. first call kt=nit000 119 98 ! ----------------------- 120 99 121 100 IF( kt == nit000 ) THEN 101 ! initializations 122 102 nflx1 = 0 123 103 nflx11 = 0 104 ! open the file 124 105 IF(lwp) THEN 125 WRITE(numout,*) 126 WRITE(numout,*) ' global CLIO flx monthly fields in NetCDF format'127 WRITE(numout,*) ' ------------------------------'128 WRITE(numout,*) 106 WRITE(numout,*) ' ' 107 WRITE(numout,*) ' **** Routine flx_bulk_monthly.h90' 108 WRITE(numout,*) ' ' 109 WRITE(numout,*) ' global CLIO flx monthly fields' 129 110 ENDIF 130 131 ! Read first records 132 133 ! title, dimensions and tests 134 #if defined key_agrif 135 if ( .NOT. Agrif_Root() ) then 136 clname = TRIM(Agrif_CFixed())//'_'//TRIM(clname) 137 endif 138 #endif 139 CALL flinopen( clname, mig(1), nlci, mjg(1), nlcj, & 140 & .FALSE., ipi, ipj, ipk, zlon, zlat, zlev, & 141 & itime, istep, zdate0, zsecond, numflx ) 142 143 ! temperature 144 ! Utilisation d'un spline, on lit le champ a mois=1 145 CALL flinget( numflx, 'socliot1', jpidta, jpjdta, jpk, & 146 & jpmois, 1, 1, mig(1), nlci, & 147 & mjg(1), nlcj, flxdta(1:nlci,1:nlcj,1,5) ) 148 149 ! Extra-halo initialization in MPP 150 IF( lk_mpp ) THEN 151 DO ji = nlci+1, jpi 152 flxdta(ji,:,1,5) = flxdta(1,:,1,5) ; flxdta(ji,:,2,5) = flxdta(1,:,2,5) 153 ENDDO 154 DO jj = nlcj+1, jpj 155 flxdta(:,jj,1,5) = flxdta(:,1,1,5) ; flxdta(:,jj,2,5) = flxdta(:,1,2,5) 156 ENDDO 157 ENDIF 111 CALL iom_open ( 'flx.nc', numflx ) 112 113 ! temperature, spline initialization, we read the first record 114 CALL iom_get ( numflx, jpdom_data, 'socliot1', flxdta(:,:,1,5), 1 ) 115 158 116 ENDIF 159 117 … … 181 139 182 140 ! humidity 183 CALL flinget(numflx,'socliohu',jpidta,jpjdta,jpk,jpmois,nflx1, & 184 nflx1,mig(1),nlci,mjg(1),nlcj,flxdta(1:nlci,1:nlcj,1,1)) 185 CALL flinget(numflx,'socliohu',jpidta,jpjdta,jpk,jpmois,nflx2, & 186 nflx2,mig(1),nlci,mjg(1),nlcj,flxdta(1:nlci,1:nlcj,2,1)) 141 CALL iom_get ( numflx, jpdom_data, 'socliohu', flxdta(:,:,1,1), nflx1 ) 142 CALL iom_get ( numflx, jpdom_data, 'socliohu', flxdta(:,:,2,1), nflx2 ) 187 143 ! 10m wind module 188 CALL flinget(numflx,'socliowi',jpidta,jpjdta,jpk,jpmois,nflx1, & 189 nflx1,mig(1),nlci,mjg(1),nlcj,flxdta(1:nlci,1:nlcj,1,2)) 190 CALL flinget(numflx,'socliowi',jpidta,jpjdta,jpk,jpmois,nflx2, & 191 nflx2,mig(1),nlci,mjg(1),nlcj,flxdta(1:nlci,1:nlcj,2,2)) 144 CALL iom_get ( numflx, jpdom_data, 'socliowi', flxdta(:,:,1,2), nflx1 ) 145 CALL iom_get ( numflx, jpdom_data, 'socliowi', flxdta(:,:,2,2), nflx2 ) 192 146 ! cloud cover 193 CALL flinget(numflx,'socliocl',jpidta,jpjdta,jpk,jpmois,nflx1, & 194 nflx1,mig(1),nlci,mjg(1),nlcj,flxdta(1:nlci,1:nlcj,1,3)) 195 CALL flinget(numflx,'socliocl',jpidta,jpjdta,jpk,jpmois,nflx2, & 196 nflx2,mig(1),nlci,mjg(1),nlcj,flxdta(1:nlci,1:nlcj,2,3)) 147 CALL iom_get ( numflx, jpdom_data, 'socliocl', flxdta(:,:,1,3), nflx1 ) 148 CALL iom_get ( numflx, jpdom_data, 'socliocl', flxdta(:,:,2,3), nflx2 ) 197 149 ! precipitations 198 CALL flinget(numflx,'socliopl',jpidta,jpjdta,jpk,jpmois,nflx1, & 199 nflx1,mig(1),nlci,mjg(1),nlcj,flxdta(1:nlci,1:nlcj,1,4)) 200 CALL flinget(numflx,'socliopl',jpidta,jpjdta,jpk,jpmois,nflx2, & 201 nflx2,mig(1),nlci,mjg(1),nlcj,flxdta(1:nlci,1:nlcj,2,4)) 150 CALL iom_get ( numflx, jpdom_data, 'socliopl', flxdta(:,:,1,4), nflx1 ) 151 CALL iom_get ( numflx, jpdom_data, 'socliopl', flxdta(:,:,2,4), nflx2 ) 202 152 203 153 IF(lwp .AND. nitend-nit000 <= 100 ) THEN … … 208 158 WRITE(numout,*) 209 159 WRITE(numout,*) 'Clio mounth: ',nflx1,' field: ',jm,' multiply by ',0.1 210 CALL prihre( flxdta(:,:,1,jm),jpi,jpj,1,jpi,20,1,jpj,10,.1,numout)160 CALL prihre( flxdta(:,:,1,jm),jpi,jpj,1,jpi,20,1,jpj,10,.1,numout ) 211 161 END DO 212 162 ENDIF 213 163 214 ! Extra-halo initialization in MPP215 IF( lk_mpp ) THEN216 DO ji = nlci+1, jpi217 flxdta(ji,:,1,1) = flxdta(1,:,1,1) ; flxdta(ji,:,2,1) = flxdta(1,:,2,1)218 flxdta(ji,:,1,2) = flxdta(1,:,1,2) ; flxdta(ji,:,2,2) = flxdta(1,:,2,2)219 flxdta(ji,:,1,3) = flxdta(1,:,1,3) ; flxdta(ji,:,2,3) = flxdta(1,:,2,3)220 flxdta(ji,:,1,4) = flxdta(1,:,1,4) ; flxdta(ji,:,2,4) = flxdta(1,:,2,4)221 ENDDO222 DO jj = nlcj+1, jpj223 flxdta(:,jj,1,1) = flxdta(:,1,1,1) ; flxdta(:,jj,2,1) = flxdta(:,1,2,1)224 flxdta(:,jj,1,2) = flxdta(:,1,1,2) ; flxdta(:,jj,2,2) = flxdta(:,1,2,2)225 flxdta(:,jj,1,3) = flxdta(:,1,1,3) ; flxdta(:,jj,2,3) = flxdta(:,1,2,3)226 flxdta(:,jj,1,4) = flxdta(:,1,1,4) ; flxdta(:,jj,2,4) = flxdta(:,1,2,4)227 ENDDO228 ENDIF229 230 164 ENDIF 231 232 ! ------------------- !233 ! Last call kt=nitend !234 ! ------------------- !235 236 ! Closing of the numflx file (required in mpp)237 IF( kt == nitend ) CALL flinclo(numflx)238 239 165 240 166 IF( kt == nit000 .OR. imois2 /= nflx11 ) THEN … … 258 184 ! air temperature 259 185 ! Utilisation d'un spline, on lit le champ a mois=nflx1 et nflx2 260 CALL flinget(numflx,'socliot1',jpidta,jpjdta,jpk,jpmois,nflx11, & 261 nflx11,mig(1),nlci,mjg(1),nlcj,flxdta(1:nlci,1:nlcj,1,6)) 262 CALL flinget(numflx,'socliot1',jpidta,jpjdta,jpk,jpmois,nflx12, & 263 nflx12,mig(1),nlci,mjg(1),nlcj,flxdta(1:nlci,1:nlcj,2,6)) 186 CALL iom_get (numflx,jpdom_data,'socliot1',flxdta(:,:,1,6),nflx11) 187 CALL iom_get (numflx,jpdom_data,'socliot1',flxdta(:,:,2,6),nflx12) 264 188 ! air temperature derivative (to reconstruct a daily field) 265 CALL flinget(numflx,'socliot2',jpidta,jpjdta,jpk,jpmois,nflx11, & 266 nflx11,mig(1),nlci,mjg(1),nlcj,flxdta(1:nlci,1:nlcj,1,7)) 267 CALL flinget(numflx,'socliot2',jpidta,jpjdta,jpk,jpmois,nflx12, & 268 nflx12,mig(1),nlci,mjg(1),nlcj,flxdta(1:nlci,1:nlcj,2,7)) 269 189 CALL iom_get (numflx,jpdom_data,'socliot2',flxdta(:,:,1,7),nflx11) 190 CALL iom_get (numflx,jpdom_data,'socliot2',flxdta(:,:,2,7),nflx12) 191 270 192 IF(lwp) THEN 271 193 WRITE(numout,*) … … 280 202 ENDIF 281 203 282 ! Extra-halo initialization in MPP283 IF( lk_mpp ) THEN284 DO ji = nlci+1, jpi285 flxdta(ji,:,1,6) = flxdta(1,:,1,6) ; flxdta(ji,:,2,6) = flxdta(1,:,2,6)286 flxdta(ji,:,1,7) = flxdta(1,:,1,7) ; flxdta(ji,:,2,7) = flxdta(1,:,2,7)287 ENDDO288 DO jj = nlcj+1, jpj289 flxdta(:,jj,1,6) = flxdta(:,1,1,6) ; flxdta(:,jj,2,6) = flxdta(:,1,2,6)290 flxdta(:,jj,1,7) = flxdta(:,1,1,7) ; flxdta(:,jj,2,7) = flxdta(:,1,2,7)291 ENDDO292 ENDIF293 294 204 ENDIF 295 205 … … 321 231 CALL blk( kt ) ! bulk formulea fluxes 322 232 233 ! ------------------- ! 234 ! Last call kt=nitend ! 235 ! ------------------- ! 236 237 ! Closing of the numflx file (required in mpp) 238 IF( kt == nitend ) CALL iom_close (numflx) 239 323 240 END SUBROUTINE flx
Note: See TracChangeset
for help on using the changeset viewer.