Source code for pySAXS.models.ImogoliteDW

from model import Model
from pySAXS.LS.LSsca import Qlogspace
from pySAXS.LS.LSsca import Pcylmulti
import numpy
import os


[docs]class ImogoliteDW(Model): ''' class Imogolite DW pour melange SiGe by AT 04/03/2011 '''
[docs] def ImogoliteDWFunction(self,q,par): """ q array of q (A-1) par[0] Concentration en Ge par[1] Nombre d'Atome de Si ou Ge dans la circonference du tube ext par[2] ratio de Si dans la paroi externe par[3] Epaisseur de la paroi du tube ext par[4] Nombre d'Atome de Ge dans la circonference du tube int par[5] ratio de Si dans la paroi interne par[6] Epaisseur de la paroi du tube int par[7] Longueur du tube par[8] densite electronique interne par[9] densite electronique interstitielle """ r=numpy.zeros(4) #conc en Ge en mol/cm-3 #par[0]=8e-5*0.5 hmaille=8.5 r[0]=hmaille/(2.0*numpy.sqrt(3.0)*numpy.sin(numpy.pi/par[4]))-1.7 r[1]=r[0]+par[6] r[2]=hmaille/(2.0*numpy.sqrt(3.0)*numpy.sin(numpy.pi/par[1]))-1.7 eit=r[2]-r[1] r[3]=r[2]+par[3] rho=numpy.zeros(5) rhow=0.334 rho[0]=par[8] rho[2]=par[9] rho[4]=rhow rho[1]=(par[4]*(86+par[2]*14+(1.0-par[2])*32)*2)/(numpy.pi*hmaille*(r[1]*r[1]-r[0]*r[0])) rho[3]=(par[1]*(86+par[5]*14+(1.0-par[5])*32)*2)/(numpy.pi*hmaille*(r[3]*r[3]-r[2]*r[2])) #print 'rayon interne =', r[0] #print 'rho paroi interne =',rho[1] #print 'rayon externe =', r[3] #print 'rho paroi =',rho[3] rho=rho*1e24*0.282e-12 C=6.023e23*par[0]/((2.0*par[7]/hmaille)*(par[1]+par[4])*1000) return Pcylmulti(self.q,r,rho,par[7],C)
IntensityFunc=ImogoliteDWFunction q=Qlogspace(0.005,1.0,500) #q range(x scale) Arg=[.042,22,0.0,6.0,11,0.0,6.0,200.0,0.334,0.334] #list of defaults parameters Format=["%1.3e","%1.3e","%1.3e","%1.3e","%1.3e","%1.3e","%1.3e","%1.3e","%1.3e","%1.3e"] #list of c format istofit=[True,True,False,False,True,False,False,True,False,False] #list of boolean for fitting name="Specific: Imogolite Double Wall Si/Ge" #name of the model Author="Antoine Thill" Description = "Imodolite double wall variable thickness Si/Ge" Doc=["Ge concentration (mol/l)",\ "Si or Ge in external tube circumference ",\ "Si ratio in external tube ",\ "External Wall thickness (A)",\ "Si or Ge in internal tube circumference ",\ "ratio of Si in internal tube ",\ "Internal Wall thickness (A)",\ "imogolite tube length (A)",\ "Internal electronic density (1/A3)",\ "Interstitial electronic density (1/A3)"] #list of description for parameters
if __name__=="__main__": ''' test code ''' modl=ImogoliteDW() #plot the model import Gnuplot gp=Gnuplot.Gnuplot() gp("set logscale xy") c=Gnuplot.Data(modl.q,modl.getIntensity(),with_='points') gp.plot(c) raw_input("enter")