Search Site | Contact Details | FAQ

ADAS Subroutine h9ntqd

       subroutine h9ntqd  ( nedim   , ntdim   , nfdim  ,
     &                      ifint   , itype   , itypt  , ilinr , iescl ,
     &                      itrn    ,                
     &                      ne      , nt      ,                      
     &                      evt     , xa      , 
     &                      oma     , tva     , 
     &                      upsilon , dnsilon ,
     &                      kappa   , dru_val , dist   ,
     &                      nef     , en      , f      ,
     &                      ntf     , tvf     ,
     &                      lbeth   , beth    ,
     &                      nform1  , param1  , nform2 , param2 
     &                     )        
C-----------------------------------------------------------------------
C                                                                       
C  VERSION:   1.0                                                       
C                                                                       
C  PURPOSE:  Executes quadratures over collision strengths to form 
C            excitation and de-excitation effective collision strengths
C            for atoms and ions with tabulated collision stregths   
C            as a function of x parameter.
C
C            Quadrature can be executed over a Maxwellian, kappa 
C            distribution, Druyvesteyn or numerical distribution.
C            Linear interpoation is recomended and is default (ilinr=1)
C            Quadratic interpolation is also allowed for analytic
C            distributions.
C            1/E varaible interpolation is allowed for Maxwellian only.
C					
C  DATA:                                                                
C                                                                       
C  PROGRAM:                                                             
C                                                                       
C          (i*4)  ifint   = input     = indep. var. for interpolation	
C         				   (1 = E)			
C         				   (2 = 1/E)
C          (i*4)  itype   = input     = collision strength type, to give
C					high energy behaviour 	
C         				   (1 = dipole --> a*log(X+b) )
C         				   (2 = non-dp --> a+X/b      )
C         				   (3 = spin ch--> a/(X+b)**2 )
C          (i*4)  itypt   = input     = threshold behaviours allowed
C         				   (1(ion)     = const to 1st pt.)
C         				   (2(neutral) = 0     to 1st pt.)
C          (i*4)  ilinr   = input     = allow linear or quadratic interp
C         				   (1 = linear   )		
C         				   (2 = quadratic)		
C          (i*4)  iescl   = input     = allow e**2*omega + lin. interp  
C         				   (1 = normal use)		
C         				   (2 = e**2*omega +lin.)
C					iescl=2 not implimented
C          (i*4)  itrn    = input     = index of current transition
C          (i*4)  nedim   = input     = max no of energies in omega file
C          (i*4)  ntdim   = input     = max no of temperatures
C          (i*4)  nfdim   = input     = max no of energies in adf37 file
C          (i*4)  ne	  = input     = number of energies in omega file
C          (i*4)  nef	  = input     = number of energies in adf37 file
C          (i*4)  nt	  = input     = number of temperatures
C          (i*4)  ntf	  = input     = number of temperatures in adf37
C          (r*8)  xa()    = input     = tabul. x param. for coll. str.
C          (r*8)  evt	  = input     = theshold energy (eV)  
C          (r*8)  oma()   = input     = tabul. coll. str.
C          (r*8)  tva()   = input     = temperatures (eV)
C          (r*8)  tvf()   = input     = temperatures (eV) from adf37   
C          (i*4)  dist    = input     = electron distribution
C         				   (0 = Maxwellian )
C         				   (1 = kappa	   )
C         				   (2 = numerical  )
C         				   (3 = Druyvesteyn)
C          (r*8)  kappa   = input     = kappa value of electron dist.
C          (r*8)  dru_val = input     = x parameter from Druyvesteyn dist.
C          (r*8)  en(,)   = input     = adf37 energy (eV)
C          (r*8)  f(,)    = input     = adf37 distribution
C          (l*4)  lbeth   = input     = true if limit point exists
C          (r*8)  beth    = input     = infinite energy limit point of omega
C          (i*4)  nform1  = input     = type of threshold behaviour
C         				  (1 = cutoff	    )
C         				  (2 = energy^param1)
C          (r*8)  param1  = input     = parameter of threshold form
C          (i*4)  nform2  = input     = type of high-energy behaviour
C         				  (1 => cutoff  	      )
C         				  (2 => energy^-param2(1)     )
C         				  (3 => exp(-param2(1)*energy))
C          (r*8)  param2()= input     = parameter of high-energy form
C            
C          (r*8)  xf	  = program   = current en(i)/evt
C          (r*8)  omega(,)= program   = oma interpolated to distribution
C         				function energy grid
C          (r*8)  sumi()  = program   = gamma contrib. from i	 -> i+1 
C          (r*8)  sumn()  = program   = gamma contrib. from ne-1  -> ne 
C          (r*8)  sumu()  = program   = gamma contrib. from ne --> inf. 
C          (r*8)  suml()  = program   = gamma contrib. from thres. -> 1 
C          (r*8)  en()    = program   = tabul. ener. for coll. str. (ev)
C          (r*8)  fva()   = program   = indep. var. for interpolation
C          (r*8)  expi()  = program   = current exp(-(ui-ut))		
C          (r*8)  expi1() = program   = current exp(-(ui1-ut))
C          (r*8)  exp1()  = program   = exp(-(u1-ut))
C          (r*8)  ui()    = program   = current eva(i)/kte		
C          (r*8)  ui1()   = program   = current eva(i+1)/kte	       
C          (r*8)  u1()    = program   = eva(1)/kte			
C          (r*8)  ut	  = program   = evt/kte
C          (r*8)  uj()    = program   = ui-ut
C          (r*8)  uj1()   = program   = ui1-ut  		      
C          (r*8)  w0	  = program   = interpolation working variable 
C          (r*8)  w1	  = program   = interpolation working variable 
C          (r*8)  w2	  = program   = interpolation working variable
C          (r*8)  v0	  = program   = interpolation working variable
C          (r*8)  v1	  = program   = interpolation working variable
C          (r*8)  v2	  = program   = interpolation working variable
C          (r*8)  y1	  = program   = interpolation working variable
C          (r*8)  y2	  = program   = interpolation working variable
C          (r*8)  c0	  = program   = interpolation working variable
C          (r*8)  c1	  = program   = interpolation working variable
C          (r*8)  c2	  = program   = interpolation working variable
C          (r*8)  cc0	  = program   = interpolation working variable
C          (r*8)  cc1	  = program   = interpolation working variable
C          (r*8)  ww0	  = program   = interpolation working variable
C          (r*8)  ww1	  = program   = interpolation working variable
C          (r*8)  ww2	  = program   = interpolation working variable
C          (r*8)  a1	  = program   = interpolation working variable
C          (r*8)  a2	  = program   = interpolation working variable
C          (r*8)  b1	  = program   = interpolation working variable
C          (r*8)  b2	  = program   = interpolation working variable
C
C          (r*8)  upsilon(,)  = output    = upsilon values
C          (r*8)  dnsilon(,)  = output    = downsilon values
C         								
C  routines:								
C 	   routine    source	brief description			
C 	   -------------------------------------------------------------
C 	   eei        copase	evaluates exp(x)*E1(x)  	       
C 	   ee2        copase	evaluates exp(x)*E2(x)  	       
C 	   lngama		evaluates ln(gamma(a))  	       
c 	   ingama		evaluates incomplete gamma P(a,x)
c 	   ingamq		evaluates incomplete gamma 1-P(a,x)
C 									
C author:  H P Summers  						
C 	   K1/1/57							
C 	   JET ext. 4941						
C 									
C date:    26/05/93							
C 									
C update:  30/11/01  HP Summers - altered input to use x parameter
C
C update:  23/11/04  P Bryans - altered to evaluate non-maxwellian
C 				electron distributions
C
C update:  20/07/07  A Whiteford - Modified comments slightly to allow
C                                  for automatic generation of
C                                  documentation.
C
C-----------------------------------------------------------------------
      INTEGER             DIST,        IESCL,       IFINT,       ILINR
      INTEGER             ITRN,        ITYPE,       ITYPT,       NE
      INTEGER             NEDIM,       NEF,         NFDIM,       NFORM1
      INTEGER             NFORM2,      NT,          NTDIM,       NTF
      LOGICAL             LBETH
      REAL*8              BETH,        DNSILON(NTDIM),           DRU_VAL
      REAL*8              EN(NTDIM,NFDIM),          EVT
      REAL*8              F(NTDIM,NFDIM),           KAPPA
      REAL*8              OMA(NEDIM),  PARAM1,      PARAM2(2)
      REAL*8              TVA(NTDIM),  TVF(NTDIM),  UPSILON(NTDIM)
      REAL*8              XA(NEDIM)
© Copyright 1995-2024 The ADAS Project
Comments and questions to: adas-at-adas.ac.uk