Package reflectometry :: Package model1d :: Package profileview :: Module model2Staj

Source Code for Module reflectometry.model1d.profileview.model2Staj

  1  """ 
  2  Save the model to a staj file: 
  3  Nonmagnetic case 
  4  """ 
  5   
  6  import numpy 
  7   
  8  #================================================================ 
9 -def saveLayers( fout, 10 layers, 11 qcsq, qcmsq, depth, rough, mu, 12 scale=1 # 1 or 18*Pi 13 ):
14 for i in xrange(layers): 15 fout.write("%#15.6lE%#15.6lE%#15.6lE%#15.6lE%#15.6lE\n"%(qcsq[i]*scale, 16 qcmsq[i]*scale, depth[i], rough[i], mu[i]) )
17 18 19 #===================================================
20 -def toStaj( ntlayer, tqcsq, tqcmsq, tdepth, trough, tmu, 21 nmlayer, mqcsq, mqcmsq, mdepth, mrough, mmu, 22 nblayer, bqcsq, bqcmsq, bdepth, brough, bmu, 23 nrepeat, mfit, nrough, _lambda, lamdel, thedel, 24 bmintns, bki, qmin, qmax, npnts, 25 infile, 26 proftyp = 'E', 27 outfile = None, 28 theta_offset = None, 29 scale=1 30 ):
31 fout = open( "tmp.staj", 'w' ); 32 33 if fout != None : 34 35 fout.write( "%13d%13d%13d%13d%13d%13d\n"%(ntlayer, nmlayer, nblayer, 36 nrepeat, mfit, nrough) ) 37 38 if theta_offset == None: 39 fout.write( "%#15.6G%#15.6G%#15.6G\n" %(_lambda,lamdel,thedel) ) 40 else: 41 fout.write( "%#15.6G%#15.6G%#15.6G%#15.6G\n" %(_lambda,lamdel,thedel, 42 theta_offset) ) 43 44 fout.write( "%#15.6G%#15.6G%#15.6G%#15.6G%15d\n"%(bmintns, bki, 45 qmin, qmax, npnts) ) 46 fout.write( "%s\n"%(proftyp) ) 47 fout.write( "%s\n"%(infile) ) 48 if outfile == None: 49 fout.write( "\n" ) 50 else: 51 fout.write( "%s\n"%(outfile) ) 52 53 saveLayers(fout, ntlayer+1, tqcsq,tqcmsq,tdepth,trough,tmu, scale=scale) 54 saveLayers(fout, nmlayer+1, mqcsq,mqcmsq,mdepth,mrough,mmu, scale=scale) 55 saveLayers(fout, nblayer+1, bqcsq,bqcmsq,bdepth,brough,bmu, scale=scale) 56 57 fout.write( "\n" ) 58 fout.close()
59 60 61 62 63 #===========================================================================
64 -def toStajFile( stajFilename, 65 ntlayer, tqcsq, tqcmsq, tdepth, trough, tmu, 66 nmlayer, mqcsq, mqcmsq, mdepth, mrough, mmu, 67 nblayer, bqcsq, bqcmsq, bdepth, brough, bmu, 68 nrepeat, mfit, nrough, _lambda, lamdel, thedel, 69 bmintns, bki, qmin, qmax, npnts, 70 infile, 71 proftyp = 'E', 72 outfile = None, 73 theta_offset = None, 74 scale=1 75 ):
76 fout = open( stajFilename, 'w' ) 77 78 if fout != None : 79 80 fout.write( "%13d%13d%13d%13d%13d%13d\n"%(ntlayer, nmlayer, nblayer, 81 nrepeat, mfit, nrough) ) 82 83 if theta_offset == None: 84 fout.write( "%#15.6G%#15.6G%#15.6G\n" %(_lambda,lamdel,thedel) ) 85 else: 86 fout.write( "%#15.6G%#15.6G%#15.6G%#15.6G\n" %(_lambda,lamdel,thedel, 87 theta_offset) ) 88 89 fout.write( "%#15.6G%#15.6G%#15.6G%#15.6G%15d\n"%(bmintns, bki, 90 qmin, qmax, npnts) ) 91 fout.write( "%s\n"%(proftyp) ) 92 fout.write( "%s\n"%(infile) ) 93 if outfile == None: 94 fout.write( "\n" ) 95 else: 96 fout.write( "%s\n"%(outfile) ) 97 98 saveLayers(fout, ntlayer+1, tqcsq,tqcmsq,tdepth,trough,tmu, scale=scale) 99 saveLayers(fout, nmlayer+1, mqcsq,mqcmsq,mdepth,mrough,mmu, scale=scale) 100 saveLayers(fout, nblayer+1, bqcsq,bqcmsq,bdepth,brough,bmu, scale=scale) 101 102 fout.write( "\n" ) 103 fout.close()
104 105 106 107 #+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 108 # Divide it into Top, Middle, Bottom parts 109 #+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
110 -def toTMB( depth, rough, rho, mu, rhom, nT, nM, nB):
111 112 _tdepth=[]; _trough=[]; _trho=[]; _trhom=[]; _tmu=[] 113 _mdepth=[]; _mrough=[]; _mrho=[]; _mrhom=[]; _mmu=[] 114 _bdepth=[]; _brough=[]; _brho=[]; _brhom=[]; _bmu=[] 115 116 for i in xrange( nT+1 ): 117 _tdepth.append(depth[i]); _trough.append( rough[i] ) 118 _trho.append( rho[i] ); _trhom.append(rhom[i]); _tmu.append(mu[i]) 119 120 for i in xrange( nT,nT+nM+1 ): 121 _mdepth.append(depth[i]); _mrough.append( rough[i] ) 122 _mrho.append( rho[i] ); _mrhom.append(rhom[i]); _mmu.append(mu[i]) 123 124 for i in xrange( nT+nM,nT+nM+nB+1 ): 125 _bdepth.append(depth[i]); _brough.append( rough[i] ) 126 _brho.append( rho[i] ); _brhom.append(rhom[i]); _bmu.append(mu[i]) 127 128 return [ _tdepth, _trough, _trho, _tmu, _trhom, 129 _mdepth, _mrough, _mrho, _mmu, _mrhom, 130 _bdepth, _brough, _brho, _bmu, _mrhom ]
131 132 133 134 #====================================================================
135 -def demo():
136 Filename = "xrayl523c6A15.staj" 137 from staj2model import Staj2Model 138 s2m = Staj2Model( Filename )._toModel() 139 140 ( depth, rough, rho, mu, rhom ) = s2m[0] 141 (_lambda, lamdel, thedel, bmintns, bki ) = s2m[1] 142 ( nTLayer, nMLayer, nBLayer, nRepeat, nFit, nRough ) = s2m[2] 143 144 ( qmin, qmax, npnts) = s2m[3] 145 (proftyp, datafile, outputfile ) = s2m[4] 146 147 ( tdepth, trough, trho, tmu, trhom, mdepth, mrough, mrho, mmu, mrhom, 148 bdepth, brough, brho, bmu, brhom ) = \ 149 toTMB( depth, rough, rho, mu, rhom, nTLayer, nMLayer, nBLayer) 150 151 152 for i in xrange( len(depth) ): 153 print depth[i],'\t',rough[i], '\t', rho[i], '\t', rhom[i], '\t', mu[i] 154 155 print 156 157 for i in xrange( len(tdepth) ): 158 print tdepth[i],'\t',trough[i],'\t',trho[i],'\t',trhom[i],'\t', tmu[i] 159 160 print 161 for i in xrange( len(mdepth) ): 162 print mdepth[i],'\t',mrough[i],'\t',mrho[i],'\t',mrhom[i],'\t',mmu[i] 163 164 print 165 for i in xrange( len(bdepth) ): 166 print bdepth[i], '\t', brough[i],'\t',brho[i],'\t',brhom[i],'\t',bmu[i] 167 168 169 toStaj( nTLayer, trho, trhom, tdepth, trough, tmu, 170 nMLayer, mrho, mrhom, mdepth, mrough, mmu, 171 nBLayer, brho, brhom, bdepth, brough, bmu, 172 nRepeat, nFit, nRough,_lambda, lamdel, thedel, 173 bmintns, bki, qmin, qmax, npnts, 174 datafile, 175 proftyp = 'E', 176 outfile = None, 177 theta_offset = None, 178 scale=16*numpy.pi 179 )
180 181 if __name__ == '__main__': 182 demo() 183