cg.f [SRC] [CPP] [JOB] [SCAN]
srcresultats/pt1_complet/.xvpics [=]
archivage/code2000X_testCG [=]
resultats/pt1_complet [=]



   1 | c.......................................................................
   2 | c
   3 | c     calcul de la fonction "correction a la fonctionnelle poids"
   4 | c     pour tenir compte des homogeneites sur le trajet optique
   5 | c     modifiant le parametre de bande PHI (Curtis-Godson part II)
   6 | c     On calcul pdf(CG)/pdf(utilise)= fss(a,phicg)/fss(a/phi)
   7 | c     Il est deja tenu compte des modif de kgbar par kgskgbar(part I)
   8 | c
   9 | c     en entree : * a: k sur kgbar a l'emission (sans unite)
  10 | c                 * phi: parametre de forme a l'emission (")
  11 | c                 * phicg: idem mais de Curtis-Godson
  12 | c                 * tauba: la somme des kbar * l
  13 | c                 * kbarin: kbar du gaz dans maille d'emission ou sigma1
  14 | c                 * sigma1: longueur chemin dans maille emission
  15 | c
  16 | c                 *kbariin: kbar du gaz dans maille de reception
  17 | c                 *sigma_2: longueur chemin ds maille reception (inutile)
  18 | c                 *phi2: parametre de forme a la reception
  19 | c                 (les "deux" var ci-dessus servent pour CG en vol/vol)
  20 | c
  21 | c     en sortie : * la fonction correction pour un gaz
  22 | c                   a multiplier au poids (correction pdf * alpha)
  23 | c......................................................................
  24 | c     2000 juillet 9: Richard et Amaury
  25 | c     2000 octobre 12: " et " des modifs sur alpha
  26 | c.......................................................................
  27 |       double precision function cg(n1,n2,a,phi,
  28 |      & phicg,tauba,kbarin,sigma1,kbariin,sigma2,phi2)
  29 | !!     & phieq,ngazmx,nbandemx)
  30 | c.......................................................................
  31 | c      implicit double precision (a-h,o-z)
  32 |       implicit none
  33 |       include 'cecile.inc'  ! pout passer la varibale hetero
  34 | !!!!!!!!!!!!!!!!!!!!!!!!!!!!      include 'propradia.inc'  !juste pour debug
  35 | c.......................................................................
  36 |       integer n1, n2 ,ngazmx,nbandemx
  37 |       double precision a, phi, phicg,kbarin,sigma1
  38 |       double precision kbariin, sigma2, phi2  !utilise pour vol/vol seul
  39 |       double precision toto
  40 |       double precision tauba
  41 |       double precision alpha, beta, df6f, dphicg6dl
  42 |       double precision phieqtronque  !sans le sigma_1
  43 |       double precision pdf1, pdf2
  44 | !      double precision phieq
  45 | !      dimension phieq(ngazmx, nbandemx)
  46 | c.......................................................................
  47 |       if (phi .eq. 0.d+0) then
  48 |          write (*,*) 'ERROR: division par phi nul (dans cg)'
  49 |          write (*,*) 'STOP'
  50 |          STOP
  51 | 
  52 |          elseif (a .eq. 0.d+0) then
  53 |          cg = 0.d+0
  54 |           !cg = 1.d+0
  55 |           !car la fonction qu'on inetgre a d'autre occasion
  56 |           !de s'annuler si elle doit l'etre
  57 |           !et ici ca fait une / 0 ensuite
  58 |          elseif (tauba .eq. 0.d+0) then
  59 |          cg = 1.d+0
  60 | 
  61 |          else
  62 |             !FLAG9
  63 |          toto = dexp(-(phicg-phi)*(a-1)**2/(2*a))
  64 |          cg = dsqrt(phicg/phi)*toto
  65 |       endif
  66 | !!      fss(phicg)/fss(phi)
  67 | ccccccc      call f_ss(phi,kbariin,1.d+0,a*kbariin,pdf1)
  68 | ccccccccc      call f_ss(phicg,kbariin,1.d+0,a*kbariin,pdf2)c
  69 | ccccccccc      cg = pdf2 /pdf1
  70 | cccccccccccc      if (pdf1.eq. 0.d+0) cg= 1.d+0
  71 |       !jusque la correction au pdf == hypothese de separabilite
  72 |       ! pour annuler cette correction on peut utiliser la ligne suivante
  73 |       !cg = 1.d+0
  74 |       alpha = 1.d+0 !pour l'instant
  75 | c..........................................................................
  76 |       if (hetero .eq. 2) then
  77 |          ! on y va pour curtis-godson
  78 |          ! alpha n'est pas egal a un 
  79 |          !rapport pdf * alpha
  80 |          !rapport pdf * (1-beta)
  81 |          !ATTENTION TROIS BRANCHES
  82 |          if (((n1.eq.0).or.(n1.eq.(n+1))).and.((n2.eq.0).or.
  83 |      &      (n2.eq.(n+1)))) then
  84 |             !la cas paroi/paroi
  85 |             !rien a faire cg*alpha avec alpha qui vaut un
  86 |             alpha = 1.d+0
  87 |             
  88 | 
  89 |             elseif ((n1.eq.0).or.(n1.eq.(n+1)).or.(n2.eq.0).or.
  90 |      &      (n2.eq.(n+1))) then
  91 |             !volume-paroi
  92 | c         if ((n1.eq.0).or.(n1.eq.(n+1)).or.(n2.eq.0).or.
  93 | c     &      (n2.eq.(n+1))) then
  94 |          ! pour (gaz paroi) ou (paroi paroi)
  95 |          !volume elementaire VERS paroi
  96 |          phieqtronque = phicg + (kbarin * sigma1 *(phicg - phi))/
  97 |      & (tauba-(kbarin * sigma1))
  98 | !!         if (n1.eq.2)  print *, 'phieqtronque, tauba, kbarin,sigma1'
  99 | !!         if (n1.eq.2) print *, phieqtronque, tauba, kbarin,sigma1
 100 |          !alpha, beta, df6f, dphicg6dl
 101 |         dphicg6dl = (kbarin *(tauba-(kbarin*sigma1))*(phi-phieqtronque))
 102 |      & /(tauba**2)
 103 |          !!Attention
 104 |          !!ceci pour maille a cote d'un paroi
 105 |          if (tauba .eq. (kbarin*sigma1)) dphicg6dl=0.d+0
 106 | !!       if (n1.eq.2)  print *, dphicg6dl
 107 |          df6f= 0.5d+0*((1/phicg)-((a-1)**2/a))
 108 | !!       if (n1.eq.2)  print *, df6f
 109 |          beta = df6f*(1/(kbarin*a))*dphicg6dl
 110 |          if (kbarin .eq. 0.d+0)  beta = 0.d+0
 111 |          !on n'emet pas de ray donc pas de correction
 112 |          alpha = (1 - beta)
 113 | !!!!!!!!!!!!!!!!!!!!         if (igaz.eq.3)  write(21,*) 'Moi  ', ibande,'      '
 114 | !!!!!!!!!!!!!!!!!!!     & ,  n1, n2, alpha !enlever proporadia
 115 | !         if ((n1.eq.0)) then !!!!!!!.and.(n2.eq.123)) then 
 116 |             !print *, 'phieqtronque,phicg,kbarin,sigma1,tauba'
 117 |             !print *, phieqtronque,phicg,kbarin,sigma1,tauba
 118 | !            print *, beta,df6f,dphicg6dl,kbarin,a,tauba
 119 | !            read *
 120 | !         endif
 121 | !!!         cg = cg * alpha
 122 | 
 123 |          !volume volume
 124 |          else
 125 |             alpha = 1.d+0
 126 |             !---MIEUX ci-dessous
 127 |             if (kbarin.eq.0.d+0) then 
 128 |                kbarin=1.d-20
 129 |             !!   phi= phieq(igaz,ibande)
 130 |             endif
 131 |             if (kbariin.eq.0.d+0) kbariin=1.d-20
 132 | !!!!            call cg_k_gg(a,phicg,tauba,phi,kbarin,phi2,kbariin,alpha)
 133 | !!            cg = cg * alpha
 134 |          endif
 135 | 
 136 | !!         alpha = 1.d+0 - ((phi-phicg)/(2*a*tauba))*
 137 | !!     & (1.d+0/phi - (a-1)**2.d+0/a)
 138 |          !print *, 'cg, alpha:  ',cg, alpha,'---',(phi-phicg),a,tauba,phi
 139 | !!         if (tauba .lt. 1.d-10) alpha = 1.d+0
 140 |          !print *, 'rrrrrrrrrrrrrr', cg, alpha
 141 |          !alpha = 1.d+0
 142 |          !print *, '>>>>>>>>>>>>>>>>>>CORRECTION:  ', cg, alpha, cg*alpha
 143 |          cg.f.html">cg = cg * alpha
 144 |          endif
 145 | 
 146 | c.......................................................................
 147 |       return
 148 |       end
 149 | c.......................................................................
 150 | 
 151 | 
 152 | 
 153 | 


cg.f could be called by:
cg.f [archivage/code2000X_testCG] - 27 - 49 - 55 - 61 - 104 - 104 - 108
cg.f [resultats/pt1_complet] - 18 - 31 - 39
cg.f [src] - 27 - 53 - 59 - 64 - 143 - 143
trajet.f [archivage/code2000X_testCG] - 52 - 115 - 185 - 282 - 325 - 411 - 510 - 561 - 670 - 703
trajet.f [src] - 55