mprofils_para.f [SRC] [CPP] [JOB] [SCAN]
src



   1 |       PROGRAM mprofils
   2 |       IMPLICIT NONE
   3 | 
   4 |       REAL*8 tmax,tmin,tiu,tfu,demix
   5 |       real*8 n
   6 |       INTEGER i, choix
   7 |       REAL tl,dtl,tu,dtu
   8 |       real*8 r, dr, x,xcentre,x2,rmin,rmax
   9 |       real*8 temp,cte,tbord
  10 |       real*8 a, b,c, perturb
  11 |       real*8 titi, toto
  12 |       dimension r(0:200),x(0:200),temp(0:200)
  13 |       PRINT *,'Rayon min(paroi)'
  14 |       READ *,rmin
  15 |       PRINT *,'Rayon max(paroi)? '
  16 |       READ *,rmax
  17 |        PRINT *,'nombre de volume (PAIR ou IMPAIR)? '
  18 |       READ *,n
  19 |       r(0) = rmin
  20 |       r(n+1) = rmax
  21 |       r(n)   = rmax
  22 |       demix=(rmax-rmin)/2.d+0
  23 |       demix = demix + rmin
  24 |       !dimension de chaque volume
  25 |       dr = (rmax-rmin)/n
  26 |       do i=1,n
  27 |          !rayon ext de chaque volume
  28 |          r(i)=r(0)+i*dr
  29 |       enddo
  30 |       open(50,file='rayons.in', status='unknown')
  31 |       do i=0,n+1
  32 |          write(50,*) r(i)
  33 |       enddo
  34 |       close(50)
  35 |       print *, 'FIN RAYON'
  36 | !_________________________________________________________
  37 |       !recherche des n+1 valeurs ou j'ai les donnees
  38 |       ! pour les paroirs c'est inchange r(0), r(n+1)
  39 |       x(0)=r(0)
  40 |       x(n+1)=r(n+1)
  41 |       ! pour les rayons: bord ext des mailles prendre centre de maille
  42 |       do i=1,n
  43 |          x(i)= (r(i)+r(i-1))/2.d+0
  44 |       enddo
  45 | !__________________________________________________________      
  46 |       print *,'profil para temp N+2'
  47 |       PRINT *,'T milieu? '
  48 |       READ *,tmin
  49 |       print *,'ou xmilieu: ',(rmax-rmin)/2.d+0 
  50 |       !read *,xcentre
  51 |       xcentre = (rmax-rmin)/2.d+0
  52 |       PRINT *,'T bord? '
  53 |       READ *,tmax
  54 |       print *,'ou xmax:', rmax
  55 |       !read *,x2
  56 |       x2 = rmax
  57 |       !profils en parabole
  58 |       ! avec une pertubaton par dessus (perturb)
  59 |       a=(tmin-tmax)/(xcentre*(xcentre-x2))
  60 |       c=tmax
  61 |       temp(0)=tmax
  62 |       temp(n+1)=tmax
  63 |       print *, 'variations sur profil de temp ?'
  64 |       print *, '0: non'
  65 |       print *, '1: oui'
  66 |       read (*,*) choix
  67 |       do i=1,n
  68 |          perturb = 0.d+0
  69 |          if (choix.eq.1) perturb = sin(10.*n * x(i)) * 20.d+0
  70 |          temp(i) = a*x(i)*(x(i)-x2) + c + perturb
  71 |          temp(i) = dabs(temp(i))
  72 |       enddo
  73 | 
  74 |       OPEN(10,file='temperat.in',status='unknown')
  75 |       DO i=0,n+1
  76 |          write(10,*) temp(i)
  77 |       ENDDO
  78 |       CLOSE(10)
  79 | !_____________________________________________________________________
  80 |       !profil parabol
  81 |       !! y=Ax(x-1)+B
  82 |       titi = 0.d+0                    !0.155d+0
  83 |       PRINT *,'cte fmh2o? '
  84 |       read (*,*) titi
  85 |       print *,'fm_h2o = ',titi 
  86 |       OPEN(10,file='fmh2o.in',status='unknown')
  87 |       DO i=1,n
  88 |          write(10,*) titi
  89 |       ENDDO
  90 |       CLOSE(10)
  91 | !..............
  92 |       toto = 0.116d+0
  93 |       PRINT *,'cte fmco2? '
  94 |       !read (*,*) toto
  95 |       toto = 0.d+0
  96 |       print *,'fm_co2 = ',toto 
  97 |       OPEN(10,file='fmco2.in',status='unknown')
  98 |       DO i=1,n
  99 |          write(10,*) toto
 100 |       ENDDO
 101 |       CLOSE(10)
 102 | 
 103 | !.............
 104 | 
 105 |       !profil constant
 106 |       cte = 0.d+0
 107 |       !PRINT *,'cte fmco? '
 108 |       !read (*,*) cte
 109 | 
 110 |       OPEN(10,file='fmco.in',status='unknown')
 111 |       DO i=1,n
 112 |          write(10,*) cte
 113 |       ENDDO
 114 |       CLOSE(10)
 115 | !________________________________________________________________________
 116 |       !profil constant
 117 |       !PRINT *,'cte fmco? '
 118 |       !read (*,*) cte
 119 |       OPEN(10,file='n_tirage.in',status='unknown')
 120 |       DO i=0,n+1
 121 |          write(10,*) 10000  !!!0
 122 |       ENDDO
 123 |       CLOSE(10)
 124 |       print *, '//!\\ METTRE ', n, ' DANS CECILE.IN'
 125 |       END