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
13 ):
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
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
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