9 Commits

19 changed files with 2241 additions and 441 deletions
+2 -2
View File
@@ -294,9 +294,9 @@ class Dataset(object):
limits=map(float, self.info['xylimits'].split())
if log:
ax.imshow(self.data, extent=limits, aspect='auto', norm=LogNorm())
ax.imshow(self.data, origin='lower', extent=limits, aspect='auto', norm=LogNorm())
else:
ax.imshow(self.data, extent=limits, aspect='auto')
ax.imshow(self.data, origin='lower', extent=limits, aspect='auto')
ax.set_xlabel(self.info['xlabel'])
ax.set_ylabel(self.info['ylabel'])
ax.set_title(self.info['component'])
+602
View File
@@ -0,0 +1,602 @@
# Dataset "D2O" exported from GenX on Wed Dec 12 04:56:52 2018
# Column lables:
# q R
1.666666666666666774e-03 1.000000000000000444e+00
3.333333333333333547e-03 9.999999999999997780e-01
5.000000000000000104e-03 9.999999999999997780e-01
6.666666666666667095e-03 1.000000000000000000e+00
8.333333333333333218e-03 1.000000000000000000e+00
1.000000000000000021e-02 9.999999999999997780e-01
1.166666666666666546e-02 1.000000000000000000e+00
1.333333333333333419e-02 1.000000000000000000e+00
1.499999999999999944e-02 1.000000000000000000e+00
1.666666666666666644e-02 9.999999999999997780e-01
1.833333333333333343e-02 4.278890099662767121e-01
2.000000000000000042e-02 1.488213407917928499e-01
2.166666666666666741e-02 7.884172397716723846e-02
2.333333333333333440e-02 4.817452607189460362e-02
2.500000000000000486e-02 3.189361318639775261e-02
2.666666666666666838e-02 2.227351089491558592e-02
2.833333333333333537e-02 1.617286323369671042e-02
3.000000000000000236e-02 1.210130221930963597e-02
3.166666666666666935e-02 9.275545669075232341e-03
3.333333333333333287e-02 7.252320052814169304e-03
3.500000000000000333e-02 5.766184773509967602e-03
3.666666666666666685e-02 4.650893428800271893e-03
3.833333333333333731e-02 3.798435003476626718e-03
4.000000000000000083e-02 3.136449158010019053e-03
4.166666666666666435e-02 2.615177649439983341e-03
4.333333333333333481e-02 2.199624859348910891e-03
4.500000000000000527e-02 1.864688519115220407e-03
4.666666666666666879e-02 1.592047104649371280e-03
4.833333333333333925e-02 1.368119547985798337e-03
4.999999999999999584e-02 1.182697864477368077e-03
5.166666666666666630e-02 1.028012492027462850e-03
5.333333333333333676e-02 8.980819969847711167e-04
5.500000000000000028e-02 7.882533389725678323e-04
5.666666666666667074e-02 6.948721016997541113e-04
5.833333333333334120e-02 6.150427933261069530e-04
6.000000000000000472e-02 5.464524855421789510e-04
6.166666666666666824e-02 4.872395943257391100e-04
6.333333333333333870e-02 4.358952326153466895e-04
6.500000000000000222e-02 3.911883347291949869e-04
6.666666666666666574e-02 3.521083144256650943e-04
6.833333333333334314e-02 3.178207833803634160e-04
7.000000000000000666e-02 2.876330878189759703e-04
7.166666666666667018e-02 2.609672896223826869e-04
7.333333333333333370e-02 2.373388377584093804e-04
7.499999999999999722e-02 2.163396222927348015e-04
7.666666666666667462e-02 1.976244279443217474e-04
7.833333333333333814e-02 1.809000424665311657e-04
8.000000000000000167e-02 1.659164515183386701e-04
8.166666666666666519e-02 1.524596832757783220e-04
8.333333333333332871e-02 1.403459649391344810e-04
8.500000000000000611e-02 1.294169281633042532e-04
8.666666666666666963e-02 1.195356575005832348e-04
8.833333333333333315e-02 1.105834197134533182e-04
9.000000000000001055e-02 1.024569455916587762e-04
9.166666666666667407e-02 9.506616212616428763e-05
9.333333333333333759e-02 8.833229335679883471e-05
9.500000000000001499e-02 8.218626426822687851e-05
9.666666666666667851e-02 7.656735477319774488e-05
9.833333333333332815e-02 7.142206085828434919e-05
9.999999999999999167e-02 6.670312795820712841e-05
1.016666666666666691e-01 6.236872801538500633e-05
1.033333333333333326e-01 5.838175681406183431e-05
1.049999999999999961e-01 5.470923231784354554e-05
1.066666666666666735e-01 5.132177809103187119e-05
1.083333333333333370e-01 4.819317860823825678e-05
1.100000000000000006e-01 4.529999547886719982e-05
1.116666666666666780e-01 4.262123543222435878e-05
1.133333333333333415e-01 4.013806240326980157e-05
1.150000000000000050e-01 3.783354729055566355e-05
1.166666666666666824e-01 3.569244997606189424e-05
1.183333333333333459e-01 3.370102904102350720e-05
1.199999999999999956e-01 3.184687531417531464e-05
1.216666666666666591e-01 3.011876597473503737e-05
1.233333333333333365e-01 2.850653642251948946e-05
1.250000000000000000e-01 2.700096753867208433e-05
1.266666666666666774e-01 2.559368630616589346e-05
1.283333333333333270e-01 2.427707805072443407e-05
1.300000000000000044e-01 2.304420880910700020e-05
1.316666666666666818e-01 2.188875654044092456e-05
1.333333333333333315e-01 2.080495007345798850e-05
1.350000000000000089e-01 1.978751483337357349e-05
1.366666666666666863e-01 1.883162452074562727e-05
1.383333333333333359e-01 1.793285802466960840e-05
1.400000000000000133e-01 1.708716094682676266e-05
1.416666666666666630e-01 1.629081119377076716e-05
1.433333333333333404e-01 1.554038816436415657e-05
1.449999999999999900e-01 1.483274511916031133e-05
1.466666666666666674e-01 1.416498437028349574e-05
1.483333333333333448e-01 1.353443497503935812e-05
1.499999999999999944e-01 1.293863265526270861e-05
1.516666666666666718e-01 1.237530169802975281e-05
1.533333333333333492e-01 1.184233862257320649e-05
1.549999999999999989e-01 1.133779742373565549e-05
1.566666666666666763e-01 1.085987622444452896e-05
1.583333333333333537e-01 1.040690518911860359e-05
1.600000000000000033e-01 9.977335566874202179e-06
1.616666666666666530e-01 9.569729748255288910e-06
1.633333333333333304e-01 9.182752232256569594e-06
1.650000000000000078e-01 8.815161411882592866e-06
1.666666666666666574e-01 8.465802096553117905e-06
1.683333333333333348e-01 8.133598698563745824e-06
1.700000000000000122e-01 7.817549018652005991e-06
1.716666666666666619e-01 7.516718572640144719e-06
1.733333333333333393e-01 7.230235407255999659e-06
1.750000000000000167e-01 6.957285358675551028e-06
1.766666666666666663e-01 6.697107712119624589e-06
1.783333333333333437e-01 6.448991225139495569e-06
1.800000000000000211e-01 6.212270481001756507e-06
1.816666666666666707e-01 5.986322541985373861e-06
1.833333333333333481e-01 5.770563875403461062e-06
1.850000000000000255e-01 5.564447527857933166e-06
1.866666666666666752e-01 5.367460525630802926e-06
1.883333333333333526e-01 5.179121481263889293e-06
1.900000000000000300e-01 4.998978388304243934e-06
1.916666666666666796e-01 4.826606587902449178e-06
1.933333333333333570e-01 4.661606892498666493e-06
1.949999999999999789e-01 4.503603853220810334e-06
1.966666666666666563e-01 4.352244158853627849e-06
1.983333333333333337e-01 4.207195155366130449e-06
1.999999999999999833e-01 4.068143475980169914e-06
2.016666666666666607e-01 3.934793772686430275e-06
2.033333333333333381e-01 3.806867540912906612e-06
2.049999999999999878e-01 3.684102029812693030e-06
2.066666666666666652e-01 3.566249231277894375e-06
2.083333333333333426e-01 3.453074941419783672e-06
2.099999999999999922e-01 3.344357888775087484e-06
2.116666666666666696e-01 3.239888924009728753e-06
2.133333333333333470e-01 3.139470266334596331e-06
2.149999999999999967e-01 3.042914802251790103e-06
2.166666666666666741e-01 2.950045432621829097e-06
2.183333333333333515e-01 2.860694464382629580e-06
2.200000000000000011e-01 2.774703043543939583e-06
2.216666666666666785e-01 2.691920626371921660e-06
2.233333333333333559e-01 2.612204485923215747e-06
2.250000000000000056e-01 2.535419251321134289e-06
2.266666666666666829e-01 2.461436477374981832e-06
2.283333333333333603e-01 2.390134242339578590e-06
2.300000000000000100e-01 2.321396771782409159e-06
2.316666666666666874e-01 2.255114086686947400e-06
2.333333333333333648e-01 2.191181674072064817e-06
2.350000000000000144e-01 2.129500178532259954e-06
2.366666666666666641e-01 2.069975113235872753e-06
2.383333333333333137e-01 2.012516589024861832e-06
2.399999999999999911e-01 1.957039060362928086e-06
2.416666666666666685e-01 1.903461086978215846e-06
2.433333333333333182e-01 1.851705110125668454e-06
2.449999999999999956e-01 1.801697242484656788e-06
2.466666666666666730e-01 1.753367070768793780e-06
2.483333333333333226e-01 1.706647470202641125e-06
2.500000000000000000e-01 1.661474430073583966e-06
2.516666666666666496e-01 1.617786889634525484e-06
2.533333333333333548e-01 1.575526583672322839e-06
2.550000000000000044e-01 1.534637897117887747e-06
2.566666666666666541e-01 1.495067728112825765e-06
2.583333333333333592e-01 1.456765358986138293e-06
2.600000000000000089e-01 1.419682334641076900e-06
2.616666666666666585e-01 1.383772347877744191e-06
2.633333333333333637e-01 1.348991131217263989e-06
2.650000000000000133e-01 1.315296354818597880e-06
2.666666666666666630e-01 1.282647530111641326e-06
2.683333333333333681e-01 1.251005918788133922e-06
2.700000000000000178e-01 1.220334446827233344e-06
2.716666666666666674e-01 1.190597623243038357e-06
2.733333333333333726e-01 1.161761463270364772e-06
2.750000000000000222e-01 1.133793415721052668e-06
2.766666666666666718e-01 1.106662294257604684e-06
2.783333333333333770e-01 1.080338212354247784e-06
2.799999999999999711e-01 1.054792521725799368e-06
2.816666666666666763e-01 1.029997754018219457e-06
2.833333333333333259e-01 1.005927565572790483e-06
2.849999999999999756e-01 9.825566850820815396e-07
2.866666666666666807e-01 9.598608639732615301e-07
2.883333333333333304e-01 9.378168293585886465e-07
2.899999999999999800e-01 9.164022394086225599e-07
2.916666666666666852e-01 8.955956410101256596e-07
2.933333333333333348e-01 8.753764295778831038e-07
2.949999999999999845e-01 8.557248109005632261e-07
2.966666666666666896e-01 8.366217649064254447e-07
2.983333333333333393e-01 8.180490112424303144e-07
2.999999999999999889e-01 7.999889765662185461e-07
3.016666666666666941e-01 7.824247634566031229e-07
3.033333333333333437e-01 7.653401208536856050e-07
3.049999999999999933e-01 7.487194159467357586e-07
3.066666666666666985e-01 7.325476074302012377e-07
3.083333333333333481e-01 7.168102200542004489e-07
3.099999999999999978e-01 7.014933204016261675e-07
3.116666666666667029e-01 6.865834938247368856e-07
3.133333333333333526e-01 6.720678224807055402e-07
3.150000000000000022e-01 6.579338644088638659e-07
3.166666666666667074e-01 6.441696335933557605e-07
3.183333333333333570e-01 6.307635809619567706e-07
3.200000000000000067e-01 6.177045762704861100e-07
3.216666666666666563e-01 6.049818908285881516e-07
3.233333333333333059e-01 5.925851810228969717e-07
3.250000000000000111e-01 5.805044725975379231e-07
3.266666666666666607e-01 5.687301456524136093e-07
3.283333333333333104e-01 5.572529203243753383e-07
3.300000000000000155e-01 5.460638431155777233e-07
3.316666666666666652e-01 5.351542738380492230e-07
3.333333333333333148e-01 5.245158731424355772e-07
3.349999999999999645e-01 5.141405906029524026e-07
3.366666666666666696e-01 5.040206533302537216e-07
3.383333333333333193e-01 4.941485550876948170e-07
3.400000000000000244e-01 4.845170458847093710e-07
3.416666666666666186e-01 4.751191220255591928e-07
3.433333333333332682e-01 4.659480165906534015e-07
3.449999999999999734e-01 4.569971903295460034e-07
3.466666666666666230e-01 4.482603229469790451e-07
3.483333333333333282e-01 4.397313047614977070e-07
3.499999999999999223e-01 4.314042287208653742e-07
3.516666666666666274e-01 4.232733827558140539e-07
3.533333333333332771e-01 4.153332424573397253e-07
3.549999999999999822e-01 4.075784640615351313e-07
3.566666666666666319e-01 4.000038777292889257e-07
3.583333333333333370e-01 3.926044811040436616e-07
3.599999999999999312e-01 3.853754331392276300e-07
3.616666666666666363e-01 3.783120481782318474e-07
3.633333333333332860e-01 3.714097902796220345e-07
3.649999999999999911e-01 3.646642677731980957e-07
3.666666666666666408e-01 3.580712280380514568e-07
3.683333333333333459e-01 3.516265524931203130e-07
3.699999999999999400e-01 3.453262517889697274e-07
3.716666666666666452e-01 3.391664611933971690e-07
3.733333333333332948e-01 3.331434361608929561e-07
3.750000000000000000e-01 3.272535480795934377e-07
3.766666666666666496e-01 3.214932801861428377e-07
3.783333333333333548e-01 3.158592236417421358e-07
3.799999999999999489e-01 3.103480737630341399e-07
3.816666666666666541e-01 3.049566263996402449e-07
3.833333333333333037e-01 2.996817744538079836e-07
3.850000000000000089e-01 2.945205045339781409e-07
3.866666666666666585e-01 2.894698937386802210e-07
3.883333333333332527e-01 2.845271065633872936e-07
3.899999999999999578e-01 2.796893919258994434e-07
3.916666666666666075e-01 2.749540803056783491e-07
3.933333333333333126e-01 2.703185809912008519e-07
3.949999999999999623e-01 2.657803794317688377e-07
3.966666666666666674e-01 2.613370346887342655e-07
3.983333333333332615e-01 2.569861769826488238e-07
3.999999999999999667e-01 2.527255053318415819e-07
4.016666666666666163e-01 2.485527852785805369e-07
4.033333333333333215e-01 2.444658466998234756e-07
4.049999999999999711e-01 2.404625816985930862e-07
4.066666666666666763e-01 2.365409425726759068e-07
4.083333333333332704e-01 2.326989398574939118e-07
4.099999999999999756e-01 2.289346404410401519e-07
4.116666666666666252e-01 2.252461657459381559e-07
4.133333333333333304e-01 2.216316899786217051e-07
4.149999999999999800e-01 2.180894384403688449e-07
4.166666666666666852e-01 2.146176858994822517e-07
4.183333333333332793e-01 2.112147550215341852e-07
4.199999999999999845e-01 2.078790148552956769e-07
4.216666666666666341e-01 2.046088793723830935e-07
4.233333333333333393e-01 2.014028060586591008e-07
4.249999999999999889e-01 1.982592945545198166e-07
4.266666666666666941e-01 1.951768853434860026e-07
4.283333333333332882e-01 1.921541584862062874e-07
4.299999999999999378e-01 1.891897323983826992e-07
4.316666666666666430e-01 1.862822626711279980e-07
4.333333333333332926e-01 1.834304409319838172e-07
4.349999999999999978e-01 1.806329937448558671e-07
4.366666666666665919e-01 1.778886815480091343e-07
4.383333333333332971e-01 1.751962976278381794e-07
4.399999999999999467e-01 1.725546671275221688e-07
4.416666666666666519e-01 1.699626460896338315e-07
4.433333333333333015e-01 1.674191205304111419e-07
4.450000000000000067e-01 1.649230055455147006e-07
4.466666666666666008e-01 1.624732444456537195e-07
4.483333333333333059e-01 1.600688079208929665e-07
4.499999999999999556e-01 1.577086932327046181e-07
4.516666666666666607e-01 1.553919234328560753e-07
4.533333333333333104e-01 1.531175466080692588e-07
4.550000000000000155e-01 1.508846351492376930e-07
4.566666666666666097e-01 1.486922850448507061e-07
4.583333333333333148e-01 1.465396151971450857e-07
4.599999999999999645e-01 1.444257667609723853e-07
4.616666666666666696e-01 1.423499025033281690e-07
4.633333333333333193e-01 1.403112061841498309e-07
4.650000000000000244e-01 1.383088819569432176e-07
4.666666666666666186e-01 1.363421537881076345e-07
4.683333333333333237e-01 1.344102648954561287e-07
4.699999999999999734e-01 1.325124772039488831e-07
4.716666666666666230e-01 1.306480708193427343e-07
4.733333333333333282e-01 1.288163435178928122e-07
4.749999999999999223e-01 1.270166102522842302e-07
4.766666666666666274e-01 1.252482026731469324e-07
4.783333333333332771e-01 1.235104686655383796e-07
4.799999999999999822e-01 1.218027718995583457e-07
4.816666666666666319e-01 1.201244913953094081e-07
4.833333333333333370e-01 1.184750211009893069e-07
4.849999999999999312e-01 1.168537694842340232e-07
4.866666666666666363e-01 1.152601591357136128e-07
4.883333333333332860e-01 1.136936263851973570e-07
4.899999999999999911e-01 1.121536209290883352e-07
4.916666666666666408e-01 1.106396054692444604e-07
4.933333333333333459e-01 1.091510553630105115e-07
4.949999999999999400e-01 1.076874582836395939e-07
4.966666666666666452e-01 1.062483138907317179e-07
4.983333333333332948e-01 1.048331335110549754e-07
5.000000000000000000e-01 1.034414398283543063e-07
5.016666666666665941e-01 1.020727665829383066e-07
5.033333333333332993e-01 1.007266582795142976e-07
5.050000000000000044e-01 9.940266990459173164e-08
5.066666666666667096e-01 9.810036665122127283e-08
5.083333333333333037e-01 9.681932365250397800e-08
5.100000000000000089e-01 9.555912572272193437e-08
5.116666666666666030e-01 9.431936710605483167e-08
5.133333333333333082e-01 9.309965123230888181e-08
5.150000000000000133e-01 9.189959048042863459e-08
5.166666666666666075e-01 9.071880594796567180e-08
5.183333333333333126e-01 8.955692722788657699e-08
5.199999999999999067e-01 8.841359219170529006e-08
5.216666666666666119e-01 8.728844677830060142e-08
5.233333333333333171e-01 8.618114478944762623e-08
5.250000000000000222e-01 8.509134769065551672e-08
5.266666666666666163e-01 8.401872441814319854e-08
5.283333333333333215e-01 8.296295119065706527e-08
5.299999999999999156e-01 8.192371132726176387e-08
5.316666666666666208e-01 8.090069506964976861e-08
5.333333333333333259e-01 7.989359940991245132e-08
5.350000000000000311e-01 7.890212792294620869e-08
5.366666666666666252e-01 7.792599060318702045e-08
5.383333333333333304e-01 7.696490370652527585e-08
5.399999999999999245e-01 7.601858959631580589e-08
5.416666666666666297e-01 7.508677659314320962e-08
5.433333333333333348e-01 7.416919882963958646e-08
5.450000000000000400e-01 7.326559610846012639e-08
5.466666666666666341e-01 7.237571376482805913e-08
5.483333333333333393e-01 7.149930253213303793e-08
5.499999999999999334e-01 7.063611841175256497e-08
5.516666666666666385e-01 6.978592254615237399e-08
5.533333333333333437e-01 6.894848109549501148e-08
5.550000000000000488e-01 6.812356511723137695e-08
5.566666666666666430e-01 6.731095044973926732e-08
5.583333333333332371e-01 6.651041759806650711e-08
5.599999999999999423e-01 6.572175162342982274e-08
5.616666666666666474e-01 6.494474203552961160e-08
5.633333333333333526e-01 6.417918268740402335e-08
5.649999999999999467e-01 6.342487167345138111e-08
5.666666666666666519e-01 6.268161122997877260e-08
5.683333333333332460e-01 6.194920763820793676e-08
5.699999999999999512e-01 6.122747113030067724e-08
5.716666666666666563e-01 6.051621579725066012e-08
5.733333333333333615e-01 5.981525949950748832e-08
5.749999999999999556e-01 5.912442377991602164e-08
5.766666666666666607e-01 5.844353377899839119e-08
5.783333333333332549e-01 5.777241815195687396e-08
5.799999999999999600e-01 5.711090898859819714e-08
5.816666666666666652e-01 5.645884173448569610e-08
5.833333333333333703e-01 5.581605511470497935e-08
5.849999999999999645e-01 5.518239105925946357e-08
5.866666666666666696e-01 5.455769463067958281e-08
5.883333333333332638e-01 5.394181395298541755e-08
5.899999999999999689e-01 5.333460014302300771e-08
5.916666666666666741e-01 5.273590724301440439e-08
5.933333333333333792e-01 5.214559215520071354e-08
5.949999999999999734e-01 5.156351457791591065e-08
5.966666666666666785e-01 5.098953694326822462e-08
5.983333333333332726e-01 5.042352435646910014e-08
5.999999999999999778e-01 4.986534453667874591e-08
6.016666666666666829e-01 4.931486775920430857e-08
6.033333333333332771e-01 4.877196679922090596e-08
6.049999999999999822e-01 4.823651687681002158e-08
6.066666666666665764e-01 4.770839560356234247e-08
6.083333333333332815e-01 4.718748293010142776e-08
6.099999999999999867e-01 4.667366109538092527e-08
6.116666666666666918e-01 4.616681457675680997e-08
6.133333333333332860e-01 4.566683004160191730e-08
6.149999999999999911e-01 4.517359629995142803e-08
6.166666666666665853e-01 4.468700425834689817e-08
6.183333333333332904e-01 4.420694687473174789e-08
6.199999999999999956e-01 4.373331911448575834e-08
6.216666666666667007e-01 4.326601790764034557e-08
6.233333333333332948e-01 4.280494210676177292e-08
6.250000000000000000e-01 4.234999244626248742e-08
6.266666666666665941e-01 4.190107150236622004e-08
6.283333333333332993e-01 4.145808365429422949e-08
6.300000000000000044e-01 4.102093504606244872e-08
6.316666666666667096e-01 4.058953354952004420e-08
6.333333333333333037e-01 4.016378872788478652e-08
6.350000000000000089e-01 3.974361180054057285e-08
6.366666666666666030e-01 3.932891560836080469e-08
6.383333333333333082e-01 3.891961458003366657e-08
6.400000000000000133e-01 3.851562469891549018e-08
6.416666666666666075e-01 3.811686347104804092e-08
6.433333333333333126e-01 3.772324989352787249e-08
6.449999999999999067e-01 3.733470442382901695e-08
6.466666666666666119e-01 3.695114894991631394e-08
6.483333333333333171e-01 3.657250676073420709e-08
6.500000000000000222e-01 3.619870251755798537e-08
6.516666666666666163e-01 3.582966222627760775e-08
6.533333333333333215e-01 3.546531320962220248e-08
6.549999999999999156e-01 3.510558408087192307e-08
6.566666666666666208e-01 3.475040471735568370e-08
6.583333333333333259e-01 3.439970623520317829e-08
6.600000000000000311e-01 3.405342096424553406e-08
6.616666666666666252e-01 3.371148242375067629e-08
6.633333333333333304e-01 3.337382529844583069e-08
6.649999999999999245e-01 3.304038541531268527e-08
6.666666666666666297e-01 3.271109972085879636e-08
6.683333333333333348e-01 3.238590625873510041e-08
6.699999999999999289e-01 3.206474414802221109e-08
6.716666666666667451e-01 3.174755356198754107e-08
6.733333333333333393e-01 3.143427570727327899e-08
6.749999999999999334e-01 3.112485280338944387e-08
6.766666666666666385e-01 3.081922806305666575e-08
6.783333333333333437e-01 3.051734567259488484e-08
6.800000000000000488e-01 3.021915077290711772e-08
6.816666666666666430e-01 2.992458944089847277e-08
6.833333333333332371e-01 2.963360867123555706e-08
6.849999999999999423e-01 2.934615635857900073e-08
6.866666666666666474e-01 2.906218128011027574e-08
6.883333333333333526e-01 2.878163307851241170e-08
6.899999999999999467e-01 2.850446224533779264e-08
6.916666666666665408e-01 2.823062010459122576e-08
6.933333333333333570e-01 2.796005879684877517e-08
6.949999999999999512e-01 2.769273126365537854e-08
6.966666666666666563e-01 2.742859123214359243e-08
6.983333333333332504e-01 2.716759320021219980e-08
7.000000000000000666e-01 2.690969242177687162e-08
7.016666666666666607e-01 2.665484489248551212e-08
7.033333333333332549e-01 2.640300733572920854e-08
7.049999999999999600e-01 2.615413718884067298e-08
7.066666666666666652e-01 2.590819258975669951e-08
7.083333333333333703e-01 2.566513236382797849e-08
7.099999999999999645e-01 2.542491601092621619e-08
7.116666666666665586e-01 2.518750369291540244e-08
7.133333333333333748e-01 2.495285622115671481e-08
7.149999999999999689e-01 2.472093504466301426e-08
7.166666666666666741e-01 2.449170223802871503e-08
7.183333333333332682e-01 2.426512049009232800e-08
7.200000000000000844e-01 2.404115309236922660e-08
7.216666666666666785e-01 2.381976392810350769e-08
7.233333333333332726e-01 2.360091746134887006e-08
7.249999999999999778e-01 2.338457872624707644e-08
7.266666666666666829e-01 2.317071331677937767e-08
7.283333333333333881e-01 2.295928737625747089e-08
7.299999999999999822e-01 2.275026758767343839e-08
7.316666666666665764e-01 2.254362116355122094e-08
7.333333333333332815e-01 2.233931583664113037e-08
7.349999999999999867e-01 2.213731985027616766e-08
7.366666666666666918e-01 2.193760194928167534e-08
7.383333333333332860e-01 2.174013137095134288e-08
7.399999999999998801e-01 2.154487783611315651e-08
7.416666666666666963e-01 2.135181154056998901e-08
7.433333333333332904e-01 2.116090314648889765e-08
7.449999999999999956e-01 2.097212377417742691e-08
7.466666666666665897e-01 2.078544499389019261e-08
7.483333333333334059e-01 2.060083881779605820e-08
7.500000000000000000e-01 2.041827769220850997e-08
7.516666666666665941e-01 2.023773448986047171e-08
7.533333333333332993e-01 2.005918250241342328e-08
7.550000000000000044e-01 1.988259543300715027e-08
7.566666666666667096e-01 1.970794738916072117e-08
7.583333333333333037e-01 1.953521287556203333e-08
7.599999999999998979e-01 1.936436678714065848e-08
7.616666666666667140e-01 1.919538440231357548e-08
7.633333333333333082e-01 1.902824137623867863e-08
7.650000000000000133e-01 1.886291373433779472e-08
7.666666666666666075e-01 1.869937786578347270e-08
7.683333333333334236e-01 1.853761051726879840e-08
7.700000000000000178e-01 1.837758878687452184e-08
7.716666666666666119e-01 1.821929011783787269e-08
7.733333333333333171e-01 1.806269229286720887e-08
7.749999999999999112e-01 1.790777342811779587e-08
7.766666666666667274e-01 1.775451196755162606e-08
7.783333333333333215e-01 1.760288667738289432e-08
7.799999999999999156e-01 1.745287664051361354e-08
7.816666666666666208e-01 1.730446125118687474e-08
7.833333333333333259e-01 1.715762020962761326e-08
7.850000000000000311e-01 1.701233351704282816e-08
7.866666666666666252e-01 1.686858147028946339e-08
7.883333333333332194e-01 1.672634465708305349e-08
7.900000000000000355e-01 1.658560395101963153e-08
7.916666666666666297e-01 1.644634050676316584e-08
7.933333333333333348e-01 1.630853575537531813e-08
7.949999999999999289e-01 1.617217139965928020e-08
7.966666666666667451e-01 1.603722940962488197e-08
7.983333333333333393e-01 1.590369201808942332e-08
7.999999999999999334e-01 1.577154171623564136e-08
8.016666666666666385e-01 1.564076124937348188e-08
8.033333333333333437e-01 1.551133361269191143e-08
8.050000000000000488e-01 1.538324204720832969e-08
8.066666666666666430e-01 1.525647003563696443e-08
8.083333333333332371e-01 1.513100129843471658e-08
8.100000000000000533e-01 1.500681978991802039e-08
8.116666666666666474e-01 1.488390969444918677e-08
8.133333333333333526e-01 1.476225542257474868e-08
8.149999999999999467e-01 1.464184160746584814e-08
8.166666666666665408e-01 1.452265310120673145e-08
8.183333333333333570e-01 1.440467497126517943e-08
8.199999999999999512e-01 1.428789249699296266e-08
8.216666666666666563e-01 1.417229116623683953e-08
8.233333333333332504e-01 1.405785667186510569e-08
8.250000000000000666e-01 1.394457490861186366e-08
8.266666666666666607e-01 1.383243196969003584e-08
8.283333333333332549e-01 1.372141414370212119e-08
8.299999999999999600e-01 1.361150791144756097e-08
8.316666666666666652e-01 1.350269994286487373e-08
8.333333333333333703e-01 1.339497709408880801e-08
8.349999999999999645e-01 1.328832640432764461e-08
8.366666666666665586e-01 1.318273509311794788e-08
8.383333333333333748e-01 1.307819055733634102e-08
8.399999999999999689e-01 1.297468036850652034e-08
8.416666666666666741e-01 1.287219226991138080e-08
8.433333333333332682e-01 1.277071417399567383e-08
8.450000000000000844e-01 1.267023415964879515e-08
8.466666666666666785e-01 1.257074046959427720e-08
8.483333333333332726e-01 1.247222150785344985e-08
8.499999999999999778e-01 1.237466583715033664e-08
8.516666666666666829e-01 1.227806217652134765e-08
8.533333333333333881e-01 1.218239939883500653e-08
8.549999999999999822e-01 1.208766652838345038e-08
8.566666666666665764e-01 1.199385273852943676e-08
8.583333333333332815e-01 1.190094734947819867e-08
8.599999999999999867e-01 1.180893982590323440e-08
8.616666666666666918e-01 1.171781977475372466e-08
8.633333333333332860e-01 1.162757694308454006e-08
8.649999999999998801e-01 1.153820121588110024e-08
8.666666666666666963e-01 1.144968261394877284e-08
8.683333333333332904e-01 1.136201129182400759e-08
8.699999999999999956e-01 1.127517753573424751e-08
8.716666666666665897e-01 1.118917176159198780e-08
8.733333333333334059e-01 1.110398451302235871e-08
8.750000000000000000e-01 1.101960645941020503e-08
8.766666666666665941e-01 1.093602839401977062e-08
8.783333333333332993e-01 1.085324123207920940e-08
8.800000000000000044e-01 1.077123600896318528e-08
8.816666666666667096e-01 1.069000387835297257e-08
8.833333333333333037e-01 1.060953611051815378e-08
8.849999999999998979e-01 1.052982409048395294e-08
8.866666666666667140e-01 1.045085931638380284e-08
8.883333333333333082e-01 1.037263339768496325e-08
8.900000000000000133e-01 1.029513805359657539e-08
8.916666666666666075e-01 1.021836511140186732e-08
8.933333333333334236e-01 1.014230650488078171e-08
8.950000000000000178e-01 1.006695427264572650e-08
8.966666666666666119e-01 9.992300556679207259e-09
8.983333333333333171e-01 9.918337600745895184e-09
8.999999999999999112e-01 9.845057748929442197e-09
9.016666666666667274e-01 9.772453444094858069e-09
9.033333333333333215e-01 9.700517226510004005e-09
9.049999999999999156e-01 9.629241732331423638e-09
9.066666666666666208e-01 9.558619692283719409e-09
9.083333333333333259e-01 9.488643930180032504e-09
9.100000000000000311e-01 9.419307361657381304e-09
9.116666666666666252e-01 9.350602992777571408e-09
9.133333333333332194e-01 9.282523918710001498e-09
9.150000000000000355e-01 9.215063322447187502e-09
9.166666666666666297e-01 9.148214473575396844e-09
9.183333333333333348e-01 9.081970726925700499e-09
9.199999999999999289e-01 9.016325521431505870e-09
9.216666666666667451e-01 8.951272378854467038e-09
9.233333333333333393e-01 8.886804902622282763e-09
9.249999999999999334e-01 8.822916776661787834e-09
9.266666666666666385e-01 8.759601764205443938e-09
9.283333333333333437e-01 8.696853706684206389e-09
9.300000000000000488e-01 8.634666522603989519e-09
9.316666666666666430e-01 8.573034206450921255e-09
9.333333333333332371e-01 8.511950827591616428e-09
9.350000000000000533e-01 8.451410529212845376e-09
9.366666666666666474e-01 8.391407527299304141e-09
9.383333333333333526e-01 8.331936109551314815e-09
9.399999999999999467e-01 8.272990634416855476e-09
9.416666666666665408e-01 8.214565530084408238e-09
9.433333333333333570e-01 8.156655293449003333e-09
9.449999999999999512e-01 8.099254489222038774e-09
9.466666666666666563e-01 8.042357748948282073e-09
9.483333333333332504e-01 7.985959770017702085e-09
9.500000000000000666e-01 7.930055314828554130e-09
9.516666666666666607e-01 7.874639209806676320e-09
9.533333333333332549e-01 7.819706344574867867e-09
9.549999999999999600e-01 7.765251671021222332e-09
9.566666666666666652e-01 7.711270202443769926e-09
9.583333333333333703e-01 7.657757012728165687e-09
9.599999999999999645e-01 7.604707235476974347e-09
9.616666666666665586e-01 7.552116063192771580e-09
9.633333333333333748e-01 7.499978746463553073e-09
9.649999999999999689e-01 7.448290593170392285e-09
9.666666666666666741e-01 7.397046967677337799e-09
9.683333333333332682e-01 7.346243290102658937e-09
9.700000000000000844e-01 7.295875035473213223e-09
9.716666666666666785e-01 7.245937733077665596e-09
9.733333333333332726e-01 7.196426965634166866e-09
9.749999999999999778e-01 7.147338368597130869e-09
9.766666666666666829e-01 7.098667629435502836e-09
9.783333333333333881e-01 7.050410486950454502e-09
9.799999999999999822e-01 7.002562730545970454e-09
9.816666666666665764e-01 6.955120199529657999e-09
9.833333333333332815e-01 6.908078782489885956e-09
9.849999999999999867e-01 6.861434416587950486e-09
9.866666666666666918e-01 6.815183086926430052e-09
9.883333333333332860e-01 6.769320825889527906e-09
9.899999999999998801e-01 6.723843712493391200e-09
9.916666666666666963e-01 6.678747871810286573e-09
9.933333333333332904e-01 6.634029474300308528e-09
9.949999999999999956e-01 6.589684735217115509e-09
9.966666666666665897e-01 6.545709914067291268e-09
9.983333333333334059e-01 6.502101313897288710e-09
+35 -162
View File
@@ -54,7 +54,8 @@ int operationmode = 0, double over_illumination = 0.0, double theta_resolution =
double lambda_min = 3.75, double lambda_start = 3.0, double lambda_end = 12.0,
int enable_chopper = 0, int enable_gravity=0, int enable_windows=1,
int enable_polarizer = 0, int enable_analyzer = 0,
double source_power = 2, double frame_usage = 0.98
double source_power = 2,
double selene1_foot1y =0.0, double selene1_foot2y = 0.0
)
DECLARE
@@ -70,8 +71,12 @@ double iscs_z=0.0547095; // ISCS in McStas coordinates using mod-view-opt.instr
double iscs_rot_y=0.4; // ISCS is at TCS-35.6 degree, McStas at -36 degree
double iscs_rot_x=0.7; // downward tilt of Estia axis
// Selene 1 (Will follow later with detailed parameters)
// Selene 1 geometry parameters (optics parameters in Estia_selene1.instr)
double selene1_foot1 = 4.20; // distance of first foot to VS focus
double selene1_foot2 = 7.00; // distance of second foot to VS focus
double selene1_center;
double selene1_shift;
double selene1_rot;
// Selene 2
@@ -97,9 +102,6 @@ double slit_distance = 1.775; //m, distance slit to sample
double selene_theta = 1.25;
double velocity_max ; // m/s neutron velocity of lambda_min
/* flags */
int PP_small = 1 ; // plot all PSD with small area
int PP_large = 1 ; // plot all PSD with large area
double analyzer_max_height = 0.01; // Maximum sample height to be covered by te polarization analyzers
double analyzer1_start = 0.65; // Distance to sample to start the first analyzer
@@ -115,7 +117,7 @@ INITIALIZE
// chopper coupling together
velocity_max= 3.956034E3 / lambda_min; // h/m_n over lambda - ((3.9..e-7m^2/s))/(1e-10m)
chopper_phase=360.0*(chopper_pos*chopper_freq/velocity_max+(pulse_zero-opening_time)*chopper_freq);
chopper_open =360.0*(chopper_pos/(total_length+detector_arm))*frame_usage;
chopper_open = 98.0;
/* print out some calculated parameter for checking purposes */
@@ -130,7 +132,11 @@ Theta2_analyzer1=atan((dist_ana_vfocus+analyzer1_start+analyzer1_length)/dist_an
Theta1_analyzer2=atan((dist_ana_vfocus+analyzer2_start)/dist_ana_vfocus*analyzer_max_height/2.0/analyzer2_start)*180.0/PI;
Theta2_analyzer2=atan((dist_ana_vfocus+analyzer2_start+analyzer2_length)/dist_ana_vfocus*analyzer_max_height/2.0/(analyzer2_start+analyzer2_length))*180.0/PI;
selene1_center=(selene1_foot1+selene1_foot2)/2.;
selene1_shift=(selene1_foot1y+selene1_foot2y)/1000.0;
selene1_rot=atan((selene1_foot2y-selene1_foot1y)/(selene1_foot2-selene1_foot1)/1000.0)*180.0/PI;
printf(" Selene 1 rotation = %.4f deg\n", selene1_rot);
printf(" Selene 1 shift = %.1f mm\n", selene1_shift*1e3);
%}
TRACE
@@ -157,10 +163,12 @@ COMPONENT ISCS = Arm() // rotate around y-axis (slight downward tilt)
COMPONENT arm_feeder = Arm()
AT (0, 0, 0) RELATIVE ISCS
ROTATED (0, 0, 0) RELATIVE ISCS
COMPONENT arm_selene1_center = Arm()
AT (selene1_shift, 0, 2*NBOA_c+selene1_center) RELATIVE ISCS
ROTATED (0, selene1_rot, 0) RELATIVE ISCS
// Axes starting at focus of feeder parallel to c-axis of Selene guides
COMPONENT arm_selene1 = Arm()
AT (0, 0, 2*NBOA_c) RELATIVE ISCS
ROTATED (0, 0, 0) RELATIVE ISCS
AT (0, 0, -selene1_center) RELATIVE arm_selene1_center
COMPONENT arm_selene2 = Arm()
AT (0, 0, 2*NBOA_c+2*selene_c) RELATIVE ISCS
ROTATED (0, 0, 0) RELATIVE ISCS
@@ -199,15 +207,6 @@ COMPONENT moderator = ESS_butterfly(
AT (0, 0, 0) RELATIVE origin
// monitor used for brilliance transfer calculations
COMPONENT tof_source = Monitor_nD(
filename = "tof_source",
options = "xdiv limits=[-0.75 0.75] bins=15 ydiv limits=[-2.0 2.0] bins=40 time limits=[0 0.6] bins=600 lambda limits=[0 35] bins=350",
xwidth=0.01, yheight = 0.01)
WHEN sample==4
AT (0, 0, 0.03) RELATIVE ISCS
ROTATED (0,-selene_theta,0) RELATIVE ISCS
/***************************************
* Geometry of neutron feeder separate *
***************************************/
@@ -216,11 +215,14 @@ COMPONENT tof_source = Monitor_nD(
/****************************************************
* Beam manipulation area around the virtual source *
****************************************************/
/* Absorber to reduce beam to needed size an for shielding purposes (FeNi in CAD model) */
COMPONENT FeNi_in = Slit(xwidth=0.028, yheight=0.078)
AT (0, 0, -0.800) RELATIVE arm_virtual_source_beam
/* Absorber to reduce beam to needed size an for shielding purposes (CPC1 in CAD model) */
COMPONENT CPC1_in = Slit(xwidth=0.0303, yheight=0.0792)
AT (0, 0, -0.890) RELATIVE arm_virtual_source_beam
COMPONENT FeNi_out = Slit(xwidth=0.013, yheight=0.038)
COMPONENT CPC1_monitor = Slit(xwidth=0.016344, yheight=0.05547)
AT (0, 0, -0.3573) RELATIVE arm_virtual_source_beam
COMPONENT CPC1_out = Slit(xwidth=0.013, yheight=0.038)
AT (0, 0, -0.220) RELATIVE arm_virtual_source_beam
@@ -231,30 +233,6 @@ COMPONENT chopper = DiskChopper(radius=chopper_diameter/2.0, yheight=0.02,
WHEN enable_chopper==1
AT (0, 0, chopper_pos-2*NBOA_c) RELATIVE arm_virtual_source_beam
// Beam monitoring before VS
COMPONENT DP_before_virtual_source = DivPos_monitor(
filename = "DP_before_virtual_source" ,
nh = 200, ndiv = 200,
xwidth = 0.2, yheight = 0.2,
maxdiv_h = 6,
restore_neutron = 1)
AT (0, 0, -0.022) RELATIVE arm_virtual_source_beam
COMPONENT PP_small_before_virtual_source = PSD_monitor(
filename = "PP_small_before_virtual_source",
nx = 200, ny = 200,
xwidth = 0.1, yheight = 0.1,
restore_neutron = 1)
WHEN PP_small ==1
AT (0, 0, -0.021) RELATIVE arm_virtual_source_beam
COMPONENT PP_large_before_virtual_source = PSD_monitor(
filename = "PP_large_before_virtual_source",
nx = 200, ny = 200,
xmin = -1.8, xmax = 1.8, ymin = -1.8, ymax = 1.8,
restore_neutron = 1)
WHEN PP_large ==1
AT (0, 0, 2*NBOA_c-0.02) RELATIVE ISCS
/* The actual virtual source mask, two L-shaped absorbers (first top-right) */
@@ -263,66 +241,26 @@ COMPONENT virtual_source_TR = Slit(
WHEN sample!=4
AT (-over_illumination, 0, -0.5*sample_length) RELATIVE arm_virtual_source
// window to absorb neutron not passing through heavy collimation
COMPONENT virtual_source_HC = Slit(
xmin = -0.015, xmax = 0.015,
ymin = -0.015, ymax = 0.015)
// window to cut down to defined size for test setting
COMPONENT virtual_source_HC = Slit(xwidth=sample_length, yheight=sample_height)
WHEN sample==4
AT (0, 0, 0) RELATIVE arm_virtual_source
//
/* The actual virtual source mask, two L-shaped absorbers (second bottom-left) */
COMPONENT virtual_source_BL = Slit(
xmin = -1.0, xmax = 0.0, ymin = -sample_height/2-over_illumination*5, ymax = 1.0)
WHEN sample!=4
AT (over_illumination, 0, 0.5*sample_length) RELATIVE arm_virtual_source
// Beam monitoring after VS
COMPONENT tof_virtual_source = Monitor_nD(
filename = "tof_virtual_source",
options = "xdiv limits=[-0.75 0.75] bins=15 ydiv limits=[-2.0 2.0] bins=40 time limits=[0 0.6] bins=600 lambda limits=[0 35] bins=350",
xwidth=sample_length, yheight = sample_height)
WHEN sample==4
AT (0, 0, 0.019) RELATIVE arm_virtual_source_beam
COMPONENT DL_behind_virtual_source = DivLambda_monitor(
filename = "DL_behind_virtual_source",
nL = 200, nh = 200,
xwidth = 0.02, yheight = 0.06,
maxdiv_h = 3,
Lmin = lambda_start, Lmax = lambda_end,
restore_neutron = 1)
AT (0, 0, 0.02) RELATIVE arm_virtual_source_beam
COMPONENT DP_behind_virtual_source = DivPos_monitor(
filename = "DP_behind_virtual_source" ,
nh = 200, ndiv = 200,
xwidth = 0.2, yheight = 0.2,
maxdiv_h = 3,
restore_neutron = 1)
AT (0, 0, 0.021) RELATIVE arm_virtual_source_beam
COMPONENT PP_small_behind_virtual_source = PSD_monitor(
filename = "PP_small_behind_virtual_source",
nx = 200, ny = 200,
xwidth = 0.02, yheight = 0.05,
restore_neutron = 1)
WHEN PP_small ==1
AT (0, 0, 0.022) RELATIVE arm_virtual_source_beam
COMPONENT PP_large_behind_virtual_source = PSD_monitor(
filename = "PP_large_behind_virtual_source",
nx = 200, ny = 200,
xmin = -1.8, xmax = 1.8, ymin = -1.8, ymax = 1.8,
restore_neutron = 1)
WHEN PP_large ==1
AT (0, 0, 2*NBOA_c+0.023) RELATIVE ISCS
/*************************************
* Geometry of Selene guide separate *
*************************************/
%include "Estia_selene.instr"
%include "Estia_selene1.instr"
%include "Estia_mf.instr"
%include "Estia_selene2.instr"
/**********************************
* Optical components within cave *
@@ -343,60 +281,14 @@ COMPONENT ac_slit = Slit(
/***************
* Sample area *
***************/
// Beam monitoring before sample
COMPONENT PP_small_sample_focus = PSD_monitor(
filename = "PP_small_sample_focus",
nx = 200, ny = 200,
xwidth = 0.02, yheight = 0.05,
restore_neutron = 1)
WHEN PP_small ==1
AT (0, 0, -0.001) RELATIVE arm_sample
COMPONENT DL_sample_focus = DivLambda_monitor(
filename = "DL_sample_focus",
nL = 200, nh = 200,
xwidth = 0.02, yheight = 0.06,
maxdiv_h = 3,
Lmin = lambda_start, Lmax = lambda_end,
restore_neutron = 1)
AT (0, 0, -0.001) RELATIVE arm_sample
/* monitor at sample position for footprint */
COMPONENT PL_sample = Monitor_nD(
filename = "PL_sample",
options = "lambda limits=[0 35] bins=350 x limits=[-0.02 0.02] bins 160",
xwidth = 0.04, yheight = 0.02, restore_neutron=1)
WHEN sample!=4
AT (0, 0, -0.001) RELATIVE arm_sample
ROTATED (0, -90, 0) RELATIVE arm_sample
COMPONENT PSD_sample = PSD_monitor(
filename = "PSD_sample",
nx = 100, ny = 100,
xwidth = 4*sample_length, yheight = 4*sample_height,
restore_neutron = 1)
WHEN sample!=4
AT (0, 0, -0.001) RELATIVE arm_sample
ROTATED (0, -90, 0) RELATIVE arm_sample
COMPONENT tof_sample = Monitor_nD(
filename = "tof_sample",
options = "xdiv limits=[-0.75 0.75] bins=15 ydiv limits=[-2.0 2.0] bins=40 time limits=[0 0.6] bins=600 lambda limits=[0 35] bins=350",
xwidth=sample_length, yheight = sample_height)
options = "x limits=[-0.025 0.025] bins=1000 y limits=[-0.025 0.025] bins=1000 xdiv limits=[-0.75 0.75] bins=150 ydiv limits=[-2.0 2.0] bins=400 time limits=[0 0.6] bins=6000 lambda limits=[0 35] bins=3500 list all",
xwidth=0.05, yheight = 0.05)
WHEN sample==4
AT (0, 0, -0.0005) RELATIVE arm_sample_beam
ROTATED (0, 0, 0) RELATIVE arm_sample_beam
/* monitor for full beam at sample position ( n/cm²/s ) */
COMPONENT PP_small_sample = PSD_monitor(
filename = "PSD_sample_perp",
nx = 200, ny = 200,
xwidth = 0.05, yheight = 0.05,
restore_neutron = 1)
WHEN sample==4
AT (0, 0, 0) RELATIVE arm_sample_beam
ROTATED (0, 0, 0) RELATIVE arm_sample_beam
/* NiTi multilayer sample */
COMPONENT sample = Mirror(
@@ -463,31 +355,12 @@ COMPONENT analyzer2 = Polariser(nIncRefr=1, d_substrate = 5e-4, reflect_d=0, ref
ROTATED (0,0,0.0) RELATIVE arm_analyzer
/* detector */
// Beam monitoring at detector position
COMPONENT PP_large_detector = PSD_monitor(
filename = "PP_large_detector",
nx = 200, ny = 200,
xmin = -1.8, xmax = 1.8, ymin = -1.8, ymax = 1.8,
restore_neutron = 1)
AT (0, 0, total_length+detector_arm-0.001) RELATIVE ISCS
// Detector with 0.5x1mm² resolution
COMPONENT PP_detector = PSD_monitor(
filename = "PP_detector",
nx = 1000, ny = 500,
xwidth = 0.5, yheight = 0.5,
restore_neutron = 1)
AT (0, 0, detector_arm) RELATIVE arm_detector
COMPONENT tof_detector = Monitor_nD(
filename = "tof_detector",
options = "x limits=[-0.25 0.25] bins=1000 y limits=[-0.5 0.5] bins=1000 time limits=[0 0.6] bins=6000 lambda limits=[0 35] bins=3500 sx limits=[-1 1] bins=1000 sy limits=[-1 1] bins=1000, list all",
xwidth = 0.5, yheight = 1.0)
WHEN sample!=4
AT (0, 0, detector_arm+0.00001) RELATIVE arm_detector
/*COMPONENT detector = PSD_TOF_monitor(xwidth=0.5, yheight=0.5,
nx=1000, ny=250, tmin=35000, tmax=115000, nt=160, filename="detector")
AT (0, 0, detector_arm) RELATIVE arm_detector
/***********************************************************************/
+391
View File
@@ -0,0 +1,391 @@
/*******************************************************************************
* McStas instrument definition URL=http://www.mcstas.org
*
* Instrument: ESS_reflectometer_Estia
*
* %Identification
* Written by: Artur Glavic (artur.glavic@psi.ch); Jochen Stahn (jochen.stahn@psi.ch); Christine Klauser (christine.klauser@psi.ch)
* Date: 01. 03. 2018
* Origin: PSI
* Release: McStas 2.4.1
* Version: 1.0
* %INSTRUMENT_SITE: ESS (E02)
*
* Estia is a vertical sample, focusing reflectometer for small sample
*
* %Description
* The instrument consists of a two part elliptical feeder that focuses onto
* a slit mask that defines the sample footprint, called virtual source.
* The virtual source is imaged on the sample position with a Selene
* type neutron guide (two ellipses).
* This version of the instrument, used in the ESS butterfly moderator,
* has two vertical Selene guide systems that share the same focal points.
* The two guides are only implemented in the feeder as the selene mirrors
* are part of the upgrade program.
*
* %Parameters
* omegaa: [deg] incident angle selected by slit
* sample: flag to switch between (0) sample D2O surface
* (1) reference ( R(q_z) = 1 for all q_z )
* (2) Ni-film on silicon
* (3) Natural SiO2 on silicon
* (4) monitor instead of sample (normal to beam)
* sample_length: [m] Size of sample in beam direction
* sample_width: [m] Size of sample in perpendicular to beam
*
* over_illumination: [m] Extra opening of virtual source compared to sample size
* theta_resolution: Delta theta / theta
*
* lambda_start: [A] Beginning of simulated wavelength range
* lambda_end: [A] End of simulated wavelength range
* reflector: [0/1/2] Direct beam on sample or moved down to use reflector 1 or 2 setup
* enable_gravity: [0/1] Use gravity in elliptical guide model.
* enable_chopper: [0/1/2/3] Activate chopper component if !=0. Numbers larger than
* 1 define the number of pulses per chopper opening.
* (pulses skipped=enable_chopper-1)
*
* %End
*******************************************************************************/
DEFINE INSTRUMENT ESS_reflectometer_Estia
(int sample = 0, double sample_length = 0.25, double sample_width = 0.1,
double omegaa = 0.0, double theta_resolution = 0.04, int reflector = 0,
double lambda_min = 3.75, double lambda_start = 3.0, double lambda_end = 12.0,
int enable_chopper = 0, int enable_gravity=0, int enable_windows=1,
double source_power = 2)
DECLARE
%{
/* Geometrical parameters from CAD model of Estia (ESS-0050413)
* TCS coordinate and directional rotation first focus point
* refered to as focus_moderator_y_rot
*/
//TCS position of ISCS: (110,-105,137)
double iscs_x=0.0199717;
double iscs_y=0.0;
double iscs_z=0.0547095; // ISCS in McStas coordinates using mod-view-opt.instr
double iscs_rot_y=0.4; // ISCS is at TCS-35.6 degree, McStas at -36 degree
double iscs_rot_x=0.7; // downward tilt of Estia axis
double selene1_foot1y =0.0;
double selene1_foot2y = 0.0;
// Selene 1 geometry parameters (optics parameters in Estia_selene1.instr)
double selene1_foot1 = 4.20; // distance of first foot to VS focus
double selene1_foot2 = 7.00; // distance of second foot to VS focus
double selene1_center;
double selene1_shift;
double selene1_rot;
// Selene 2
/* general instrument geometry parameters */
double total_length = 35.0 ; // m distance moderator-sample (2*c_feeder+4*c_Selene)
double detector_arm = 4.0 ; // m distance sample-detector
/* chopper parameters */
double chopper_diameter = 0.7;
double chopper_pos = 10.895; // m distance source-chopper
double chopper_phase ; // deg phase between pulse and chopper opening
double chopper_open ; // deg of opening angle in the chopper
double pulse_zero = 0.00175; // ms intensity weighted average time of emitted neutron pulse
double opening_time = 0.0015; // ms time to reach full intensity on detector, used to adjust phase to get full intensity at beginning of selected band
double chopper_freq = 14.0 ; // Hz chopper frequency
double slit_distance = 1.775; //m, distance slit to sample
/* derived quantities */
double selene_theta = 1.25;
double velocity_max ; // m/s neutron velocity of lambda_min
double analyzer_max_height = 0.01; // Maximum sample height to be covered by te polarization analyzers
double analyzer1_start = 0.65; // Distance to sample to start the first analyzer
double analyzer1_length = 1.3; // length of first analyzer
double analyzer2_start = 0.7; // Distance to sample to start the first analyzer
double analyzer2_length = 1.6; // length of first analyzer
double Theta1_analyzer1, Theta1_analyzer2, Theta2_analyzer1, Theta2_analyzer2, dist_ana_vfocus; // quantities calculated out of values above and 1.5 degree covered divergence
%}
INITIALIZE
%{
// chopper coupling together
velocity_max= 3.956034E3 / lambda_min; // h/m_n over lambda - ((3.9..e-7m^2/s))/(1e-10m)
chopper_phase=360.0*(chopper_pos*chopper_freq/velocity_max+(pulse_zero-opening_time)*chopper_freq);
chopper_open = 98.0;
/* print out some calculated parameter for checking purposes */
printf(" Chopper phase = %.1f deg\n", chopper_phase);
printf(" Chopper open = %.1f deg\n", chopper_open);
dist_ana_vfocus=analyzer_max_height/2.0/tan(1.5*PI/360.0); // the virtual focus point infront of the actual sample focus where the beams furthest out meet
Theta1_analyzer1=atan((dist_ana_vfocus+analyzer1_start)/dist_ana_vfocus*analyzer_max_height/2.0/analyzer1_start)*180.0/PI;
Theta2_analyzer1=atan((dist_ana_vfocus+analyzer1_start+analyzer1_length)/dist_ana_vfocus*analyzer_max_height/2.0/(analyzer1_start+analyzer1_length))*180.0/PI;
Theta1_analyzer2=atan((dist_ana_vfocus+analyzer2_start)/dist_ana_vfocus*analyzer_max_height/2.0/analyzer2_start)*180.0/PI;
Theta2_analyzer2=atan((dist_ana_vfocus+analyzer2_start+analyzer2_length)/dist_ana_vfocus*analyzer_max_height/2.0/(analyzer2_start+analyzer2_length))*180.0/PI;
selene1_center=(selene1_foot1+selene1_foot2)/2.;
selene1_shift=(selene1_foot1y+selene1_foot2y)/1000.0;
selene1_rot=atan((selene1_foot2y-selene1_foot1y)/(selene1_foot2-selene1_foot1)/1000.0)*180.0/PI;
printf(" Selene 1 rotation = %.4f deg\n", selene1_rot);
printf(" Selene 1 shift = %.1f mm\n", selene1_shift*1e3);
%}
TRACE
/********************************************************************************
* Initial geometry coordinate axes for important components of the simulation. *
********************************************************************************/
COMPONENT origin = Progress_bar()
AT (0,0,0) ABSOLUTE
/* The ISCS is the instrument coordinate system with directions where y points upwards and z lies on the instrument axes. */
COMPONENT ISCS_rot1 = Arm() // position correctly and rotate around z-axis (x points in beam direction)
AT (iscs_x,iscs_y,iscs_z) RELATIVE origin
ROTATED (0,iscs_rot_y,0) RELATIVE origin
COMPONENT ISCS = Arm() // rotate around y-axis (slight downward tilt)
AT (0,0,0) RELATIVE ISCS_rot1
ROTATED (iscs_rot_x,0,0) RELATIVE ISCS_rot1
/***********************
* Instrument Skeleton *
***********************/
// Axes system parallel to the c-axis of the feeder
COMPONENT arm_feeder = Arm()
AT (0, 0, 0) RELATIVE ISCS
ROTATED (0, 0, 0) RELATIVE ISCS
COMPONENT arm_selene1_center = Arm()
AT (selene1_shift, 0, 2*NBOA_c+selene1_center) RELATIVE ISCS
ROTATED (0, selene1_rot, 0) RELATIVE ISCS
// Axes starting at focus of feeder parallel to c-axis of Selene guides
COMPONENT arm_selene1 = Arm()
AT (0, 0, -selene1_center) RELATIVE arm_selene1_center
COMPONENT arm_selene2 = Arm()
AT (0, 0, 2*NBOA_c+2*selene_c) RELATIVE ISCS
ROTATED (0, 0, 0) RELATIVE ISCS
// Axes of the center of usable beam passing through the virtual source
COMPONENT arm_virtual_source_beam = Arm()
AT (0, 0, 0) RELATIVE arm_selene1
ROTATED (0, selene_theta, 0) RELATIVE ISCS
// Axes used for the virtual source masks, this depends on the sample angle to achieve the correct footprint
COMPONENT arm_virtual_source = Arm()
AT (0, 0, 0) RELATIVE arm_virtual_source_beam
ROTATED (0, 10.0, 0) RELATIVE arm_virtual_source_beam
// Sample position with Axes pointing to the center of the beam
COMPONENT arm_sample_beam = Arm()
AT (0, 0, 4.0*selene_c) RELATIVE arm_selene1
ROTATED (0, selene_theta, 0) RELATIVE ISCS
// Sample position with sample angle rotation
COMPONENT arm_addon1_beam = Arm()
AT (0, 0, 0) RELATIVE arm_sample_beam
ROTATED (omegaa-iscs_rot_x, 0, 0) RELATIVE arm_sample_beam
COMPONENT arm_addon1 = Arm()
AT (0, 0, -0.2) RELATIVE arm_addon1_beam
COMPONENT arm_addon2_beam = Arm()
AT (0, 0, 0) RELATIVE arm_sample_beam
ROTATED (-omegaa-iscs_rot_x, 0, 0) RELATIVE arm_sample_beam
COMPONENT arm_addon2 = Arm()
AT (0, 0, 0.2) RELATIVE arm_addon2_beam
// Sample position with sample angle rotation
COMPONENT arm_sample = Arm()
AT (0, -0.2*((reflector==1)*0.024439474+(reflector==2)*0.062914667), 0) RELATIVE arm_sample_beam
ROTATED (0, 0, 0) RELATIVE arm_sample_beam
// Detector arm rotation at sample position
COMPONENT arm_detector = Arm()
AT (0, 0, 0) RELATIVE arm_sample_beam
ROTATED (0, 0, 0) RELATIVE arm_sample_beam
/**********
* Source *
**********/
COMPONENT moderator = ESS_butterfly(
sector = "E", beamline = 2, yheight = 0.03, cold_frac = 0.9,
focus_xw = E02_01_01_Cu_in_xmax-E02_01_01_Cu_in_xmin+0.002,
focus_yh = E02_01_01_Cu_in_yheight+0.002,
target_index=4, Lmin = lambda_start, Lmax = lambda_end,
n_pulses = 1+enable_chopper, acc_power=source_power)
AT (0, 0, 0) RELATIVE origin
/***************************************
* Geometry of neutron feeder separate *
***************************************/
%include "Estia_feeder.instr"
/****************************************************
* Beam manipulation area around the virtual source *
****************************************************/
/* Absorber to reduce beam to needed size an for shielding purposes (CPC1 in CAD model) */
COMPONENT CPC1_in = Slit(xwidth=0.0303, yheight=0.0792)
AT (0, 0, -0.890) RELATIVE arm_virtual_source_beam
COMPONENT CPC1_monitor = Slit(xwidth=0.016344, yheight=0.05547)
AT (0, 0, -0.3573) RELATIVE arm_virtual_source_beam
COMPONENT CPC1_out = Slit(xwidth=0.013, yheight=0.038)
AT (0, 0, -0.220) RELATIVE arm_virtual_source_beam
/* bandwidth definition chopper */
COMPONENT chopper = DiskChopper(radius=chopper_diameter/2.0, yheight=0.02,
theta_0=chopper_open, phase=chopper_phase+chopper_open/2.0,
nu=chopper_freq, nslit=1)
WHEN enable_chopper==1
AT (0, 0, chopper_pos-2*NBOA_c) RELATIVE arm_virtual_source_beam
/* The actual virtual source mask, two L-shaped absorbers (first top-right) */
COMPONENT virtual_source_TR = Slit(
xmin = 0.0, xmax = 1.0, ymin = -1.0, ymax = 0.006)
WHEN sample!=4
AT (0, 0, -0.015) RELATIVE arm_virtual_source
//
/* The actual virtual source mask, two L-shaped absorbers (second bottom-left) */
COMPONENT virtual_source_BL = Slit(
xmin = -1.0, xmax = 0.0, ymin = -0.006, ymax = 1.0)
WHEN sample!=4
AT (0, 0, 0.015) RELATIVE arm_virtual_source
/*************************************
* Geometry of Selene guide separate *
*************************************/
%include "Estia_selene1.instr"
%include "Estia_selene2.instr"
/**********************************
* Optical components within cave *
**********************************/
COMPONENT ac_slit = Slit(
xwidth = 0.2,
ymin = slit_distance*tan((PI/180.0)*(omegaa*(1.0-theta_resolution/2.0)-iscs_rot_x)),
ymax = slit_distance*tan((PI/180.0)*(omegaa*(1.0+theta_resolution/2.0)-iscs_rot_x)))
AT (0, 0, -slit_distance) RELATIVE arm_sample_beam
/**************************************************
* Reflector to increase incident angle on sample *
* ************************************************/
COMPONENT addon_slit = Slit(
xwidth = 0.2, yheight=0.0009*(reflector!=2)+0.0023*(reflector==2))
AT (0, 0, -0.0376) RELATIVE arm_addon1
COMPONENT addon_11 = Mirror(
xwidth = sample_width, yheight = 0.075,
m = 2, center = 1, transmit = 0
)
WHEN reflector==1
AT (0, 0, 0) RELATIVE arm_addon1
ROTATED (-89.3, 0, 0) RELATIVE arm_addon1
COMPONENT addon_12 = Mirror(
xwidth = sample_width, yheight = 0.075,
m = 5, center = 1, transmit = 0
)
WHEN reflector==2
AT (0, 0, 0) RELATIVE arm_addon1
ROTATED (-88.2, 0, 0) RELATIVE arm_addon1
/***************
* Sample area *
***************/
COMPONENT tof_sample = Monitor_nD(
filename = "tof_sample",
options = "x limits=[-0.025 0.025] bins=1000 y limits=[-0.025 0.025] bins=1000 xdiv limits=[-0.75 0.75] bins=150 ydiv limits=[-2.0 2.0] bins=400 time limits=[0 0.6] bins=6000 lambda limits=[0 35] bins=3500 list all",
xwidth=0.05, yheight = 0.05)
WHEN sample==4
AT (0, 0, 0) RELATIVE arm_sample_beam
ROTATED (0, 0, 0) RELATIVE arm_sample_beam
/* NiTi multilayer sample */
COMPONENT sample = Mirror(
xwidth = sample_width, yheight = sample_length,
center = 1, transmit = 0,
reflect = "D2O.ref"
)
WHEN sample==0
AT (0, 0, 0) RELATIVE arm_sample
ROTATED (90-iscs_rot_x, 0, 0) RELATIVE arm_sample
/* ideal reflector as reference */
COMPONENT reference_sample = Mirror(
xwidth = sample_width, yheight = sample_length,
center = 1, transmit = 0,
R0 = 0.999, alpha = 0.001, m = 50, center = 1, transmit = 0
)
WHEN sample==1
AT (0, 0, 0) RELATIVE arm_sample
ROTATED (90-iscs_rot_x, 0, 0) RELATIVE arm_sample
/* Nickel film on silicon */
COMPONENT ni_sample = Mirror(
xwidth = sample_width, yheight = sample_length,
center = 1, transmit = 0,
reflect = "Si-Ni.ref"
)
WHEN sample==2
AT (0, 0, 0) RELATIVE arm_sample
ROTATED (90-iscs_rot_x, 0, 0) RELATIVE arm_sample
/* Silicon with natural oxide */
COMPONENT si_sample = Mirror(
xwidth = sample_width, yheight = sample_length,
center = 1, transmit = 0,
reflect = "Si-SiO2.ref"
)
WHEN sample==3
AT (0, 0, 0) RELATIVE arm_sample
ROTATED (90-iscs_rot_x, 0, 0) RELATIVE arm_sample
/**************************************************
* Reflector to increase incident angle on sample *
* ************************************************/
COMPONENT addon_21 = Mirror(
xwidth = sample_width, yheight = 0.075,
m = 2, center = 1, transmit = 0
)
WHEN reflector==1
AT (0, 0, 0) RELATIVE arm_addon2
ROTATED (89.3, 0, 0) RELATIVE arm_addon2
COMPONENT addon_22 = Mirror(
xwidth = sample_width, yheight = 0.075,
m = 5, center = 1, transmit = 0
)
WHEN reflector==2
AT (0, 0, 0) RELATIVE arm_addon2
ROTATED (88.2, 0, 0) RELATIVE arm_addon2
/* detector */
COMPONENT tof_detector = Monitor_nD(
filename = "tof_detector",
options = "x limits=[-0.25 0.25] bins=1000 y limits=[-0.5 0.5] bins=1000 time limits=[0 0.6] bins=6000 lambda limits=[0 35] bins=3500 sx limits=[-1 1] bins=1000 sy limits=[-1 1] bins=1000, list all",
xwidth = 0.5, yheight = 1.0)
WHEN sample!=4
AT (0, 0, detector_arm+0.00001) RELATIVE arm_detector
/***********************************************************************/
FINALLY
%{
%}
END
+96
View File
@@ -0,0 +1,96 @@
/*******************************************************************************
* McStas instrument definition URL=http://www.mcstas.org
*
* Instrument: Estia_mf
*
* %Identification
* Written by: Artur Glavic (artur.glavic@psi.ch); Jochen Stahn (jochen.stahn@psi.ch); Christine Klauser (christine.klauser@psi.ch)
* Date: 01. 03. 2018
* Origin: PSI
* Release: McStas 2.4.1
* Version: 1.0
* %INSTRUMENT_SITE: ESS (E02)
*
* Estia is a vertical sample, focusing reflectometer for small sample
*
* %Description
* These are the components near the middle focus between the Selene guide 1 and 2.
* This file is not intended for stand alone use but is included in the Estia instrument model.
* The removable components, however, allow for a stand alone use for debugging purpose.
*
* %Parameters
* enable_gravity: [0/1] Use gravity in elliptical guide model.
*
* %End
*******************************************************************************/
DEFINE INSTRUMENT Estia_selene(int enable_gravity=0)
DECLARE
%{
double polarizer_max_width = 0.0015; // Maximum sample height to be covered by te polarization analyzers
double polarizer_start = 0.3; // Distance to sample to start the first analyzer
double polarizer_length = 0.6; // length of first analyzer
double Theta1_polarizer, Theta2_polarizer, dist_pol_vfocus; // quantities calculated out of values above and 1.5 degree covered divergence
%}
INITIALIZE
%{
dist_pol_vfocus=polarizer_max_width/2.0/tan(1.5*PI/360.0); // the virtual focus point infront of the actual sample focus where the beams furthest out meet
Theta1_polarizer=atan((dist_pol_vfocus+polarizer_start)/dist_pol_vfocus*polarizer_max_width/2.0/polarizer_start)*180.0/PI;
Theta2_polarizer=atan((dist_pol_vfocus+polarizer_start+polarizer_length)/dist_pol_vfocus*polarizer_max_width/2.0/(polarizer_start+polarizer_length))*180.0/PI;
%}
TRACE
REMOVABLE COMPONENT origin = Progress_bar()
AT (0,0,0) ABSOLUTE
REMOVABLE COMPONENT ISCS = Arm()
AT (0, 0, 0) RELATIVE origin
REMOVABLE COMPONENT arm_selene1 = Arm()
AT (0, 0, 0) RELATIVE ISCS
REMOVABLE COMPONENT arm_selene2 = Arm()
AT (0, 0, 2*selene_c) RELATIVE ISCS
REMOVABLE COMPONENT source = Moderator(radius = 0.001, focus_xw = selene_entry+0.002, focus_yh = selene_entry+0.002,
target_index=3, Emin=1, Emax=15)
AT (0,0,0) RELATIVE ISCS
ROTATED (-1.25, 1.25, 0) RELATIVE ISCS
/**************************************
* Middle focus between Selene guides *
**************************************/
COMPONENT arm_polarizer = Arm()
AT (0, 0, 2*selene_c) RELATIVE arm_selene1
ROTATED (selene_theta, -selene_theta, 0) RELATIVE ISCS
COMPONENT polarizer1 = Polariser(nIncRefr=1, d_substrate = 5e-4, reflect_d=0, reflect_u=0, lin=-(polarizer_start+polarizer_length), length=polarizer_length,
delta_theta=(Theta1_polarizer+Theta2_polarizer)*PI/180.0, h2=0.1, h1=0.05, abs_ref=1, m_u=4.0, m_d=0.65, both_coated=1, alpha=2.3, W = 0.0014)
WHEN enable_polarizer
AT (0, 0, -(polarizer_start+polarizer_length)) RELATIVE arm_polarizer
ROTATED (0,0,90.0) RELATIVE arm_polarizer
/* The proximal polariser comes next */
COMPONENT polarizer2 = Polariser(nIncRefr=1, d_substrate = 5e-4, reflect_d=0, reflect_u=0, lin=polarizer_start, length=polarizer_length,
delta_theta=(Theta1_polarizer+Theta2_polarizer)*PI/180.0, h2=0.1, h1=0.05, abs_ref=1, m_u=4.0, m_d=0.65, both_coated=1, alpha=2.3, W = 0.0014)
WHEN (enable_polarizer>1)
AT (0, 0, polarizer_start) RELATIVE arm_polarizer
ROTATED (0.0,0,90.0) RELATIVE arm_polarizer
FINALLY
%{
%}
END
+204
View File
@@ -0,0 +1,204 @@
/*******************************************************************************
* McStas instrument definition URL=http://www.mcstas.org
*
* Instrument: ESS_reflectometer_Estia
*
* %Identification
* Written by: Artur Glavic (artur.glavic@psi.ch); Jochen Stahn (jochen.stahn@psi.ch); Christine Klauser (christine.klauser@psi.ch)
* Date: 01. 03. 2018
* Origin: PSI
* Release: McStas 2.4.1
* Version: 1.0
* %INSTRUMENT_SITE: ESS (E02)
*
* Estia is a vertical sample, focusing reflectometer for small sample
*
* %Description
* The instrument consists of a two part elliptical feeder that focuses onto
* a slit mask that defines the sample footprint, called virtual source.
* The virtual source is imaged on the sample position with a Selene
* type neutron guide (two ellipses).
* This version of the instrument, used in the ESS butterfly moderator,
* has two vertical Selene guide systems that share the same focal points.
* The two guides are only implemented in the feeder as the selene mirrors
* are part of the upgrade program.
*
* %Parameters
* omegaa: [deg] sample rotation omega
* sample: flag to switch between (0) sample Ni/Ti-multilayer
* (1) reference ( R(q_z) = 1 for all q_z )
* (2) Ni-film on silicon
* (3) Natural SiO2 on silicon
* (4) monitor instead of sample (normal to beam)
* sample_length: [m] Size of sample in beam direction, also controls virtual source opening
* sample_height: [m] Size of sample in vertical direction, also controls virtual source opening
*
* operationmode: operation mode (0) high-intensity specular reflectivity
* (1) almost conventional TOF
* over_illumination: [m] Extra opening of virtual source compared to sample size
* theta_resolution: Delta theta / theta adjusted with the slit (operationmode=1)
*
* lambda_start: [A] Beginning of simulated wavelength range
* lambda_end: [A] End of simulated wavelength range
* enable_gravity: [0/1] Use gravity in elliptical guide model.
* enable_chopper: [0/1/2/3] Activate chopper component if !=0. Numbers larger than
* 1 define the number of pulses per chopper opening.
* (pulses skipped=enable_chopper-1)
*
* %End
*******************************************************************************/
DEFINE INSTRUMENT ESS_reflectometer_Estia
(double lambda_start = 3.0, double lambda_end = 12.0,
int enable_gravity=1, int enable_windows=1, direct_beam=0,
double source_power = 5, foil_thickness=0.00001)
DECLARE
%{
/* Geometrical parameters from CAD model of Estia (ESS-0050413)
* TCS coordinate and directional rotation first focus point
* refered to as focus_moderator_y_rot
*/
//TCS position of ISCS: (110,-105,137)
double iscs_x=0.0199717;
double iscs_y=0.0;
double iscs_z=0.0547095; // ISCS in McStas coordinates using mod-view-opt.instr
double iscs_rot_y=0.4; // ISCS is at TCS-35.6 degree, McStas at -36 degree
double iscs_rot_x=0.7; // downward tilt of Estia axis
// Selene 1 geometry parameters (optics parameters in Estia_selene1.instr)
double selene1_foot1 = 4.20; // distance of first foot to VS focus
double selene1_foot2 = 7.00; // distance of second foot to VS focus
double selene1_center;
double selene1_shift;
double selene1_rot;
// Selene 2
/* general instrument geometry parameters */
double total_length = 35.0 ; // m distance moderator-sample (2*c_feeder+4*c_Selene)
double detector_arm = 4.0 ; // m distance sample-detector
/* chopper parameters */
double chopper_diameter = 0.7;
double chopper_pos = 10.895; // m distance source-chopper
double chopper_phase ; // deg phase between pulse and chopper opening
double chopper_open ; // deg of opening angle in the chopper
double pulse_zero = 0.00175; // ms intensity weighted average time of emitted neutron pulse
double opening_time = 0.0015; // ms time to reach full intensity on detector, used to adjust phase to get full intensity at beginning of selected band
double chopper_freq = 14.0 ; // Hz chopper frequency
double slit_distance = 1.775; //m, distance slit to sample
/* derived quantities */
double selene_theta = 1.25;
%}
INITIALIZE
%{
%}
TRACE
/********************************************************************************
* Initial geometry coordinate axes for important components of the simulation. *
********************************************************************************/
COMPONENT origin = Progress_bar()
AT (0,0,0) ABSOLUTE
/* The ISCS is the instrument coordinate system with directions where y points upwards and z lies on the instrument axes. */
COMPONENT ISCS_rot1 = Arm() // position correctly and rotate around z-axis (x points in beam direction)
AT (iscs_x,iscs_y,iscs_z) RELATIVE origin
ROTATED (0,iscs_rot_y,0) RELATIVE origin
COMPONENT ISCS = Arm() // rotate around y-axis (slight downward tilt)
AT (0,0,0) RELATIVE ISCS_rot1
ROTATED (iscs_rot_x,0,0) RELATIVE ISCS_rot1
/***********************
* Instrument Skeleton *
***********************/
// Axes system parallel to the c-axis of the feeder
COMPONENT arm_feeder = Arm()
AT (0, 0, 0) RELATIVE ISCS
ROTATED (0, 0, 0) RELATIVE ISCS
COMPONENT arm_selene1_center = Arm()
AT (selene1_shift, 0, 2*NBOA_c+selene1_center) RELATIVE ISCS
ROTATED (0, selene1_rot, 0) RELATIVE ISCS
// Axes starting at focus of feeder parallel to c-axis of Selene guides
COMPONENT arm_selene1 = Arm()
AT (0, 0, -selene1_center) RELATIVE arm_selene1_center
// Axes of the center of usable beam passing through the virtual source
COMPONENT arm_virtual_source_beam = Arm()
AT (0, 0, 0) RELATIVE arm_selene1
ROTATED (0, selene_theta, 0) RELATIVE ISCS
// 90 degree to main beam is the monitors detector position
COMPONENT arm_monitor = Arm()
AT (0, 0, -0.320) RELATIVE arm_virtual_source_beam
ROTATED (-90, 0, 0) RELATIVE arm_virtual_source_beam
/**********
* Source *
**********/
COMPONENT moderator = ESS_butterfly(
sector = "E", beamline = 2, yheight = 0.03, cold_frac = 0.9,
focus_xw = E02_01_01_Cu_in_xmax-E02_01_01_Cu_in_xmin+0.002,
focus_yh = E02_01_01_Cu_in_yheight+0.002,
target_index=4, Lmin = lambda_start, Lmax = lambda_end,
n_pulses = 1, acc_power=source_power)
AT (0, 0, 0) RELATIVE origin
/***************************************
* Geometry of neutron feeder separate *
***************************************/
%include "Estia_feeder.instr"
/****************************************************
* Beam manipulation area around the virtual source *
****************************************************/
/* Absorber to reduce beam to needed size an for shielding purposes (CPC1 in CAD model) */
COMPONENT CPC1_in = Slit(xwidth=0.0303, yheight=0.0792)
AT (0, 0, -0.890) RELATIVE arm_virtual_source_beam
COMPONENT CPC1_monitor = Slit(xwidth=0.016344, yheight=0.05547)
AT (0, 0, -0.3573) RELATIVE arm_virtual_source_beam
// As TOF detector is rectangular, use focus_r size to limit to actual
// detector size of 0.5'' diameter cylinder
COMPONENT Vanadium_Foil = Incoherent(focus_r=0.00635, p_interact=0.9,
xwidth=0.018, yheight=0.055, zdepth=foil_thickness,
sigma_abs=5.08, sigma_inc=5.08, Vc=13.827,
target_index=1)
WHEN direct_beam<2
AT (0, 0, -0.320) RELATIVE arm_virtual_source_beam
ROTATED (34.3, 0, 0) RELATIVE arm_virtual_source_beam
COMPONENT tof_monitor = TOFLambda_monitor(
filename = "monitor",
tmin=0, tmax=120000, nt=1200,
Lmin=0,Lmax=35,nL=350,
xwidth = 0.025, yheight = 0.025)
WHEN direct_beam==0
AT (0, 0, 0.1) RELATIVE arm_monitor
COMPONENT tof_direct = TOFLambda_monitor(
filename = "VS",
tmin=0, tmax=120000, nt=1200,
Lmin=0,Lmax=35,nL=350,
xwidth = 0.05, yheight = 0.05)
WHEN direct_beam>0
AT (0, 0, 0.08) RELATIVE arm_virtual_source_beam
FINALLY
%{
%}
END
-240
View File
@@ -1,240 +0,0 @@
/*******************************************************************************
* McStas instrument definition URL=http://www.mcstas.org
*
* Instrument: Estia_selene
*
* %Identification
* Written by: Artur Glavic (artur.glavic@psi.ch); Jochen Stahn (jochen.stahn@psi.ch); Christine Klauser (christine.klauser@psi.ch)
* Date: 01. 03. 2018
* Origin: PSI
* Release: McStas 2.4.1
* Version: 1.0
* %INSTRUMENT_SITE: ESS (E02)
*
* Estia is a vertical sample, focusing reflectometer for small sample
*
* %Description
* This is the beam extraction part of the instrument, it is not intended for use but is
* included in the Estia instrument model. The removable components, however,
* allow for a stand alone use for debugging purpose.
*
* %Parameters
* enable_gravity: [0/1] Use gravity in elliptical guide model.
*
* %End
*******************************************************************************/
DEFINE INSTRUMENT Estia_selene(int enable_gravity=0)
DECLARE
%{
// Selene 1 (Will follow later with detailed parameters)
// Selene 2
/* selene parameters */
double selene_xi = 0.6 ; // length of neutron guide over 2*c of ellipses, xi
double selene_b = 0.1047; // m selene short half axis c
double selene_c = 6.0000; // m selene focus half distance c
double selene_coating = 3.8; // m-value of selene coating
/* other variables */
double selene_entry ;
double selene_length ;
double selene_distance ;
double polarizer_max_width = 0.0015; // Maximum sample height to be covered by te polarization analyzers
double polarizer_start = 0.3; // Distance to sample to start the first analyzer
double polarizer_length = 0.6; // length of first analyzer
double Theta1_polarizer, Theta2_polarizer, dist_pol_vfocus; // quantities calculated out of values above and 1.5 degree covered divergence
%}
INITIALIZE
%{
/* derived parameters for the selene guides */
selene_length = 2.0 * selene_c * selene_xi;
selene_distance = ( 1.0 - selene_xi ) * selene_c;
selene_entry = selene_b * sqrt( 1.0 - pow(selene_xi,2.0) );
dist_pol_vfocus=polarizer_max_width/2.0/tan(1.5*PI/360.0); // the virtual focus point infront of the actual sample focus where the beams furthest out meet
Theta1_polarizer=atan((dist_pol_vfocus+polarizer_start)/dist_pol_vfocus*polarizer_max_width/2.0/polarizer_start)*180.0/PI;
Theta2_polarizer=atan((dist_pol_vfocus+polarizer_start+polarizer_length)/dist_pol_vfocus*polarizer_max_width/2.0/(polarizer_start+polarizer_length))*180.0/PI;
%}
TRACE
REMOVABLE COMPONENT origin = Progress_bar()
AT (0,0,0) ABSOLUTE
REMOVABLE COMPONENT ISCS = Arm()
AT (0, 0, 0) RELATIVE origin
REMOVABLE COMPONENT arm_selene1 = Arm()
AT (0, 0, 0) RELATIVE ISCS
REMOVABLE COMPONENT arm_selene2 = Arm()
AT (0, 0, 2*selene_c) RELATIVE ISCS
REMOVABLE COMPONENT source = Moderator(radius = 0.001, focus_xw = selene_entry+0.002, focus_yh = selene_entry+0.002,
target_index=3, Emin=1, Emax=15)
AT (0,0,0) RELATIVE ISCS
ROTATED (-1.25, 1.25, 0) RELATIVE ISCS
/**************************
* Selene 1 neutron guide *
**************************/
/* Absorber to cut direct view beam (Copper in CAD model) */
COMPONENT slit_before_selene_guide_1 = Slit(
xmin = 0, xmax = selene_entry+0.001,
ymin = 0, ymax = selene_entry+0.005)
AT (0, 0, selene_distance-0.01) RELATIVE arm_selene1
COMPONENT block_before_selene_guide_1 = Absorber(
xmin=-1, xmax=1,
ymin=-selene_entry/4.0+0.005,
ymax=selene_entry/4.0-0.005,
zmin=0.0, zmax=0.001)
AT (0, 0, selene_distance-0.0095) RELATIVE arm_selene1
/* Selene 1 elliptic guide */
COMPONENT selene_guide_1 = Elliptic_guide_gravity(
l=selene_length, dimensionsAt = "mid",
linyh = selene_distance, loutyh= selene_distance,
linxw = selene_distance, loutxw= selene_distance,
xwidth=selene_b*2, yheight=selene_b*2,
mright=0, mleft=selene_coating, mtop=selene_coating, mbottom=0,
enableGravity=enable_gravity)
AT (0, 0, selene_distance) RELATIVE arm_selene1
/* Absorber to cut direct view beam (Copper in CAD model) */
COMPONENT slit_after_selene_guide_1 = Slit(
xmin = 0, xmax = selene_entry+0.005,
ymin = 0, ymax = selene_entry+0.01)
AT (0, 0, 2*selene_c-selene_distance+0.001) RELATIVE arm_selene1
COMPONENT block_after_selene_guide_1 = Absorber(
xmin=-1, xmax=1,
ymin=-selene_entry/4.0+0.015,
ymax=selene_entry/4.0-0.015,
zmin=0.0, zmax=0.001)
AT (0, 0, 2*selene_c-selene_distance+0.0015) RELATIVE arm_selene1
/**************************************
* Middle focus between Selene guides *
**************************************/
COMPONENT arm_polarizer = Arm()
AT (0, 0, 2*selene_c) RELATIVE arm_selene1
ROTATED (selene_theta, -selene_theta, 0) RELATIVE ISCS
COMPONENT polarizer1 = Polariser(nIncRefr=1, d_substrate = 5e-4, reflect_d=0, reflect_u=0, lin=-(polarizer_start+polarizer_length), length=polarizer_length,
delta_theta=(Theta1_polarizer+Theta2_polarizer)*PI/180.0, h2=0.1, h1=0.05, abs_ref=1, m_u=4.0, m_d=0.65, both_coated=1, alpha=2.3, W = 0.0014)
WHEN enable_polarizer
AT (0, 0, -(polarizer_start+polarizer_length)) RELATIVE arm_polarizer
ROTATED (0,0,90.0) RELATIVE arm_polarizer
COMPONENT polmon_mfocus=PolLambda_monitor(Lmin=lambda_start, Lmax=lambda_end, nL=30, npol=101, my=1, filename="polmon_mfocus")
WHEN enable_polarizer
AT (0, 0, 2*selene_c) RELATIVE arm_selene1
ROTATED (0.0,0.0,0.0) RELATIVE arm_selene1
COMPONENT PP_small_before_middle_focus = PSD_monitor(
filename = "PP_small_before_middle_focus",
nx = 200, ny = 200,
xwidth = 0.1, yheight = 0.1,
restore_neutron = 1)
AT (0, 0, 2*selene_c) RELATIVE arm_selene1
/* The proximal polariser comes next */
COMPONENT polarizer2 = Polariser(nIncRefr=1, d_substrate = 5e-4, reflect_d=0, reflect_u=0, lin=polarizer_start, length=polarizer_length,
delta_theta=(Theta1_polarizer+Theta2_polarizer)*PI/180.0, h2=0.1, h1=0.05, abs_ref=1, m_u=4.0, m_d=0.65, both_coated=1, alpha=2.3, W = 0.0014)
WHEN (enable_polarizer>1)
AT (0, 0, polarizer_start) RELATIVE arm_polarizer
ROTATED (0.0,0,90.0) RELATIVE arm_polarizer
/**************************
* Selene 2 neutron guide *
**************************/
/* Absorber to cut direct view beam (Copper in CAD model) */
COMPONENT slit_before_selene_guide_2 = Slit(
xmin = -selene_entry-0.005, xmax=0,
ymin = -selene_entry-0.01, ymax = 0)
AT (0, 0, selene_distance-0.002) RELATIVE arm_selene2
COMPONENT block_before_selene_guide_2 = Absorber(
xmin=-1, xmax=1,
ymin=-selene_entry/4.0+0.015,
ymax=selene_entry/4.0-0.015,
zmin=0.0, zmax=0.001)
AT (0, 0, selene_distance-0.0015) RELATIVE arm_selene2
/* Selene 2 elliptic guide first half */
COMPONENT selene_guide_21 = Elliptic_guide_gravity(
l=0.5*selene_length-0.001, dimensionsAt = "mid",
linyh = selene_distance, loutyh= selene_c+0.001,
linxw = selene_distance, loutxw= selene_c+0.001,
xwidth=selene_b*2, yheight=selene_b*2,
mright=selene_coating, mleft=0, mtop=0, mbottom=selene_coating,
enableGravity=enable_gravity)
AT (0, 0, selene_distance) RELATIVE arm_selene2
/* Absorber to cut direct view beam (Copper in CAD model) */
COMPONENT slit_within_selene_guide_2 = Slit(
xmin = -selene_b, xmax=-selene_b*0.45+0.005,
ymin = -selene_b, ymax=-selene_b*0.45+0.005)
AT (0, 0, 1.0*selene_c) RELATIVE arm_selene2
/*COMPONENT block_within_selene_guide_2 = Absorber(
xmin =-1, xmax=1,
ymin =-selene_b*0.25+0.001,
ymax = selene_b*0.25-0.001,
zmin=0.0, zmax=0.0001)
AT (0, 0, 3.0*selene_c+0.0001) RELATIVE arm_selene2*/
/* Selene 2 elliptic guide first half */
COMPONENT selene_guide_22 = Elliptic_guide_gravity(
l=0.5*selene_length-0.001, dimensionsAt = "mid",
linyh = selene_c+0.001, loutyh= selene_distance,
linxw = selene_c+0.001, loutxw= selene_distance,
xwidth=selene_b*2, yheight=selene_b*2,
mright=selene_coating, mleft=0, mtop=0, mbottom=selene_coating,
enableGravity=enable_gravity)
AT (0, 0, 1.0*selene_c+0.001) RELATIVE arm_selene2
/* Absorber to cut direct view beam (Copper in CAD model) */
COMPONENT slit_after_selene_guide_2 = Slit(
xmin = -selene_entry-0.001, xmax=0, xmax = 0.0,
ymin = -selene_entry-0.005, ymax = 0)
AT (0, 0, 2*selene_c-selene_distance+0.001) RELATIVE arm_selene2
COMPONENT block_after_selene_guide_2 = Absorber(
xmin=-1, xmax=1,
ymin=-selene_entry/4.0+0.015,
ymax=selene_entry/4.0-0.015,
zmin=0.0, zmax=0.001)
AT (0, 0, 2*selene_c-selene_distance+0.0015) RELATIVE arm_selene2
REMOVABLE COMPONENT FocusMonitor = PSD_monitor(
filename = "Focus",
nx = 100, ny = 100,
xwidth = 0.005, yheight = 0.005,
restore_neutron = 1)
AT (0, 0, 4*selene_c) RELATIVE ISCS
ROTATED (0, 1.25, 0) RELATIVE ISCS
FINALLY
%{
%}
END
+270
View File
@@ -0,0 +1,270 @@
/*******************************************************************************
* McStas instrument definition URL=http://www.mcstas.org
*
* Instrument: Estia_selene1
*
* %Identification
* Written by: Artur Glavic (artur.glavic@psi.ch); Jochen Stahn (jochen.stahn@psi.ch); Christine Klauser (christine.klauser@psi.ch)
* Date: 01. 03. 2018
* Origin: PSI
* Release: McStas 2.4.1
* Version: 1.0
* %INSTRUMENT_SITE: ESS (E02)
*
* Estia is a vertical sample, focusing reflectometer for small sample
*
* %Description
* This is the Selene guide 1 part of the instrument, it is not intended for use but is
* included in the Estia instrument model. The removable components, however,
* allow for a stand alone use for debugging purpose.
*
* %Parameters
* enable_gravity: [0/1] Use gravity in elliptical guide model.
*
* %End
*******************************************************************************/
DEFINE INSTRUMENT Estia_selene(int enable_gravity=0)
DECLARE
%{
// Selene 1
// Selene 2
/* selene parameters */
double selene_xi = 0.6 ; // length of neutron guide over 2*c of ellipses, xi
double selene_b = 0.1047; // m selene short half axis c
double selene_c = 6.0000; // m selene focus half distance c
/* Coating along the elliptic guide to allow sharp wavelenth cut-off */
double scoating_01 = 3.58; // coating at Selene 1 start/ Selene 2 end
double scoating_02 = 3.36;
double scoating_03 = 3.19;
double scoating_04 = 3.07;
double scoating_05 = 2.98;
double scoating_06 = 2.92;
double scoating_07 = 2.88;
double scoating_08 = 2.86; // coating in center
double scoating_09 = 2.86;
double scoating_10 = 2.87;
double scoating_11 = 2.91;
double scoating_12 = 2.98;
double scoating_13 = 3.07;
double scoating_14 = 3.20;
double scoating_15 = 3.38; // coating at Selene 1 end/ Selene 2 start
/* other variables */
double selene_entry ;
double selene_length ;
double selene_distance ;
double selene_segment ;
%}
INITIALIZE
%{
/* derived parameters for the selene guides */
selene_length = 2.0 * selene_c * selene_xi;
selene_distance = ( 1.0 - selene_xi ) * selene_c;
selene_entry = selene_b * sqrt( 1.0 - pow(selene_xi,2.0) );
selene_segment = selene_length / 15.;
%}
TRACE
REMOVABLE COMPONENT origin = Progress_bar()
AT (0,0,0) ABSOLUTE
REMOVABLE COMPONENT ISCS = Arm()
AT (0, 0, 0) RELATIVE origin
REMOVABLE COMPONENT arm_selene1 = Arm()
AT (0, 0, 0) RELATIVE ISCS
ROTATED (0, 0, 0) RELATIVE ISCS
REMOVABLE COMPONENT arm_selene2 = Arm()
AT (0, 0, 2*selene_c) RELATIVE ISCS
REMOVABLE COMPONENT source = Moderator(radius = 0.001, focus_xw = selene_entry+0.002, focus_yh = selene_entry+0.002,
target_index=3, Emin=1, Emax=15)
AT (0,0,0) RELATIVE ISCS
ROTATED (-1.25, 1.25, 0) RELATIVE ISCS
/**************************
* Selene 1 neutron guide *
**************************/
/* Absorber to cut direct view beam (Copper in CAD model) */
COMPONENT slit_before_selene_guide_1 = Slit(
xmin = 0, xmax = selene_entry+0.001,
ymin = -selene_entry-0.005, ymax = 0)
AT (0, 0, selene_distance-0.01) RELATIVE arm_selene1
COMPONENT block_before_selene_guide_1 = Absorber(
xmin=-1, xmax=1,
ymin=-selene_entry/4.0+0.005,
ymax=selene_entry/4.0-0.005,
zmin=0.0, zmax=0.001)
AT (0, 0, selene_distance-0.0095) RELATIVE arm_selene1
/* Selene 1 elliptic guide */
COMPONENT E02_03_01 = Elliptic_guide_gravity(
l=selene_segment, dimensionsAt = "mid",
linyh = selene_distance, loutyh= selene_distance+14*selene_segment,
linxw = selene_distance, loutxw= selene_distance+14*selene_segment,
xwidth=selene_b*2, yheight=selene_b*2,
mright=0, mleft=scoating_01, mbottom=scoating_01, mtop=0,
enableGravity=enable_gravity)
AT (0, 0, selene_distance) RELATIVE arm_selene1
COMPONENT E02_03_02 = Elliptic_guide_gravity(
l=selene_segment, dimensionsAt = "mid",
linyh = selene_distance+1*selene_segment, loutyh= selene_distance+13*selene_segment,
linxw = selene_distance+1*selene_segment, loutxw= selene_distance+13*selene_segment,
xwidth=selene_b*2, yheight=selene_b*2,
mright=0, mleft=scoating_02, mbottom=scoating_02, mtop=0,
enableGravity=enable_gravity)
AT (0, 0, selene_distance+1*selene_segment) RELATIVE arm_selene1
COMPONENT E02_03_03 = Elliptic_guide_gravity(
l=selene_segment, dimensionsAt = "mid",
linyh = selene_distance+2*selene_segment, loutyh= selene_distance+12*selene_segment,
linxw = selene_distance+2*selene_segment, loutxw= selene_distance+12*selene_segment,
xwidth=selene_b*2, yheight=selene_b*2,
mright=0, mleft=scoating_03, mbottom=scoating_03, mtop=0,
enableGravity=enable_gravity)
AT (0, 0, selene_distance+2*selene_segment) RELATIVE arm_selene1
COMPONENT E02_03_04 = Elliptic_guide_gravity(
l=selene_segment, dimensionsAt = "mid",
linyh = selene_distance+3*selene_segment, loutyh= selene_distance+11*selene_segment,
linxw = selene_distance+3*selene_segment, loutxw= selene_distance+11*selene_segment,
xwidth=selene_b*2, yheight=selene_b*2,
mright=0, mleft=scoating_04, mbottom=scoating_04, mtop=0,
enableGravity=enable_gravity)
AT (0, 0, selene_distance+3*selene_segment) RELATIVE arm_selene1
COMPONENT E02_03_05 = Elliptic_guide_gravity(
l=selene_segment, dimensionsAt = "mid",
linyh = selene_distance+4*selene_segment, loutyh= selene_distance+10*selene_segment,
linxw = selene_distance+4*selene_segment, loutxw= selene_distance+10*selene_segment,
xwidth=selene_b*2, yheight=selene_b*2,
mright=0, mleft=scoating_05, mbottom=scoating_05, mtop=0,
enableGravity=enable_gravity)
AT (0, 0, selene_distance+4*selene_segment) RELATIVE arm_selene1
COMPONENT E02_03_06 = Elliptic_guide_gravity(
l=selene_segment, dimensionsAt = "mid",
linyh = selene_distance+5*selene_segment, loutyh= selene_distance+9*selene_segment,
linxw = selene_distance+5*selene_segment, loutxw= selene_distance+9*selene_segment,
xwidth=selene_b*2, yheight=selene_b*2,
mright=0, mleft=scoating_06, mbottom=scoating_06, mtop=0,
enableGravity=enable_gravity)
AT (0, 0, selene_distance+5*selene_segment) RELATIVE arm_selene1
COMPONENT E02_03_07 = Elliptic_guide_gravity(
l=selene_segment, dimensionsAt = "mid",
linyh = selene_distance+6*selene_segment, loutyh= selene_distance+8*selene_segment,
linxw = selene_distance+6*selene_segment, loutxw= selene_distance+8*selene_segment,
xwidth=selene_b*2, yheight=selene_b*2,
mright=0, mleft=scoating_07, mbottom=scoating_07, mtop=0,
enableGravity=enable_gravity)
AT (0, 0, selene_distance+6*selene_segment) RELATIVE arm_selene1
COMPONENT E02_03_08 = Elliptic_guide_gravity(
l=selene_segment, dimensionsAt = "mid",
linyh = selene_distance+7*selene_segment, loutyh= selene_distance+7*selene_segment,
linxw = selene_distance+7*selene_segment, loutxw= selene_distance+7*selene_segment,
xwidth=selene_b*2, yheight=selene_b*2,
mright=0, mleft=scoating_08, mbottom=scoating_08, mtop=0,
enableGravity=enable_gravity)
AT (0, 0, selene_distance+7*selene_segment) RELATIVE arm_selene1
COMPONENT E02_03_09 = Elliptic_guide_gravity(
l=selene_segment, dimensionsAt = "mid",
linyh = selene_distance+8*selene_segment, loutyh= selene_distance+6*selene_segment,
linxw = selene_distance+8*selene_segment, loutxw= selene_distance+6*selene_segment,
xwidth=selene_b*2, yheight=selene_b*2,
mright=0, mleft=scoating_09, mbottom=scoating_09, mtop=0,
enableGravity=enable_gravity)
AT (0, 0, selene_distance+8*selene_segment) RELATIVE arm_selene1
COMPONENT E02_03_10 = Elliptic_guide_gravity(
l=selene_segment, dimensionsAt = "mid",
linyh = selene_distance+9*selene_segment, loutyh= selene_distance+5*selene_segment,
linxw = selene_distance+9*selene_segment, loutxw= selene_distance+5*selene_segment,
xwidth=selene_b*2, yheight=selene_b*2,
mright=0, mleft=scoating_10, mbottom=scoating_10, mtop=0,
enableGravity=enable_gravity)
AT (0, 0, selene_distance+9*selene_segment) RELATIVE arm_selene1
COMPONENT E02_03_11 = Elliptic_guide_gravity(
l=selene_segment, dimensionsAt = "mid",
linyh = selene_distance+10*selene_segment, loutyh= selene_distance+4*selene_segment,
linxw = selene_distance+10*selene_segment, loutxw= selene_distance+4*selene_segment,
xwidth=selene_b*2, yheight=selene_b*2,
mright=0, mleft=scoating_11, mbottom=scoating_11, mtop=0,
enableGravity=enable_gravity)
AT (0, 0, selene_distance+10*selene_segment) RELATIVE arm_selene1
COMPONENT E02_03_12 = Elliptic_guide_gravity(
l=selene_segment, dimensionsAt = "mid",
linyh = selene_distance+11*selene_segment, loutyh= selene_distance+3*selene_segment,
linxw = selene_distance+11*selene_segment, loutxw= selene_distance+3*selene_segment,
xwidth=selene_b*2, yheight=selene_b*2,
mright=0, mleft=scoating_12, mbottom=scoating_12, mtop=0,
enableGravity=enable_gravity)
AT (0, 0, selene_distance+11*selene_segment) RELATIVE arm_selene1
COMPONENT E02_03_13 = Elliptic_guide_gravity(
l=selene_segment, dimensionsAt = "mid",
linyh = selene_distance+12*selene_segment, loutyh= selene_distance+2*selene_segment,
linxw = selene_distance+12*selene_segment, loutxw= selene_distance+2*selene_segment,
xwidth=selene_b*2, yheight=selene_b*2,
mright=0, mleft=scoating_13, mbottom=scoating_13, mtop=0,
enableGravity=enable_gravity)
AT (0, 0, selene_distance+12*selene_segment) RELATIVE arm_selene1
COMPONENT E02_03_14 = Elliptic_guide_gravity(
l=selene_segment, dimensionsAt = "mid",
linyh = selene_distance+13*selene_segment, loutyh= selene_distance+1*selene_segment,
linxw = selene_distance+13*selene_segment, loutxw= selene_distance+1*selene_segment,
xwidth=selene_b*2, yheight=selene_b*2,
mright=0, mleft=scoating_14, mbottom=scoating_14, mtop=0,
enableGravity=enable_gravity)
AT (0, 0, selene_distance+13*selene_segment) RELATIVE arm_selene1
COMPONENT E02_03_15 = Elliptic_guide_gravity(
l=selene_segment, dimensionsAt = "mid",
linyh = selene_distance+14*selene_segment, loutyh= selene_distance,
linxw = selene_distance+14*selene_segment, loutxw= selene_distance,
xwidth=selene_b*2, yheight=selene_b*2,
mright=0, mleft=scoating_15, mbottom=scoating_15, mtop=0,
enableGravity=enable_gravity)
AT (0, 0, selene_distance+14*selene_segment) RELATIVE arm_selene1
/* Absorber to cut direct view beam (Copper in CAD model) */
COMPONENT slit_after_selene_guide_1 = Slit(
xmin = 0, xmax = selene_entry+0.005,
ymin = -selene_entry-0.005, ymax = 0)
AT (0, 0, 2*selene_c-selene_distance+0.001) RELATIVE arm_selene1
COMPONENT block_after_selene_guide_1 = Absorber(
xmin=-1, xmax=1,
ymin=-selene_entry/4.0+0.015,
ymax=selene_entry/4.0-0.015,
zmin=0.0, zmax=0.001)
AT (0, 0, 2*selene_c-selene_distance+0.0015) RELATIVE arm_selene1
FINALLY
%{
%}
END
+210
View File
@@ -0,0 +1,210 @@
/*******************************************************************************
* McStas instrument definition URL=http://www.mcstas.org
*
* Instrument: Estia_selene2
*
* %Identification
* Written by: Artur Glavic (artur.glavic@psi.ch); Jochen Stahn (jochen.stahn@psi.ch); Christine Klauser (christine.klauser@psi.ch)
* Date: 01. 03. 2018
* Origin: PSI
* Release: McStas 2.4.1
* Version: 1.0
* %INSTRUMENT_SITE: ESS (E02)
*
* Estia is a vertical sample, focusing reflectometer for small sample
*
* %Description
* This is the second Selene guide part of the instrument, it is not intended for use but is
* included in the Estia instrument model. This file does not work no its own, as it
* requires the definitions specified in the Estia_selene1.instr DECLAR and INITIALIZE.
*
* %End
*******************************************************************************/
DEFINE INSTRUMENT Estia_selene2()
DECLARE
%{
%}
INITIALIZE
%{
%}
TRACE
/**************************
* Selene 2 neutron guide *
**************************/
/* Absorber to cut direct view beam (Bor-Al in CAD model) */
COMPONENT slit_before_selene_guide_2 = Slit(
xmin = -selene_entry-0.005, xmax=0,
ymin = 0, ymax = selene_entry+0.01)
AT (0, 0, selene_distance-0.002) RELATIVE arm_selene2
COMPONENT block_before_selene_guide_2 = Absorber(
xmin=-1, xmax=1,
ymin=-selene_entry/4.0+0.015,
ymax=selene_entry/4.0-0.015,
zmin=0.0, zmax=0.001)
AT (0, 0, selene_distance-0.0015) RELATIVE arm_selene2
/* Selene 2 elliptic guide first half */
COMPONENT E02_04_01 = Elliptic_guide_gravity(
l=selene_segment, dimensionsAt = "mid",
linyh = selene_distance, loutyh= selene_distance+14*selene_segment,
linxw = selene_distance, loutxw= selene_distance+14*selene_segment,
xwidth=selene_b*2, yheight=selene_b*2,
mright=scoating_15, mleft=0, mbottom=0, mtop=scoating_15,
enableGravity=enable_gravity)
AT (0, 0, selene_distance) RELATIVE arm_selene2
COMPONENT E02_04_02 = Elliptic_guide_gravity(
l=selene_segment, dimensionsAt = "mid",
linyh = selene_distance+1*selene_segment, loutyh= selene_distance+13*selene_segment,
linxw = selene_distance+1*selene_segment, loutxw= selene_distance+13*selene_segment,
xwidth=selene_b*2, yheight=selene_b*2,
mright=scoating_14, mleft=0, mbottom=0, mtop=scoating_14,
enableGravity=enable_gravity)
AT (0, 0, selene_distance+1*selene_segment) RELATIVE arm_selene2
COMPONENT E02_04_03 = Elliptic_guide_gravity(
l=selene_segment, dimensionsAt = "mid",
linyh = selene_distance+2*selene_segment, loutyh= selene_distance+12*selene_segment,
linxw = selene_distance+2*selene_segment, loutxw= selene_distance+12*selene_segment,
xwidth=selene_b*2, yheight=selene_b*2,
mright=scoating_13, mleft=0, mbottom=0, mtop=scoating_13,
enableGravity=enable_gravity)
AT (0, 0, selene_distance+2*selene_segment) RELATIVE arm_selene2
COMPONENT E02_04_04 = Elliptic_guide_gravity(
l=selene_segment, dimensionsAt = "mid",
linyh = selene_distance+3*selene_segment, loutyh= selene_distance+11*selene_segment,
linxw = selene_distance+3*selene_segment, loutxw= selene_distance+11*selene_segment,
xwidth=selene_b*2, yheight=selene_b*2,
mright=scoating_12, mleft=0, mbottom=0, mtop=scoating_12,
enableGravity=enable_gravity)
AT (0, 0, selene_distance+3*selene_segment) RELATIVE arm_selene2
COMPONENT E02_04_05 = Elliptic_guide_gravity(
l=selene_segment, dimensionsAt = "mid",
linyh = selene_distance+4*selene_segment, loutyh= selene_distance+10*selene_segment,
linxw = selene_distance+4*selene_segment, loutxw= selene_distance+10*selene_segment,
xwidth=selene_b*2, yheight=selene_b*2,
mright=scoating_11, mleft=0, mbottom=0, mtop=scoating_11,
enableGravity=enable_gravity)
AT (0, 0, selene_distance+4*selene_segment) RELATIVE arm_selene2
COMPONENT E02_04_06 = Elliptic_guide_gravity(
l=selene_segment, dimensionsAt = "mid",
linyh = selene_distance+5*selene_segment, loutyh= selene_distance+9*selene_segment,
linxw = selene_distance+5*selene_segment, loutxw= selene_distance+9*selene_segment,
xwidth=selene_b*2, yheight=selene_b*2,
mright=scoating_10, mleft=0, mbottom=0, mtop=scoating_10,
enableGravity=enable_gravity)
AT (0, 0, selene_distance+5*selene_segment) RELATIVE arm_selene2
COMPONENT E02_04_07 = Elliptic_guide_gravity(
l=selene_segment, dimensionsAt = "mid",
linyh = selene_distance+6*selene_segment, loutyh= selene_distance+8*selene_segment,
linxw = selene_distance+6*selene_segment, loutxw= selene_distance+8*selene_segment,
xwidth=selene_b*2, yheight=selene_b*2,
mright=scoating_09, mleft=0, mbottom=0, mtop=scoating_09,
enableGravity=enable_gravity)
AT (0, 0, selene_distance+6*selene_segment) RELATIVE arm_selene2
COMPONENT E02_04_08 = Elliptic_guide_gravity(
l=selene_segment, dimensionsAt = "mid",
linyh = selene_distance+7*selene_segment, loutyh= selene_distance+7*selene_segment,
linxw = selene_distance+7*selene_segment, loutxw= selene_distance+7*selene_segment,
xwidth=selene_b*2, yheight=selene_b*2,
mright=scoating_08, mleft=0, mbottom=0, mtop=scoating_08,
enableGravity=enable_gravity)
AT (0, 0, selene_distance+7*selene_segment) RELATIVE arm_selene2
COMPONENT E02_04_09 = Elliptic_guide_gravity(
l=selene_segment, dimensionsAt = "mid",
linyh = selene_distance+8*selene_segment, loutyh= selene_distance+6*selene_segment,
linxw = selene_distance+8*selene_segment, loutxw= selene_distance+6*selene_segment,
xwidth=selene_b*2, yheight=selene_b*2,
mright=scoating_07, mleft=0, mbottom=0, mtop=scoating_07,
enableGravity=enable_gravity)
AT (0, 0, selene_distance+8*selene_segment) RELATIVE arm_selene2
COMPONENT E02_04_10 = Elliptic_guide_gravity(
l=selene_segment, dimensionsAt = "mid",
linyh = selene_distance+9*selene_segment, loutyh= selene_distance+5*selene_segment,
linxw = selene_distance+9*selene_segment, loutxw= selene_distance+5*selene_segment,
xwidth=selene_b*2, yheight=selene_b*2,
mright=scoating_06, mleft=0, mbottom=0, mtop=scoating_06,
enableGravity=enable_gravity)
AT (0, 0, selene_distance+9*selene_segment) RELATIVE arm_selene2
COMPONENT E02_04_11 = Elliptic_guide_gravity(
l=selene_segment, dimensionsAt = "mid",
linyh = selene_distance+10*selene_segment, loutyh= selene_distance+4*selene_segment,
linxw = selene_distance+10*selene_segment, loutxw= selene_distance+4*selene_segment,
xwidth=selene_b*2, yheight=selene_b*2,
mright=scoating_05, mleft=0, mbottom=0, mtop=scoating_05,
enableGravity=enable_gravity)
AT (0, 0, selene_distance+10*selene_segment) RELATIVE arm_selene2
COMPONENT E02_04_12 = Elliptic_guide_gravity(
l=selene_segment, dimensionsAt = "mid",
linyh = selene_distance+11*selene_segment, loutyh= selene_distance+3*selene_segment,
linxw = selene_distance+11*selene_segment, loutxw= selene_distance+3*selene_segment,
xwidth=selene_b*2, yheight=selene_b*2,
mright=scoating_04, mleft=0, mbottom=0, mtop=scoating_04,
enableGravity=enable_gravity)
AT (0, 0, selene_distance+11*selene_segment) RELATIVE arm_selene2
COMPONENT E02_04_13 = Elliptic_guide_gravity(
l=selene_segment, dimensionsAt = "mid",
linyh = selene_distance+12*selene_segment, loutyh= selene_distance+2*selene_segment,
linxw = selene_distance+12*selene_segment, loutxw= selene_distance+2*selene_segment,
xwidth=selene_b*2, yheight=selene_b*2,
mright=scoating_03, mleft=0, mbottom=0, mtop=scoating_03,
enableGravity=enable_gravity)
AT (0, 0, selene_distance+12*selene_segment) RELATIVE arm_selene2
COMPONENT E02_04_14 = Elliptic_guide_gravity(
l=selene_segment, dimensionsAt = "mid",
linyh = selene_distance+13*selene_segment, loutyh= selene_distance+1*selene_segment,
linxw = selene_distance+13*selene_segment, loutxw= selene_distance+1*selene_segment,
xwidth=selene_b*2, yheight=selene_b*2,
mright=scoating_02, mleft=0, mbottom=0, mtop=scoating_02,
enableGravity=enable_gravity)
AT (0, 0, selene_distance+13*selene_segment) RELATIVE arm_selene2
COMPONENT E02_04_15 = Elliptic_guide_gravity(
l=selene_segment, dimensionsAt = "mid",
linyh = selene_distance+14*selene_segment, loutyh= selene_distance,
linxw = selene_distance+14*selene_segment, loutxw= selene_distance,
xwidth=selene_b*2, yheight=selene_b*2,
mright=scoating_01, mleft=0, mbottom=0, mtop=scoating_01,
enableGravity=enable_gravity)
AT (0, 0, selene_distance+14*selene_segment) RELATIVE arm_selene2
/* Absorber to cut direct view beam (Bor-Al in CAD model) */
COMPONENT slit_after_selene_guide_2 = Slit(
xmin = -selene_entry-0.001, xmax=0, xmax = 0.0,
ymin = 0, ymax = selene_entry+0.01)
AT (0, 0, 2*selene_c-selene_distance+0.001) RELATIVE arm_selene2
COMPONENT block_after_selene_guide_2 = Absorber(
xmin=-1, xmax=1,
ymin=-selene_entry/4.0+0.015,
ymax=selene_entry/4.0-0.015,
zmin=0.0, zmax=0.001)
AT (0, 0, 2*selene_c-selene_distance+0.0015) RELATIVE arm_selene2
FINALLY
%{
%}
END
+4 -2
View File
@@ -2,8 +2,10 @@
if [ Estia_baseline.instr -nt Estia_baseline.out ] || [ ! -f Estia_baseline.out ] \
|| [ Estia_feeder.instr -nt Estia_baseline.out ] \
|| [ Estia_selene.instr -nt Estia_baseline.out ]; then
|| [ Estia_selene1.instr -nt Estia_baseline.out ] \
|| [ Estia_mf.instr -nt Estia_baseline.out ] \
|| [ Estia_selene2.instr -nt Estia_baseline.out ]; then
rm Estia_baseline.c Estia_baseline.out
mcstas -o Estia_baseline.c Estia_baseline.instr
mpicc -O3 -o Estia_baseline.out Estia_baseline.c -lm -DUSE_MPI -DUSE_NEXUS -lNeXus
mpicc -O3 -o Estia_baseline.out Estia_baseline.c -lm -DUSE_MPI
fi
Binary file not shown.
+174
View File
@@ -0,0 +1,174 @@
#!/bin/bash
DEST=../results
ncount=1e10
use_cores=64
use_host=mcc05,mcc06
lambda_min=3.75
lambda_start=3.0
lambda_end=30.0
if [ Estia_liquids.instr -nt Estia_liquids.out ] || [ ! -f Estia_liquids.out ] \
|| [ Estia_feeder.instr -nt Estia_liquids.out ] \
|| [ Estia_selene1.instr -nt Estia_liquids.out ] \
|| [ Estia_mf.instr -nt Estia_liquids.out ] \
|| [ Estia_selene2.instr -nt Estia_liquids.out ]; then
rm Estia_liquids.c Estia_liquids.out
mcstas -o Estia_liquids.c Estia_liquids.instr
mpicc -O3 -o Estia_liquids.out Estia_liquids.c -lm -DUSE_MPI
fi
###################### Reference measurement ####################
sample=1
omega=1.3
DESTi=$DEST/liquids_ref_13
if [ -e "$DESTi" ]; then
rm -r "$DESTi"
fi
mpirun -np $use_cores --host $use_host Estia_liquids.out \
--dir="$DESTi" --format=NeXuS --ncount=$ncount \
omegaa=$omega theta_resolution=0.04 \
sample=$sample reflector=0 \
lambda_end=$lambda_end lambda_min=$lambda_min lambda_start=$lambda_start
omega=2.5
DESTi=$DEST/liquids_ref_25
if [ -e "$DESTi" ]; then
rm -r "$DESTi"
fi
mpirun -np $use_cores --host $use_host Estia_liquids.out \
--dir="$DESTi" --format=NeXuS --ncount=$ncount \
omegaa=$omega theta_resolution=0.04 \
sample=$sample reflector=0 \
lambda_end=$lambda_end lambda_min=$lambda_min lambda_start=$lambda_start
omega=2.5
DESTi=$DEST/liquids_ref_39
if [ -e "$DESTi" ]; then
rm -r "$DESTi"
fi
mpirun -np $use_cores --host $use_host Estia_liquids.out \
--dir="$DESTi" --format=NeXuS --ncount=$ncount \
omegaa=$omega theta_resolution=0.04 \
sample=$sample reflector=1 \
lambda_end=$lambda_end lambda_min=$lambda_min lambda_start=$lambda_start
omega=2.5
DESTi=$DEST/liquids_ref_61
if [ -e "$DESTi" ]; then
rm -r "$DESTi"
fi
mpirun -np $use_cores --host $use_host Estia_liquids.out \
--dir="$DESTi" --format=NeXuS --ncount=$ncount \
omegaa=$omega theta_resolution=0.04 \
sample=$sample reflector=2 \
lambda_end=$lambda_end lambda_min=$lambda_min lambda_start=$lambda_start
###################### Ni-layer measurement ####################
sample=2
omega=1.3
DESTi=$DEST/liquids_ni_13
if [ -e "$DESTi" ]; then
rm -r "$DESTi"
fi
mpirun -np $use_cores --host $use_host Estia_liquids.out \
--dir="$DESTi" --format=NeXuS --ncount=$ncount \
omegaa=$omega theta_resolution=0.04 \
sample=$sample reflector=0 \
lambda_end=$lambda_end lambda_min=$lambda_min lambda_start=$lambda_start
omega=2.5
DESTi=$DEST/liquids_ni_25
if [ -e "$DESTi" ]; then
rm -r "$DESTi"
fi
mpirun -np $use_cores --host $use_host Estia_liquids.out \
--dir="$DESTi" --format=NeXuS --ncount=$ncount \
omegaa=$omega theta_resolution=0.04 \
sample=$sample reflector=0 \
lambda_end=$lambda_end lambda_min=$lambda_min lambda_start=$lambda_start
omega=2.5
DESTi=$DEST/liquids_ni_39
if [ -e "$DESTi" ]; then
rm -r "$DESTi"
fi
mpirun -np $use_cores --host $use_host Estia_liquids.out \
--dir="$DESTi" --format=NeXuS --ncount=$ncount \
omegaa=$omega theta_resolution=0.04 \
sample=$sample reflector=1 \
lambda_end=$lambda_end lambda_min=$lambda_min lambda_start=$lambda_start
omega=2.5
DESTi=$DEST/liquids_ni_61
if [ -e "$DESTi" ]; then
rm -r "$DESTi"
fi
mpirun -np $use_cores --host $use_host Estia_liquids.out \
--dir="$DESTi" --format=NeXuS --ncount=$ncount \
omegaa=$omega theta_resolution=0.04 \
sample=$sample reflector=2 \
lambda_end=$lambda_end lambda_min=$lambda_min lambda_start=$lambda_start
###################### D2O measurement ####################
sample=0
omega=1.3
DESTi=$DEST/liquids_d2o_13
if [ -e "$DESTi" ]; then
rm -r "$DESTi"
fi
mpirun -np $use_cores --host $use_host Estia_liquids.out \
--dir="$DESTi" --format=NeXuS --ncount=$ncount \
omegaa=$omega theta_resolution=0.04 \
sample=$sample reflector=0 \
lambda_end=$lambda_end lambda_min=$lambda_min lambda_start=$lambda_start
omega=2.5
DESTi=$DEST/liquids_d2o_25
if [ -e "$DESTi" ]; then
rm -r "$DESTi"
fi
mpirun -np $use_cores --host $use_host Estia_liquids.out \
--dir="$DESTi" --format=NeXuS --ncount=$ncount \
omegaa=$omega theta_resolution=0.04 \
sample=$sample reflector=0 \
lambda_end=$lambda_end lambda_min=$lambda_min lambda_start=$lambda_start
omega=2.5
DESTi=$DEST/liquids_d2o_39
if [ -e "$DESTi" ]; then
rm -r "$DESTi"
fi
mpirun -np $use_cores --host $use_host Estia_liquids.out \
--dir="$DESTi" --format=NeXuS --ncount=$ncount \
omegaa=$omega theta_resolution=0.04 \
sample=$sample reflector=1 \
lambda_end=$lambda_end lambda_min=$lambda_min lambda_start=$lambda_start
omega=2.5
DESTi=$DEST/liquids_d2o_61
if [ -e "$DESTi" ]; then
rm -r "$DESTi"
fi
mpirun -np $use_cores --host $use_host Estia_liquids.out \
--dir="$DESTi" --format=NeXuS --ncount=$ncount \
omegaa=$omega theta_resolution=0.04 \
sample=$sample reflector=2 \
lambda_end=$lambda_end lambda_min=$lambda_min lambda_start=$lambda_start
+12
View File
@@ -0,0 +1,12 @@
#!/bin/bash
mcstas -o Estia_monitor.c Estia_monitor.instr
mpicc -O3 -o Estia_monitor.out Estia_monitor.c -lm -DUSE_MPI
mpirun -np 6 Estia_monitor.out --ncount=1e8 --dir=../results/monitor --gravitation enable_windows=1 lambda_start=1.0 lambda_end=35.0 direct_beam=0
mpirun -np 6 Estia_monitor.out --ncount=1e8 --dir=../results/monitor_ref --gravitation enable_windows=1 lambda_start=1.0 lambda_end=35.0 direct_beam=2
mpirun -np 6 Estia_monitor.out --ncount=1e8 --dir=../results/monitor_trans --gravitation enable_windows=1 lambda_start=1.0 lambda_end=35.0 direct_beam=1
mpirun -np 6 Estia_monitor.out --ncount=1e8 --dir=../results/monitor100 --gravitation enable_windows=1 lambda_start=1.0 lambda_end=35.0 direct_beam=0 foil_thickness=0.0001
mpirun -np 6 Estia_monitor.out --ncount=1e8 --dir=../results/monitor001 --gravitation enable_windows=1 lambda_start=1.0 lambda_end=35.0 direct_beam=0 foil_thickness=0.000001
+41 -35
View File
@@ -2,45 +2,51 @@
#-*- coding: utf8 -*-
import sys, os
import numpy as np
from subprocess import call
from numpy import *
from scipy.optimize import leastsq
FOLDER='../results2/'
PREFIX='selene_geo_'
SEED=3798
ITEMS=1000
CALL='mpirun -np 6 Selene_geometry.out --dir=%s --ncount=4e8 enable_gravity=0 sample_length=0.003 '
CALL+='tx_1=%f tz_1=%f ry_1=%f rz_1=%f tx_2=%f tz_2=%f ry_2=%f rz_2=%f '
CALL='/afs/psi.ch/project/sinq/sl6-64/bin/mpirun -np $SLURM_NPROCS Estia_baseline.out '
CALL=+'--dir=../results/selene_geo --ncount=1e9 '
CALL=+'omegaa=1.0 sample=4 sample_length=0.001 sample_height=0.01 '
CALL=+'lambda_start=2.5 lambda_end=15.0 enable_gravity=1 enable_chopper=1 '
CALL=+'lambda_min=3.75 selene1_foot1y=%.4f selene1_foot2y=%.4f '
TX=[-0.001, 0.001]
TZ=[-0.005, 0.005]
RY=[-0.001, 0.001]
RZ=[-2.5, 2.5]
def B(x,w):
# box function with full width w
return float32(abs(x)<=(w/2.))
def G(x,I0,x0,sigma):
# Gaussian with intensity I0, center x0 and standard deviation sigma
return I0*exp(-0.5*(x-x0)**2/sigma**2)
def Intensity(x, p):
I0, x0, sigma, w=p
return convolve(B(xc,w), G(xc, I0, x0, sigma), mode='same')
def Beam(x,I0,x0,sigma,w):
I=I0*where((x-x0)<(-w/2.), exp(-0.5*(x-x0+w/2.)**2/sigma**2),
where((x-x0)>(w/2.), exp(-0.5*(x-x0-w/2.)**2/sigma**2), 1.))
return I
def residuals(p, x, y):
I0, x0, sigma, w=p
return y-Beam(x, I0, x0, sigma, w)
def FWHM(pi):
rng=xc[where(Beam(xc, *pi)>=(pi[0]/2.))[0]]
return rng[-1]-rng[0]
x=linspace(-10.0005, 10.0005, 20001)
xc=(x[1:]+x[:-1])/2.
def analyze(fi):
sim=mr.McSim(fi)
det=sim['tof_sample']
ignore,y=det.project1d('x', bins=x/1000.)
p,res=leastsq(residuals, (y.max(), (xc*y).sum()/y.sum(), 0.01, 0.1), (xc, y))
return p,det
if __name__=='__main__':
call('mcstas -t -o Selene_geometry.c Selene_geometry.instr'.split())
call('mpicc -O2 -o Selene_geometry.out Selene_geometry.c -lm -DUSE_MPI'.split())
np.random.seed(SEED)
fh=open(os.path.join(FOLDER, PREFIX+'sims.dat'), 'w')
fh.write('# index tx_1 tz_1 ry_1 rz_1 tx_2 tz_2 ry_2 rz_2\n')
fh.write('# seed = %i\n'%SEED)
for i in range(ITEMS):
tx_1=np.random.random()*(TX[1]-TX[0])+TX[0]
tx_2=np.random.random()*(TX[1]-TX[0])+TX[0]
tz_1=np.random.random()*(TZ[1]-TZ[0])+TZ[0]
tz_2=np.random.random()*(TZ[1]-TZ[0])+TZ[0]
ry_1=np.random.random()*(RY[1]-RY[0])+RY[0]
ry_2=np.random.random()*(RY[1]-RY[0])+RY[0]
rz_1=np.random.random()*(RZ[1]-RZ[0])+RZ[0]
rz_2=np.random.random()*(RZ[1]-RZ[0])+RZ[0]
ln=' '.join(['%f'%val for val in [tx_1, tz_1, ry_1, rz_1, tx_2, tz_2, ry_2, rz_2]])
fh.write(ln+'\n')
print i, ':', ln
call((CALL%(os.path.join(FOLDER, PREFIX+'%05i/'%i), tx_1, tz_1, ry_1, rz_1, tx_2, tz_2, ry_2, rz_2)).split())
fh.close()
pass
+40
View File
@@ -0,0 +1,40 @@
#!/bin/bash
#SBATCH -J mcEstia_1
#SBATCH -N 2
#SBATCH --ntasks-per-node=24
#SBATCH --time=1-00:00:00
#SBATCH --mail-type=fail
#SBATCH --mail-user=artur.glavic@psi.ch
#SBATCH -o stdout.log
#SBATCH -e stderr.log
#SBATCH --partition=ll_long
echo "Starting at `date`"
echo "Running on hosts: $SLURM_NODELIST"
echo "Running on $SLURM_NNODES nodes."
echo "Running on $SLURM_NPROCS processors."
echo "Current working directory is `pwd`"
/usr/bin/modulecmd tcsh load mcstas
bash compile_if_needed.sh
for y1 in $(seq -0.009 0.001 0.009)
do
for y2 in $(seq -0.009 0.001 0.009) $(seq -0.09 0.01 -0.01) $(seq 0.01 0.01 0.09) $(seq -0.5 0.1 -0.1) $(seq 0.1 0.1 0.5)
do
printf -v Y1 %.3f $y1
printf -v Y2 %.3f $y2
echo $Y1 $Y2
/afs/psi.ch/project/sinq/sl6-64/bin/mpirun -np $SLURM_NPROCS Estia_baseline.out \
--dir=../results/selene1_geo_$Y1\_$Y2 --ncount=1e9 \
omegaa=1.0 sample=4 sample_length=0.00005 sample_height=0.01 \
lambda_start=2.5 lambda_end=15.0 enable_gravity=1 enable_chopper=1 \
lambda_min=3.75 selene1_foot1y=$Y1 selene1_foot2y=$Y2
done
done
echo "Program finished with exit code $? at: `date`"
+40
View File
@@ -0,0 +1,40 @@
#!/bin/bash
#SBATCH -J mcEstia_2
#SBATCH -N 2
#SBATCH --ntasks-per-node=24
#SBATCH --time=1-00:00:00
#SBATCH --mail-type=fail
#SBATCH --mail-user=artur.glavic@psi.ch
#SBATCH -o stdout2.log
#SBATCH -e stderr2.log
#SBATCH --partition=ll_long
echo "Starting at `date`"
echo "Running on hosts: $SLURM_NODELIST"
echo "Running on $SLURM_NNODES nodes."
echo "Running on $SLURM_NPROCS processors."
echo "Current working directory is `pwd`"
/usr/bin/modulecmd tcsh load mcstas
bash compile_if_needed.sh
for y1 in $(seq -0.09 0.01 -0.01)
do
for y2 in $(seq -0.009 0.001 0.009) $(seq -0.09 0.01 -0.01) $(seq 0.01 0.01 0.09) $(seq -0.5 0.1 -0.1) $(seq 0.1 0.1 0.5)
do
printf -v Y1 %.3f $y1
printf -v Y2 %.3f $y2
echo $Y1 $Y2
/afs/psi.ch/project/sinq/sl6-64/bin/mpirun -np $SLURM_NPROCS Estia_baseline.out \
--dir=../results/selene1_geo_$Y1\_$Y2 --ncount=1e9 \
omegaa=1.0 sample=4 sample_length=0.00005 sample_height=0.01 \
lambda_start=2.5 lambda_end=15.0 enable_gravity=1 enable_chopper=1 \
lambda_min=3.75 selene1_foot1y=$Y1 selene1_foot2y=$Y2
done
done
echo "Program finished with exit code $? at: `date`"
+40
View File
@@ -0,0 +1,40 @@
#!/bin/bash
#SBATCH -J mcEstia_3
#SBATCH -N 2
#SBATCH --ntasks-per-node=24
#SBATCH --time=1-00:00:00
#SBATCH --mail-type=fail
#SBATCH --mail-user=artur.glavic@psi.ch
#SBATCH -o stdout3.log
#SBATCH -e stderr3.log
#SBATCH --partition=ll_long
echo "Starting at `date`"
echo "Running on hosts: $SLURM_NODELIST"
echo "Running on $SLURM_NNODES nodes."
echo "Running on $SLURM_NPROCS processors."
echo "Current working directory is `pwd`"
/usr/bin/modulecmd tcsh load mcstas
bash compile_if_needed.sh
for y1 in $(seq 0.01 0.01 0.09)
do
for y2 in $(seq -0.009 0.001 0.009) $(seq -0.09 0.01 -0.01) $(seq 0.01 0.01 0.09) $(seq -0.5 0.1 -0.1) $(seq 0.1 0.1 0.5)
do
printf -v Y1 %.3f $y1
printf -v Y2 %.3f $y2
echo $Y1 $Y2
/afs/psi.ch/project/sinq/sl6-64/bin/mpirun -np $SLURM_NPROCS Estia_baseline.out \
--dir=../results/selene1_geo_$Y1\_$Y2 --ncount=1e9 \
omegaa=1.0 sample=4 sample_length=0.00005 sample_height=0.01 \
lambda_start=2.5 lambda_end=15.0 enable_gravity=1 enable_chopper=1 \
lambda_min=3.75 selene1_foot1y=$Y1 selene1_foot2y=$Y2
done
done
echo "Program finished with exit code $? at: `date`"
+40
View File
@@ -0,0 +1,40 @@
#!/bin/bash
#SBATCH -J mcEstia_4
#SBATCH -N 2
#SBATCH --ntasks-per-node=24
#SBATCH --time=1-00:00:00
#SBATCH --mail-type=fail
#SBATCH --mail-user=artur.glavic@psi.ch
#SBATCH -o stdout4.log
#SBATCH -e stderr4.log
#SBATCH --partition=ll_long
echo "Starting at `date`"
echo "Running on hosts: $SLURM_NODELIST"
echo "Running on $SLURM_NNODES nodes."
echo "Running on $SLURM_NPROCS processors."
echo "Current working directory is `pwd`"
/usr/bin/modulecmd tcsh load mcstas
bash compile_if_needed.sh
for y1 in $(seq -0.5 0.1 -0.1)
do
for y2 in $(seq -0.009 0.001 0.009) $(seq -0.09 0.01 -0.01) $(seq 0.01 0.01 0.09) $(seq -0.5 0.1 -0.1) $(seq 0.1 0.1 0.5)
do
printf -v Y1 %.3f $y1
printf -v Y2 %.3f $y2
echo $Y1 $Y2
/afs/psi.ch/project/sinq/sl6-64/bin/mpirun -np $SLURM_NPROCS Estia_baseline.out \
--dir=../results/selene1_geo_$Y1\_$Y2 --ncount=1e9 \
omegaa=1.0 sample=4 sample_length=0.00005 sample_height=0.01 \
lambda_start=2.5 lambda_end=15.0 enable_gravity=1 enable_chopper=1 \
lambda_min=3.75 selene1_foot1y=$Y1 selene1_foot2y=$Y2
done
done
echo "Program finished with exit code $? at: `date`"
+40
View File
@@ -0,0 +1,40 @@
#!/bin/bash
#SBATCH -J mcEstia_5
#SBATCH -N 2
#SBATCH --ntasks-per-node=24
#SBATCH --time=1-00:00:00
#SBATCH --mail-type=fail
#SBATCH --mail-user=artur.glavic@psi.ch
#SBATCH -o stdout5.log
#SBATCH -e stderr5.log
#SBATCH --partition=ll_long
echo "Starting at `date`"
echo "Running on hosts: $SLURM_NODELIST"
echo "Running on $SLURM_NNODES nodes."
echo "Running on $SLURM_NPROCS processors."
echo "Current working directory is `pwd`"
/usr/bin/modulecmd tcsh load mcstas
bash compile_if_needed.sh
for y1 in $(seq 0.1 0.1 0.5)
do
for y2 in $(seq -0.009 0.001 0.009) $(seq -0.09 0.01 -0.01) $(seq 0.01 0.01 0.09) $(seq -0.5 0.1 -0.1) $(seq 0.1 0.1 0.5)
do
printf -v Y1 %.3f $y1
printf -v Y2 %.3f $y2
echo $Y1 $Y2
/afs/psi.ch/project/sinq/sl6-64/bin/mpirun -np $SLURM_NPROCS Estia_baseline.out \
--dir=../results/selene1_geo_$Y1\_$Y2 --ncount=1e9 \
omegaa=1.0 sample=4 sample_length=0.00005 sample_height=0.01 \
lambda_start=2.5 lambda_end=15.0 enable_gravity=1 enable_chopper=1 \
lambda_min=3.75 selene1_foot1y=$Y1 selene1_foot2y=$Y2
done
done
echo "Program finished with exit code $? at: `date`"