*=*=*=*= newgridmars1.html =*=*=*=*
PROGRAM newgridmars1 IMPLICIT NONE c======================================================================= c c Auteur: F.Forget c ------- c c Objet: c ------ c Premiere etape pour la preparation d'un nouvel etat martien c dans une nouvelle grille. c Lecture des anciennes donnees et ecriture des variables naturelle c dans une grille iimp1*jjmp1 (Y compris les vents et les variables c de la physique) c c (ce programme est a compiler dans l' ANCIENNE grille) c AVEC L'ANCIEN SIGMA.DEF !!!!!!!!!!!!!!!!!!!!!!!!! c c Il faut lancer newgridmars2 ensuite c======================================================================= c Declarations: c ------------- #include "dimensions.h" #include "paramet.h" #include "comconst.h" #include "comdissip.h" #include "comvert.h" #include "comgeom.h" #include "logic.h" #include "temps.h" #include "control.h" #include "ener.h" #include "drsdef.h" #include "description.h" c ---------------------- #include "../phymars/dimphys.h" REAL timedyn, timefi !fraction du jour dans start,startfi INTEGER ij, l,i,j INTEGER setname, cluvdb, getdat,aslun,ierr ! DRS c variables dynamiques du GCM REAL vcov(ip1jm,llm),ucov(ip1jmp1,llm) ! vents covariants REAL h(ip1jmp1,llm) ! temperature potentielle REAL q(ip1jmp1,llm,nqmx) ! champs advectes REAL pext(ip1jmp1) ! pression extensive REAL pks(ip1jmp1),pksf(ip1jmp1) ! exner (f pour filtre) REAL phis(ip1jmp1) ! geopotentiel au sol c Variable Physiques (grille physique) c ------------------------------------ REAL tsurf(ngridmx),tsoil(ngridmx,nsoilmx),co2ice(ngridmx) INTEGER ngrid, start,length parameter (length = 100) REAL tab_cntrl_fi(length) ! tableau des parametres de startfi INTEGER*4 day_ini_fi c Variable naturelle / grille scalaire c ------------------------------------ REAL ps(ip1jmp1),T(ip1jmp1,llm),us(ip1jmp1,llm),vs(ip1jmp1,llm) REAL tsurfS(ip1jmp1),tsoilS(ip1jmp1,nsoilmx),co2iceS(ip1jmp1) c Var intermediaires : vent naturel, mais pas coord scalaire REAL vn(ip1jm,llm),un(ip1jmp1,llm) c Autre variable c ---------------- LOGICAL startdrs,ldrs REAL ptotal, co2icetotal c----------------------------------------------------------------------- c Initialisations: c ---------------- grireg = .TRUE. startdrs = .TRUE. ldrs = .TRUE. c----------------------------------------------------------------------- c LECTURE DES DONNEES c ------------------- CALL lectba(startdrs,nqmx,vcov,ucov,h,q,pext,phis,timedyn) CALL readfi(ngrid,nsoilmx,ldrs, . day_ini_fi,timefi,co2ice,tsurf,tsoil) c Controle de la synchro if ((day_ini_fi.ne.day_ini).or.(abs(timefi-timedyn).gt.1.e-10)) & stop ' Probleme de Synchro entre start et startfi !!!' c On relit specialement le tableau des parametres de startfi start = 94 ! On doit reouvrir startfi ierr = aslun(start,'startfi.dic', . start+1,'startfi.dat',IDRS_READ) ierr = CLUVDB() ierr = SETNAME(' ','controle',' ',' ',' ') ierr = GETDAT(start, tab_cntrl_fi, IDRS_BYTES_PER_WORD*length) c initialisation c -------------- CALL iniconst CALL inigeom CALL inifilr CALL exner(ip1jmp1,pext,aire,pks,pksf) c Transformation EN VARIABLE NATURELLE / GRILLE SCALAIRE si ncessaire c ------------------------------------------------------------------- c Vent CALL covnat(llm,ucov, vcov, un, vn) call wind_scal(un,vn,us,vs) c Pression call multipl(ip1jmp1,pext,unsaire,ps) c Temperature DO l=1,llm DO ij=1,ip1jmp1 T(ij,l) = h(ij,l)*pks(ij)*s(l) / cpp ENDDO ENDDO c Variable physique : call gr_fi_dyn(1,ngridmx,iip1,jjp1,tsurf,tsurfS) call gr_fi_dyn(1,ngridmx,iip1,jjp1,co2ice,co2iceS) call gr_fi_dyn(nsoilmx,ngridmx,iip1,jjp1,tsoil,tsoilS) c Info pour controler c ------------------- ptotal = 0. co2icetotal = 0. DO j=1,jjp1 DO i=1,iim ptotal=ptotal+pext(i+(iim+1)*(j-1))/g co2icetotal = co2icetotal + & co2iceS(i+(iim+1)*(j-1))*aire(i+(iim+1)*(j-1)) ENDDO ENDDO write(*,*)'Ancienne grille : masse de l''atm :',ptotal write(*,*)'Ancienne grille : masse de la glace CO2 :',co2icetotal c Ecriture dans le fichier grid2newgrid.data c ------------------------------------------ open (23,file = 'newgridmars.data', & form='unformatted') c Variable de start c (les info du "controle" sont ds le controle de startfi, sauf kappa c et les variables de controles write (23)rlonu,rlatv,sig,s,sig_s,timedyn,us,vs,t,ps,phis,kappa & ,ang0,etot0,ptot0,ztot0,stot0 c variable de startfi write (23) tab_cntrl_fi,co2ices,tsurfs,tsoils c Variable de controle write(23) ptotal, co2icetotal close (23) END