c INCLUDE '../SOURCE/mod_exploit.f' c****************************************************************** PROGRAM des2k_osc c dessins de fichiers d'oscillation de type mon_modele-ad.osc c Auteur: P.Morel, Département J.D. Cassini, O.C.A., c CESAM2k c var: variables c itot: nombre de points c nglob: nombre de constantes global c nvar: nb. de variables du tableau var sans les éléments chimiques c nom_elem: nom des éléments du vecteur de comp. chim. généralisée c nchim: nombre d'éléments strictement chimiques c glob: variables globales du fichier mon_modele-ad.osc c glob(1)=mstar*msol c glob(2)=rtot*rsol c glob(3)=ltot*lsol c glob(4)=z0 c glob(5)=x0 c glob(6)=alpha c glob(7)=X dans ZC c glob(8)=Y dans ZC c glob(9)=d2p c glob(10)=d2ro c glob(11)=age c glob(12)=wrot vitesse de rotation globale c glob(13)=w_rot initial c var: variables locales utilisées c nvar=22 pour oscillations adiabatiques c var(1,i)=r*rsol c var(2,i)=log(m/mstar) -1.d38 au centre c var(3,i)=t c var(4,i)=Ptot c var(5,i)=ro c var(6,i)=gradient réel d ln T / d ln P c var(7,i)=l c var(8,i)=kap c var(9,i)=énergie thermo+gravifique c var(10,i)=grand Gamma1 c var(11,i)=gradient adiabatique c var(12,i)=delta c var(13,i)=cp c var(14,i)=mu elec. c var(15,i)=vaissala, 0 au centre c var(16,i)=vitesse angulaire, radian/sec c var(17,i)=d ln kappa / d ln T c var(18,i)=d ln kappa / d ln ro c var(19,i)=d epsilon(nuc) / d ln T c var(20,i)=d epsilon(nuc) / d ln ro c var(21,i)=Ptot / Pgas c var(22,i)=gradient radiatif c var(22+j,i)=xchim(j)*nucleo(j), j=1,nchim c--------------------------------------------------------------- USE mod_donnees, ONLY : cpturb, nchim, nom_elem, 1 nom_fich2, nom_output USE mod_exploit, ONLY : glob, lit_nl, read_ascii, var USE mod_kind USE mod_variables, ONLY : rstar, wrot IMPLICIT NONE REAL (kind=sp), ALLOCATABLE, DIMENSION(:) :: absc1, absc2, absc3, 1 c1, c2, c3, grada1, grada2, grada3, gradr1, gradr2, gradr3, 2 grad1, grad2, grad3, lu1, lu2, lu3, ma1, ma2, ma3, pr1, pr2, pr3, 3 ra1, ra2, ra3, ro1, ro2, ro3, te1, te2, te3, u1, u2, u3, 4 vai1, vai2, vai3, w1, w2, w3 REAL (kind=sp) :: c_max, l_max, m_max, p_max, r_max, ro_max, t_max, 1 u_max, vai_max, xmax, xmin, w_max, ymax, ymin INTEGER :: i, ic, itot1, itot2, itot3, n_fich, nglob, nvar LOGICAL :: en_rayon, en_masse, en_q, ok, pt, pt1, pt2, pt3 CHARACTER (len=1) :: oui CHARACTER (len=7) :: absc, device CHARACTER (len=17) :: htext CHARACTER (len=80), DIMENSION(4) :: abid CHARACTER (len=80) :: chaine, modele1, modele2, modele3 CHARACTER (len=100) :: modelee, titre c------------------------------------------------------------------- 2000 FORMAT(8es10.3) PRINT*,'nom, sans extension, du premier fichier Ex: soleil' READ*,nom_fich2 chaine=TRIM(nom_fich2)//'.don' INQUIRE(file=TRIM(chaine),exist=ok) IF(.NOT.ok)THEN PRINT*,'Arrêt: fichier de données inconnu: ',TRIM(chaine) STOP ENDIF c lecture du fichier de données CALL lit_nl(wrot) PRINT*,'pour unfichier créé par:' PRINT*,'CESAM2k, Ex: soleil-ad.osc, entrer o' PRINT*,'f037_2k, Ex: soleil_f037-ad.osc, entrer n ' READ*,oui IF(nom_output == 'osc_adia')THEN IF(oui == 'o')THEN chaine=TRIM(nom_fich2)//'-ad.osc' ELSE chaine=TRIM(nom_fich2)//'_037-ad.osc' ENDIF ELSEIF(nom_output == 'osc_nadia')THEN IF(oui == 'o')THEN chaine=TRIM(nom_fich2)//'-nad.osc' ELSE chaine=TRIM(nom_fich2)//'_037-nad.osc' ENDIF ELSEIF(nom_output == 'osc_invers')THEN IF(oui == 'o')THEN chaine=TRIM(nom_fich2)//'-inv.osc' ELSE chaine=TRIM(nom_fich2)//'_037-inv.osc' ENDIF ELSE chaine=nom_output WRITE(*,4)TRIM(chaine) ; STOP 4 FORMAT('Arrêt, pour un dessin nom_output doit être',/, 1 'osc_adia ou osc_nadia ou osc_invers; nom_output : ',a) ENDIF INQUIRE(file=TRIM(chaine),exist=ok) IF(ok)THEN WRITE(*,5)TRIM(chaine) 5 FORMAT('fichier ASCII utilisé: ',a) ELSE WRITE(*,3)TRIM(chaine) ; STOP 3 FORMAT('Arrêt, fichier ASCII non trouvé: ',a) ENDIF CALL read_ascii(chaine,itot1,nglob,nvar,abid) rstar=glob(2) ; n_fich=1 modele1=TRIM(chaine)//' _____ ' ; modelee=TRIM(modele1) ALLOCATE(ma1(itot1),pr1(itot1),te1(itot1),ro1(itot1), 1 lu1(itot1),ra1(itot1),c1(itot1),grad1(itot1),grada1(itot1), 2 gradr1(itot1),vai1(itot1),w1(itot1),u1(itot1)) DO i=1,itot1 IF(var(2,i) > -1.d30)THEN ma1(i)=exp(var(2,i)) ELSE ma1(i)=0. ENDIF pr1(i)=var(4,i) ; te1(i)=var(3,i) ; ro1(i)=var(5,i) lu1(i)=var(7,i) ; ra1(i)=var(1,i) c1(i)=sqrt(var(10,i)*var(4,i)/var(5,i)) grad1(i)=var(6,i) ; grada1(i)=var(11,i) ; gradr1(i)=var(22,i) vai1(i)=var(15,i) ; w1(i)=var(16,i) ; u1(i)=var(21,i)-1. ENDDO m_max=MAXVAL(ma1) ; p_max=MAXVAL(pr1) ; t_max=MAXVAL(te1) ro_max=MAXVAL(ro1) ; l_max=MAXVAL(lu1) ; r_max=MAXVAL(ra1) c_max=MAXVAL(c1); vai_max=MAXVAL(vai1) ; u_max=MAXVAL(u1) w_max=MAXVAL(w1) pt1=cpturb /= 0.d0 ; pt=pt1 ! pression turbulente PRINT*,'dessine-t-on un second fichier? entrer o/n' READ*,oui IF(oui == 'o')THEN PRINT*,'nom, sans extension, du second fichier Ex: soleil' READ*,nom_fich2 chaine=TRIM(nom_fich2)//'.don' INQUIRE(file=TRIM(chaine),exist=ok) IF(.NOT.ok)THEN PRINT*,'Arrêt: fichier de données inconnu: ',TRIM(chaine) STOP ENDIF c lecture du fichier de données CALL lit_nl(wrot) PRINT*,'pour unfichier créé par:' PRINT*,'CESAM, Ex: soleil-ad.osc, entrer o' PRINT*,'f037_2k, Ex: soleil_f037-ad.osc, entrer n ' READ*,oui IF(nom_output == 'osc_adia')THEN IF(oui == 'o')THEN chaine=TRIM(nom_fich2)//'-ad.osc' ELSE chaine=TRIM(nom_fich2)//'_037-ad.osc' ENDIF ELSEIF(nom_output == 'osc_nadia')THEN IF(oui == 'o')THEN chaine=TRIM(nom_fich2)//'-nad.osc' ELSE chaine=TRIM(nom_fich2)//'_037-nad.osc' ENDIF ELSEIF(nom_output == 'osc_invers')THEN IF(oui == 'o')THEN chaine=TRIM(nom_fich2)//'-inv.osc' ELSE chaine=TRIM(nom_fich2)//'_037-inv.osc' ENDIF ELSE WRITE(*,3)TRIM(chaine) ; WRITE(*,4) ; STOP ENDIF INQUIRE(file=TRIM(chaine),exist=ok) IF(ok)THEN WRITE(*,5)TRIM(chaine) ELSE WRITE(*,3)TRIM(chaine) ; STOP ENDIF DEALLOCATE(glob,nom_elem,var) CALL read_ascii(chaine,itot2,nglob,nvar,abid) rstar=MAX(rstar,glob(2)) ; n_fich=2 ALLOCATE(ma2(itot2),pr2(itot2),te2(itot2),ro2(itot2), 1 lu2(itot2),ra2(itot2),c2(itot2),grad2(itot2),grada2(itot2), 2 gradr2(itot2),vai2(itot2),w2(itot2),u2(itot2)) modele2=TRIM(chaine)//' _ _ _ ' modelee=TRIM(modelee)//', '//TRIM(modele2) DO i=1,itot2 IF(var(2,i) > -1.d30)THEN ma2(i)=exp(var(2,i)) ELSE ma2(i)=0. ENDIF pr2(i)=var(4,i) ; te2(i)=var(3,i) ; ro2(i)=var(5,i) lu2(i)=var(7,i) ; ra2(i)=var(1,i) c2(i)=sqrt(var(10,i)*var(4,i)/var(5,i)) grad2(i)=var(6,i) ; grada2(i)=var(11,i) ; gradr2(i)=var(22,i) vai2(i)=var(15,i) ; w2(i)=var(16,i) ; u2(i)=var(21,i)-1. ENDDO m_max=MAX(m_max,MAXVAL(ma2)) ; p_max=MAX(p_max,MAXVAL(pr2)) t_max=MAX(t_max,MAXVAL(te2)) ; ro_max=MAX(ro_max,MAXVAL(ro2)) l_max=MAX(l_max,MAXVAL(lu2)) ; r_max=MAX(r_max,MAXVAL(ra2)) c_max=MAX(c_max,MAXVAL(c2)) ; vai_max=MAX(vai_max,MAXVAL(vai2)) u_max=MAX(u_max,MAXVAL(u2)) ; w_max=MAX(w_max,MAXVAL(w2)) pt2=cpturb /= 0.d0 ; pt=pt .OR. pt2 ! pression turbulente PRINT*,'dessine-t-on un troisième fichier? entrer o/n' READ*,oui IF(oui == 'o')THEN PRINT*,'nom, sans extension, du troisième fichier Ex: soleil' READ*,nom_fich2 chaine=TRIM(nom_fich2)//'.don' INQUIRE(file=TRIM(chaine),exist=ok) IF(.NOT.ok)THEN PRINT*,'Arrêt: fichier de données inconnu: ',TRIM(chaine) STOP ENDIF c lecture du fichier de données CALL lit_nl(wrot) PRINT*,'pour unfichier créé par:' PRINT*,'CESAM, Ex: soleil-ad.osc, entrer o' PRINT*,'f037_2k, Ex: soleil_f037-ad.osc, entrer n ' READ*,oui IF(nom_output == 'osc_adia')THEN IF(oui == 'o')THEN chaine=TRIM(nom_fich2)//'-ad.osc' ELSE chaine=TRIM(nom_fich2)//'_037-ad.osc' ENDIF ELSEIF(nom_output == 'osc_nadia')THEN IF(oui == 'o')THEN chaine=TRIM(nom_fich2)//'-nad.osc' ELSE chaine=TRIM(nom_fich2)//'_037-nad.osc' ENDIF ELSEIF(nom_output == 'osc_invers')THEN IF(oui == 'o')THEN chaine=TRIM(nom_fich2)//'-inv.osc' ELSE chaine=TRIM(nom_fich2)//'_037-inv.osc' ENDIF ELSE WRITE(*,3)TRIM(chaine) ; WRITE(*,4) ; STOP ENDIF INQUIRE(file=TRIM(chaine),exist=ok) IF(ok)THEN WRITE(*,5)TRIM(chaine) ELSE WRITE(*,3)TRIM(chaine) ; STOP ENDIF DEALLOCATE(glob,nom_elem,var) CALL read_ascii(chaine,itot3,nglob,nvar,abid) rstar=MAX(rstar,glob(2)) ; n_fich=3 ALLOCATE(ma3(itot3),pr3(itot3),te3(itot3),ro3(itot3), 1 lu3(itot3),ra3(itot3),c3(itot3),grad3(itot3),grada3(itot3), 2 gradr3(itot3),vai3(itot3),w3(itot3),u3(itot3)) modele3=TRIM(chaine)//' _ . _ ' modelee=TRIM(modelee)//', '//TRIM(modele3) DO i=1,itot3 IF(var(2,i) > -1.d30)THEN ma3(i)=exp(var(2,i)) ELSE ma3(i)=0. ENDIF pr3(i)=var(4,i) ; te3(i)=var(3,i); ro3(i)=var(5,i) lu3(i)=var(7,i) ; ra3(i)=var(1,i) c3(i)=sqrt(var(10,i)*var(4,i)/var(5,i)) grad3(i)=var(6,i) ; grada3(i)=var(11,i) ; gradr3(i)=var(11,i) vai3(i)=var(15,i) ; w3(i)=var(16,i) ; u3(i)=var(21,i)-1. ENDDO m_max=MAX(m_max,MAXVAL(ma3)) ; p_max=MAX(p_max,MAXVAL(pr3)) t_max=MAX(t_max,MAXVAL(te3)) ; ro_max=MAX(ro_max,MAXVAL(ro3)) l_max=MAX(l_max,MAXVAL(lu3)) ; r_max=MAX(r_max,MAXVAL(ra3)) c_max=MAX(c_max,MAXVAL(c3)) ; vai_max=MAX(vai_max,MAXVAL(vai3)) u_max=MAX(u_max,MAXVAL(u3)) ; w_max=MAX(w_max,MAXVAL(w3)) pt3=cpturb /= 0.d0 ; pt=pt .OR. pt3 ! pression turbulente ENDIF ENDIF DEALLOCATE(nom_elem,var,glob) xmax=1.05 ; xmin=-.05 ymax=1.05 ; ymin=-.05 c PRINT*,vai_max vai_max=min(vai_max,2.) !pour ne pas dépasser le cadre c normalisations r_max=rstar ; IF(w_max < 1.d-8)w_max=0. pr1=pr1/p_max ; te1=te1/t_max ; ro1=ro1/ro_max lu1=lu1/l_max ; ra1=ra1/r_max ; c1=c1/c_max ; vai1=vai1/vai_max IF(w_max /= 0.)w1=w1/w_max IF(n_fich >=2)THEN pr2=pr2/p_max ; te2=te2/t_max ; ro2=ro2/ro_max lu2=lu2/l_max ; ra2=ra2/r_max ; c2=c2/c_max ; vai2=vai2/vai_max IF(w_max /= 0.)w2=w2/w_max IF(n_fich == 3)THEN pr3=pr3/p_max ; te3=te3/t_max ; ro3=ro3/ro_max lu3=lu3/l_max ; ra3=ra3/r_max ; c3=c3/c_max ; vai3=vai3/vai_max IF(w_max /= 0.)w3=w3/w_max ENDIF ENDIF c type de graphe en_rayon=.FALSE. ; en_masse=.FALSE. ; en_q=.FALSE. PRINT*,'dessin en rayon o/n ?' READ(*,'(a)')oui en_rayon= oui == 'o' IF(.NOT.en_rayon)THEN PRINT*,'dessin en masse? o/n' READ(*,'(a)')oui en_masse= oui == 'o' ELSE en_q=.TRUE. ENDIF c cas en rayon IF(en_rayon)THEN PRINT*,'dessin en rayon'; absc='r/Rstar' ALLOCATE(absc1(itot1)) absc1=ra1 IF(n_fich >= 2)THEN ALLOCATE(absc2(itot2)) absc2=ra2 IF(n_fich == 3)THEN ALLOCATE(absc3(itot3)) absc3=ra3 ENDIF ENDIF PRINT*,'Zoom? o/n' READ(*,'(a)')oui IF(oui == 'o')THEN PRINT*,'entrer rmin, rmax' ; READ*,xmin,xmax WRITE(*,991)xmin,xmax 991 FORMAT('dessin entre les rayons',8es10.3) ELSE xmin=-.05 ; xmax=1.05 ENDIF c cas en masse ELSEIF(en_masse)THEN PRINT*,'dessin en masse' ; absc='m/Mstar' ALLOCATE(absc1(itot1)) absc1=ma1 IF(n_fich >= 2)THEN ALLOCATE(absc2(itot2)) absc2=ma2 IF(n_fich == 3)THEN ALLOCATE(absc3(itot3)) absc3=ma3 ENDIF ENDIF PRINT*,'Zoom? o/n' ; READ(*,'(a)')oui IF(oui == 'o')THEN PRINT*,'entrer m min, m max?' ; READ*,xmin,xmax WRITE(*,992)xmin,xmax 992 FORMAT('dessin entre les masses',8es10.3) ELSE xmin=-.05 ; xmax=1.05 ENDIF c cas en q ELSE PRINT*,'dessin en indice (sans interet avec plusieurs modeles)' PRINT*,'on ne dessine que le premier' absc='indice' ; n_fich=1 ALLOCATE(absc1(itot1)) absc1=(/ (i,i=itot1,1,-1) /) PRINT*,'Zoom? o/n' ; READ(*,'(a)')oui IF(oui == 'o')THEN PRINT*,'entrer indices min et max' READ*,xmin,xmax ; PRINT*,'dessin entre les points',xmin,xmax ELSE xmin=1 ; xmax=itot1 ENDIF ENDIF device='/xw' c WRITE(6,*)'device ? /xw, /ps, /cps' c READ(*,'(a)')device CALL pgbegin(0,device,2,2) CALL pgscf(2) !roman font CALL pgsch(1.2) ; CALL pgslw(3) c dessin de la pression CALL pgsls(1) ; ic=1 ; CALL pgsci(ic) titre='Pression' WRITE(htext,1000)p_max 1000 FORMAT(' (max=',es10.3,')') titre='Pression'//htext CALL pgenv(xmin,xmax,ymin,ymax,0,0) CALL pglabel(absc,titre,modelee) ic=2 ; CALL pgsci(ic) CALL pgline(itot1,absc1,pr1) IF(n_fich >= 2)THEN ic=3 ; CALL pgsci(ic) CALL pgsls(2) ; CALL pgline(itot2,absc2,pr2) IF(n_fich == 3)THEN ic=4 ; CALL pgsci(ic) CALL pgsls(3) ; CALL pgline(itot3,absc3,pr3) ENDIF ENDIF c dessin de la temperature CALL pgsls(1) ; ic=1 ; CALL pgsci(ic) WRITE(htext,1000)t_max ; titre='Temperature'//htext CALL pgenv(xmin,xmax,ymin,ymax,0,0) CALL pglabel(absc,titre,modelee) ic=2 ; CALL pgsci(ic) CALL pgline(itot1,absc1,te1) IF(n_fich >= 2)THEN ic=3 ; CALL pgsci(ic) CALL pgsls(2) ; CALL pgline(itot2,absc2,te2) IF(n_fich == 3)THEN ic=4 ; CALL pgsci(ic) CALL pgsls(3) ; CALL pgline(itot3,absc3,te3) ENDIF ENDIF c dessin de la densité CALL pgsls(1) ; ic=1 ; CALL pgsci(ic) WRITE(htext,1000)ro_max ; titre='Densite'//htext CALL pgenv(xmin,xmax,ymin,ymax,0,0) CALL pglabel(absc,titre,modelee) ic=2 ; CALL pgsci(ic) CALL pgline(itot1,absc1,ro1) IF(n_fich >= 2)THEN ic=3 ; CALL pgsci(ic) CALL pgsls(2) ; CALL pgline(itot2,absc2,ro2) IF(n_fich == 3)THEN ic=4 ; CALL pgsci(ic) CALL pgsls(3) ; CALL pgline(itot3,absc3,ro3) ENDIF ENDIF c dessin de la luminosité CALL pgsls(1) ; ic=1 ; CALL pgsci(ic) WRITE(htext,1000)l_max ; titre='Luminosite'//htext CALL pgenv(xmin,xmax,ymin,ymax,0,0) CALL pglabel(absc,titre,modelee) ic=2 ; CALL pgsci(ic) CALL pgline(itot1,absc1,lu1) IF(n_fich >= 2)THEN ic=3 ; CALL pgsci(ic) CALL pgsls(2) ; CALL pgline(itot2,absc2,lu2) IF(n_fich == 3)THEN ic=4 ; CALL pgsci(ic) CALL pgsls(3) ; CALL pgline(itot3,absc3,lu3) ENDIF ENDIF c----evite le dessin de la masse/rayon---------- c IF(.FALSE.)THEN IF(en_rayon)THEN CALL pgsls(1) ; ic=1 ; CALL pgsci(ic) WRITE(htext,1000)m_max ; titre='Masse'//htext CALL pgenv(xmin,xmax,ymin,ymax,0,0) CALL pglabel(absc,titre,modelee) ic=2 ; CALL pgsci(ic) CALL pgline(itot1,absc1,ma1) IF(n_fich >= 2)THEN ic=3 ; CALL pgsci(ic) CALL pgsls(2) ; CALL pgline(itot2,absc2,ma2) IF(n_fich == 3)THEN ic=4 ; CALL pgsci(ic) CALL pgsls(3) ; CALL pgline(itot3,absc3,ma3) ENDIF ENDIF ELSEIF(en_masse)THEN CALL pgsls(1) ; ic=1 ; CALL pgsci(ic) WRITE(htext,1000)r_max ; titre='Rayon'//htext CALL pgenv(xmin,xmax,ymin,ymax,0,0) CALL pglabel(absc,titre,modelee) ic=2 ; CALL pgsci(ic) CALL pgline(itot1,absc1,ra1) IF(n_fich >= 2)THEN ic=3 ; CALL pgsci(ic) CALL pgsls(2) ; CALL pgline(itot2,absc2,ra2) IF(n_fich == 3)THEN ic=4 ; CALL pgsci(ic) CALL pgsls(3) ; CALL pgline(itot3,absc3,ra3) ENDIF ENDIF ELSE CALL pgsls(1) ; ic=1 ; CALL pgsci(ic) WRITE(htext,1000)r_max ; titre='Rayon'//htext CALL pgenv(xmin,xmax,ymin,ymax,0,0) CALL pglabel(absc,titre,modelee) ic=2 ; CALL pgsci(ic) CALL pgline(itot1,absc1,ra1) IF(n_fich >= 2)THEN ic=3 ; CALL pgsci(ic) CALL pgsls(2) ; CALL pgline(itot2,absc2,ra2) IF(n_fich == 3)THEN ic=4 ; CALL pgsci(ic) CALL pgsls(3) ; CALL pgline(itot3,absc3,ra3) ENDIF ENDIF WRITE(htext,1000)m_max ; titre='Masse'//htext CALL pgsls(1) ; ic=1 ; CALL pgsci(ic) CALL pgenv(xmin,xmax,ymin,ymax,0,0) CALL pglabel(absc,titre,modelee) ic=2 ; CALL pgsci(ic) CALL pgline(itot1,absc1,ma1) IF(n_fich >= 2)THEN ic=3 ; CALL pgsci(ic) CALL pgsls(2) ; CALL pgline(itot2,absc2,ma2) IF(n_fich == 3)THEN ic=4 ; CALL pgsci(ic) CALL pgsls(3) ; CALL pgline(itot3,absc3,ma3) ENDIF ENDIF ENDIF c ENDIF c-------------------------------------------------- c dessin de w IF(w_max /= 0.d0)THEN CALL pgsls(1) ; ic=1 ; CALL pgsci(ic) WRITE(htext,1000)w_max ; titre='Vitesse angulaire'//htext CALL pgenv(xmin,xmax,ymin,ymax,0,0) CALL pglabel(absc,titre,modelee) ic=2 ; CALL pgsci(ic) CALL pgline(itot1,absc1,w1) IF(n_fich >= 2)THEN ic=3 ; CALL pgsci(ic) CALL pgsls(2) ; CALL pgline(itot2,absc2,w2) IF(n_fich == 3)THEN ic=4 ; CALL pgsci(ic) CALL pgsls(3) ; CALL pgline(itot3,absc3,w3) ENDIF ENDIF ENDIF c dessin de v son CALL pgsls(1) ; ic=1 ; CALL pgsci(ic) WRITE(htext,1000)c_max ; titre='Vson'//htext CALL pgenv(xmin,xmax,ymin,ymax,0,0) CALL pglabel(absc,titre,modelee) ic=2 ; CALL pgsci(ic) CALL pgline(itot1,absc1,c1) IF(n_fich >= 2)THEN ic=3 ; CALL pgsci(ic) CALL pgsls(2) ; CALL pgline(itot2,absc2,c2) IF(n_fich == 3)THEN ic=4 ; CALL pgsci(ic) CALL pgsls(3) ; CALL pgline(itot3,absc3,c3) ENDIF ENDIF c dessin des gradients CALL pgsls(1) ; ic=1 ; CALL pgsci(ic) titre='gradients réel ___, adia ----, rad _._' CALL pgenv(xmin,xmax,ymin,ymax,0,0) CALL pglabel(absc,titre,'premier modele') ic=2 ; CALL pgsci(ic) CALL pgline(itot1,absc1,grad1) CALL pgsls(2) ; CALL pgline(itot1,absc1,grada1) CALL pgsls(3) ; CALL pgline(itot1,absc1,gradr1) IF(n_fich >= 2)THEN CALL pgsls(1) ; ic=1 ; CALL pgsci(ic) CALL pgenv(xmin,xmax,ymin,ymax,0,0) CALL pglabel(absc,titre,'second modele') ic=3 ; CALL pgsci(ic) CALL pgline(itot2,absc2,grad2) CALL pgsls(2) ; CALL pgline(itot2,absc2,grada2) CALL pgsls(3) ; CALL pgline(itot2,absc2,gradr2) IF(n_fich == 3)THEN CALL pgsls(1) ; ic=1 ; CALL pgsci(ic) CALL pgenv(xmin,xmax,ymin,ymax,0,0) CALL pglabel(absc,titre,'troisieme modele') ic=4 ; CALL pgsci(ic) CALL pgline(itot3,absc3,grad3) CALL pgsls(2) ; CALL pgline(itot3,absc3,grada3) CALL pgsls(3) ; CALL pgline(itot3,absc3,gradr3) ENDIF ENDIF c tracé de vaissala CALL pgsls(1) ; ic=1 ; CALL pgsci(ic) titre='Vaissala / 2.' CALL pgenv(xmin,xmax,ymin,ymax,0,0) CALL pglabel(absc,titre,modelee) ic=2 ; CALL pgsci(ic) CALL pgline(itot1,absc1,vai1) IF(n_fich >= 2)THEN ic=3 ; CALL pgsci(ic) CALL pgsls(2) ; CALL pgline(itot2,absc2,vai2) IF(n_fich == 3)THEN ic=4 ; CALL pgsci(ic) CALL pgsls(3) ; CALL pgline(itot3,absc3,vai3) ENDIF ENDIF c tracé de Pturb/Pgaz IF(pt)THEN CALL pgsls(1) ; ic=1 ; CALL pgsci(ic) titre='Pturb/Pgaz - 1' ymin=-.01 ; ymax=max(u_max*1.05,0.01) CALL pgenv(xmin,xmax,ymin,ymax,0,0) CALL pglabel(absc,titre,modelee) ic=2 ; CALL pgsci(ic) IF(pt1)CALL pgline(itot1,absc1,u1) IF(n_fich >= 2)THEN ic=3 ; CALL pgsci(ic) ; CALL pgsls(2) IF(pt2)CALL pgline(itot2,absc2,u2) IF(n_fich == 3)THEN ic=4 ; CALL pgsci(ic) ; CALL pgsls(3) IF(pt3)CALL pgline(itot3,absc3,u3) ENDIF ENDIF ENDIF CALL pgend STOP END PROGRAM des2k_osc