! ! $Id: gcm.F90 3579 2019-10-09 13:11:07Z fairhead $ ! ! ! PROGRAM replay3d USE comvert_mod, only : preff, pa USE inigeomphy_mod, ONLY: inigeomphy USE control_mod USE temps_mod, ONLY: calend,start_time,annee_ref,day_ref, & itau_dyn,itau_phy,day_ini,jD_ref,jH_ref,day_end USE comconst_mod, ONLY: cpp, daysec, dtphys, dtvr, g, r, rad USE logic_mod, ONLY: ecripar, iflag_phys, read_start USE serre_mod, ONLY : clon,clat,transx,transy,alphax,alphay,pxo,pyo, & grossismx, grossismy, dzoomx, dzoomy,taux,tauy USE mod_const_mpi, ONLY: comm_lmdz !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! FH 2008/05/09 On elimine toutes les clefs physiques dans la dynamique ! A nettoyer. On ne veut qu'une ou deux routines d'interface ! dynamique -> physique pour l'initialisation #ifdef CPP_PHYS USE iniphysiq_mod, ONLY: iniphysiq #endif !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! IMPLICIT NONE ! ...... Version du 10/01/98 .......... ! avec coordonnees verticales hybrides ! avec nouveaux operat. dissipation * ( gradiv2,divgrad2,nxgraro2 ) !======================================================================= ! ! Auteur: P. Le Van /L. Fairhead/F.Hourdin ! ------- ! ! Objet: ! ------ ! ! GCM LMD nouvelle grille ! !======================================================================= ! ! ... Dans inigeom , nouveaux calculs pour les elongations cu , cv ! et possibilite d'appeler une fonction f(y) a derivee tangente ! hyperbolique a la place de la fonction a derivee sinusoidale. ! ... Possibilite de choisir le schema pour l'advection de ! q , en modifiant iadv dans traceur.def (MAF,10/02) . ! ! Pour Van-Leer + Vapeur d'eau saturee, iadv(1)=4. (F.Codron,10/99) ! Pour Van-Leer iadv=10 ! !----------------------------------------------------------------------- ! Declarations: ! ------------- include "dimensions.h" include "paramet.h" include "comdissnew.h" include "comgeom2.h" REAL zdtvr ! variables dynamiques intermediaire pour le transport ! variables pour le fichier histoire REAL dtav ! intervalle de temps elementaire REAL time_0 LOGICAL lafin integer :: ntime=10000,it,klon,klev ! locales pour gestion du temps INTEGER :: an, mois, jour REAL :: heure ! Initialisations: ! ---------------- !---------------------------------------------------------------------- ! lecture des fichiers gcm.def ou run.def ! --------------------------------------- ! preff=101325. pa=50000. clon=0. clat=0. taux=3. tauy=3. dzoomx=0.1 dzoomy=0.1 grossismx=1. grossismx=1. transx=0. transy=0. CALL conf_gcm( 99, .TRUE.) if (mod(iphysiq, iperiod) /= 0) call abort_gcm("conf_gcm", & "iphysiq must be a multiple of iperiod", 1) rad=6400000 g=9.81 !----------------------------------------------------------------------- ! Choix du calendrier ! ------------------- ! calend = 'earth_365d' !----------------------------------------------------------------------- ! Lecture de l'etat initial : ! --------------------------- !----------------------------------------------------------------------- ! Lecture des parametres de controle pour la simulation : ! ------------------------------------------------------- ! on recalcule eventuellement le pas de temps zdtvr = daysec/REAL(day_step) ! ! on remet le calendrier \`a zero si demande ! annee_ref = anneeref day_ref = dayref day_ini = dayref itau_dyn = 0 itau_phy = 0 time_0 = 0. mois = 1 heure = 0. ! call ymds2ju(annee_ref, mois, day_ref, heure, jD_ref) jH_ref = jD_ref - int(jD_ref) jD_ref = int(jD_ref) dtvr = zdtvr CALL iniconst print*,'APRES inisconst' CALL inigeom CALL inigeomphy(iim,jjm,llm, & 1, comm_lmdz, & rlatu,rlatv, & rlonu,rlonv, & aire,cu,cv) CALL suphel !open(82,file='dump_param.bin',form='unformatted',status='old') CALL iophys_ini(900.) print*,'Rlatu=',rlatu klon=2+iim*(jjm-1) klev=llm !--------------------------------------------------------------------- ! Initialisation de la parametrisation !--------------------------------------------------------------------- call call_ini_replay !--------------------------------------------------------------------- ! Boucle en temps sur l'appel à la parametrisation !--------------------------------------------------------------------- DO it=1,ntime print*,'Pas de temps ',it,klon,klev call call_param_replay(klon,klev) ENDDO END PROGRAM replay3d