PRO forcagequimarche,iyear,ian @init2 @initorca2_bab @common ;ian='01' ;iyear='1993' e_exp='ESS' rep_fred='/usr/work/sur/fvi/OPA/geomag/' key_portrait = 0 ; stockage des fichiers brut ioDATA='/usr/work/sur/fvi/OPA/ORCA2/' file_U=e_exp+'_5d_'+ian+'0101_'+ian+'1231_grid_U.nc' print, file_U file_V=e_exp+'_5d_'+ian+'0101_'+ian+'1231_grid_V.nc' print, file_V file_T=e_exp+'_5d_'+ian+'0101_'+ian+'1231_grid_T.nc' print, file_T file_Sed= rep_fred+'cond_sed_ORCA2.nc' file_Br= rep_fred+'Br_ORCA2.nc' ; title t_exp= e_exp ; t_exp0= e_exp0 t_bt = 'bar_transp' ioORLN2 = '/usr/work/sur/fvi/OPA/ORCA2' ;facteur d'echelle vertical for partial steps e3v3d=read_ncdf('e3v_ps',0,/timestep,iodir=ioORLN2,/nostruct,/tout,filename='meshmask_bab.nc') e3u3d=read_ncdf('e3u_ps',0,/timestep,iodir=ioORLN2,/nostruct,/tout,filename='meshmask_bab.nc') SIGMAsed=read_ncdf('cond_sed',0,/timestep,/nostruct,/tout,filename=file_Sed,/cont_nofill) ;BR=read_ncdf('Br',0,/timestep,/nostruct,/tout,filename=file_Br) BR=read_ncdf('Br',0,/timestep,/nostruct,/tout,filename=file_Br,/cont_nofill) ; vertical integration: e3t3d=make_array(jpi,jpj,jpk) for k=0, jpk-1 do begin &$ for j=0,jpj-1 do begin &$ for i=0,jpi-1 do begin &$ e3t3d(i,j,k) = e3t(k) &$ endfor &$ endfor &$ endfor jpt = 73 ;vud = make_array(jpi,jpj,jpt) ;vvd = make_array(jpi, jpj, jpt) divBustar = make_array(jpi, jpj, jpt) diver2=fltarr(jpi,jpj,1,73) ; ouverture des fichiers dans lesquels on va écrire ;id3=NCDF_OPEN('/usr/work/sur/fvi/OPA/geomag/U_5d_'+iyear+'_grid_T.nc',/write) ;id4=NCDF_OPEN('/usr/work/sur/fvi/OPA/geomag/V_5d_'+iyear+'_grid_T.nc',/write) ;id4=NCDF_CREATE('/usr/work/sur/fvi/OPA/ORCA2/DivBustar_5d_'+iyear+'_grid_T.nc',/clobber) ;id4=NCDF_OPEN('/usr/work/sur/fvi/OPA/ORCA2/DivBustar_5d_'+iyear+'_grid_T.nc',/write) FOR jt = 0, jpt-1 DO BEGIN &$ ; ouverture des fichiers et stockage en memoire partial steps vu=read_ncdf('vozocrtx',jt,jt, /timestep, iodir=ioDATA,/nostruct,/TOUT,filename=file_U) &$ ;stop vv=read_ncdf('vomecrty',jt,jt, /timestep,iodir=ioDATA,/nostruct,/TOUT,filename=file_V) &$ ;stop ; lecture salinite & temperature temp= read_ncdf('votemper',jt,jt,/timestep,iodir=ioDATA,/nostruct,/tout,filename=file_T) ;stop salin=read_ncdf('vosaline',jt,jt,/timestep,iodir=ioDATA,/nostruct,/tout,filename=file_T) ;stop conduct=0.02047780622061 + 0.00273147624197*temp + 0.00035133182334*temp*temp + 0.09139808809909*salin + 0.00241425798890*salin*temp -0.00023998958774*salin*salin mask_t=where(conduct GT 1.e+19) conduct(mask_t)=0. ; Somme conduct au point T ; Calcul SIGMA SIGMAoc=total(conduct*e3t3d*tmask,3) SIGMA=SIGMAsed+SIGMAoc SIGMA_u=(SIGMA+shift(SIGMA,-1,0))/2. SIGMA_v=(SIGMA+shift(SIGMA,0,1))/2. ; Calcul B en points u et v BR_u=(BR+shift(BR,-1,0))/2. BR_v=(BR+shift(BR,0,1))/2. ; Calcul integrale conduct conduct_u=(conduct+shift(conduct,-1,0,0))/2. conduct_v=(conduct+shift(conduct,0,1,0))/2. u_cond_u=total( vu*conduct_u*e3u3d*umask(),3) v_cond_v=total( vv*conduct_v*e3v3d*vmask(),3) Bu_star= BR_u*u_cond_u/SIGMA_u Bv_star= BR_v*v_cond_v/SIGMA_v ; Divergence du champ Diver=div(Bu_star,Bv_star) Diver=Diver*1e-6 ;Diver=Diver*1e11 ;for jj=0,147 do begin &$ ; for ji=0,179 do begin &$ ; if( Diver(ji,jj) GT 1e10 ) then begin &$ ; Diver(ji,jj) = 0. &$ ; endif &$ ; endfor &$ ;endfor ;stop diver2(*,*,0,jt)=Diver(*,*) ;stop ; Somme sur la verticale partial steps ; vum=total( vu*e3u3d*umask(),3 ) &$ ; vvm=total( vv*e3v3d*vmask(),3 ) &$ ; Shift sur la grille T partial steps ; vut= (vum+shift(vum,1,0) )*0.5 &$ ; vvt= (vvm+shift(vvm,0,1) )*0.5 &$ ; Bande de recouvrement ; vut(0, *) = vut(jpi-2, *) ; vvt(*, 0) = 0. ; stockage dans le fichier de sortie ;NCDF_VARPUT, id3,'sossheig',vut, offset = [0, 0, jt] ;NCDF_VARPUT, id4,'sossheig',Diver, offset = [0, 0, jt] print, jt ENDFOR ; on ferme le NetCDF ;NCDF_CLOSE,id3 ;NCDF_CLOSE,id4 temps=fltarr(73) temps(0)=0. for jt=0,71 do begin &$ temps(jt+1)=temps(jt) +5*86400. &$ endfor print,temps vargrid = 'T' iodir = '/usr/work/sur/fvi/OPA/ORCA2/' ; Nom idout = NCDF_CREATE(iodir+'DivBustar_5d_'+iyear+'_grid_T.nc',/clobber) print, 'Creation du fichier Netcdf' NCDF_CONTROL, idout, /nofill ; Dimension xidout = NCDF_DIMDEF(idout, 'x',jpi) yidout = NCDF_DIMDEF(idout, 'y',jpj) didout = NCDF_DIMDEF(idout, 'deptht',1) tidout = NCDF_DIMDEF(idout, 'time_counter', /unlimited) didout1 = NCDF_DIMDEF(idout, 'deptht1',jpk) ; Attributs globaux id0 = NCDF_VARDEF(idout, 'nav_lon' , [xidout, yidout ], /FLOAT) id1 = NCDF_VARDEF(idout, 'nav_lat' , [xidout, yidout ], /FLOAT) id2 = NCDF_VARDEF(idout, 'deptht' , [ didout1 ], /FLOAT) id3 = NCDF_VARDEF(idout, 'time_counter', [ tidout], /FLOAT) id4 = NCDF_VARDEF(idout, 'Diver' , [xidout, yidout, didout, tidout], /DOUBLE) ; Variable 0 NCDF_ATTPUT, idout, id0, 'units', 'degrees_east' NCDF_ATTPUT, idout, id0, 'long_name', 'Longitude' NCDF_ATTPUT, idout, id0, 'nav_model', 'Default grid' ; Variable 1 NCDF_ATTPUT, idout, id1, 'units', 'degrees_north' NCDF_ATTPUT, idout, id1, 'long_name', 'Latitude' NCDF_ATTPUT, idout, id1, 'nav_model', 'Default grid' ; Variable 2 NCDF_ATTPUT, idout, id2, 'units','meters' NCDF_ATTPUT, idout, id2, 'long_name','Depth' NCDF_ATTPUT, idout, id2, 'nav_model','Default grid' ; Variable3 NCDF_ATTPUT, idout, id3, 'units', 'seconds since 0001-01-01 00:00:00 ' NCDF_ATTPUT, idout, id3, 'calendar','noleap' NCDF_ATTPUT, idout, id3, 'title', 'Time' NCDF_ATTPUT, idout, id3, 'long_name', 'Time axis' NCDF_ATTPUT, idout, id3, 'time_origin','0001-JAN-01 00:00:00' ; Variables NCDF_ATTPUT, idout, id4, 'long_name', 'Divergence' NCDF_CONTROL, idout, /ENDEF ; Creation de la longitude NCDF_VARPUT, idout, id0, glamt ; Creation de la latitude NCDF_VARPUT, idout, id1, gphit ; Creation de la profondeur NCDF_VARPUT, idout, id2, gdept ; Creation du calendrier NCDF_VARPUT, idout, id3, temps ; Ecriture des donnees ; ecriture des glam_8 NCDF_VARPUT, idout, id4 , diver2 NCDF_CLOSE, idout END