[enh] unstructured: save files to repo
- turn back application (binary for Vlad) - make fit params configurable - update wall simulation numbers - update trapping
This commit is contained in:
parent
7d79fb977e
commit
9f88cf927e
numass-workspace
build.gradle.kts
src/main/kotlin/ru/inr/mass/scripts
@ -33,6 +33,6 @@ kscience{
|
||||
jupyterLibrary("ru.inr.mass.notebook.NumassJupyter")
|
||||
}
|
||||
|
||||
//application {
|
||||
// mainClass.set("ru.inr.mass.scripts.Get_spectrumKt")
|
||||
//}
|
||||
application {
|
||||
mainClass.set("ru.inr.mass.scripts.Fit_customKt")
|
||||
}
|
@ -33,7 +33,7 @@ fun adiab2024(e: Double, u: Double): Double {
|
||||
}
|
||||
|
||||
var idx = 0
|
||||
while (idx < TABLE_X.size - 1) {
|
||||
while (idx < TABLE_X.size - 2) {
|
||||
if (TABLE_X[idx + 1] > delta)
|
||||
break
|
||||
idx += 1
|
||||
|
@ -0,0 +1,94 @@
|
||||
package ru.inr.mass.scripts
|
||||
|
||||
import kotlinx.html.code
|
||||
import ru.inr.mass.models.*
|
||||
import ru.inr.mass.models.NBkgSpectrum.Companion.bkg
|
||||
import ru.inr.mass.models.NBkgSpectrum.Companion.norm
|
||||
import ru.inr.mass.models.NumassBeta.e0
|
||||
import ru.inr.mass.models.NumassBeta.mnu2
|
||||
import ru.inr.mass.models.NumassBeta.msterile2
|
||||
import ru.inr.mass.models.NumassBeta.u2
|
||||
import ru.inr.mass.models.NumassTransmission.Companion.thickness
|
||||
import ru.inr.mass.models.NumassTransmission.Companion.trap
|
||||
import ru.inr.mass.workspace.buffer
|
||||
import space.kscience.kmath.expressions.Symbol
|
||||
import space.kscience.kmath.real.step
|
||||
import space.kscience.plotly.*
|
||||
import space.kscience.plotly.models.AxisType
|
||||
import space.kscience.plotly.models.ScatterMode
|
||||
import space.kscience.plotly.models.appendXY
|
||||
import kotlin.math.pow
|
||||
import kotlin.system.measureTimeMillis
|
||||
|
||||
fun main() {
|
||||
|
||||
val trapInterpolator = RearTrapInterpolator()
|
||||
val range = 12000.0..17000.0 step 50.0
|
||||
|
||||
val spectrum: NBkgSpectrum = SterileNeutrinoSpectrum(
|
||||
fss = null,
|
||||
transmission = NumassTransmission(
|
||||
trapFunc = { ei, ef, _ ->
|
||||
val delta = ei - ef
|
||||
trapInterpolator.value(ei, delta)
|
||||
},
|
||||
adjustX = false,
|
||||
),
|
||||
resolution = NumassResolution(1.7e-4, tailFunction = {
|
||||
e,u -> adiab2024(e,u)
|
||||
})
|
||||
).withNBkg()
|
||||
|
||||
val args: Map<Symbol, Double> = mapOf(
|
||||
norm to 1.0,
|
||||
bkg to 0.0,
|
||||
mnu2 to 0.0,
|
||||
e0 to 18575.0,
|
||||
msterile2 to 0000.0.pow(2),
|
||||
u2 to 0e-2,
|
||||
thickness to 0.0,
|
||||
trap to 1.0,
|
||||
rearWall to 0.02
|
||||
)
|
||||
|
||||
|
||||
val spectrumC: NBkgSpectrum = CustomSterileNeutrinoSpectrum(
|
||||
fss = null,
|
||||
transmission = NumassTransmission(
|
||||
trapFunc = { ei, ef, _ ->
|
||||
val delta = ei - ef
|
||||
trapInterpolator.value(ei, delta)
|
||||
},
|
||||
adjustX = false,
|
||||
),
|
||||
resolution = NumassResolution(1.7e-4, tailFunction = {
|
||||
e,u -> adiab2024(e,u)
|
||||
})
|
||||
).withNBkg()
|
||||
|
||||
Plotly.page {
|
||||
|
||||
plot {
|
||||
scatter {
|
||||
name = "SterileNeutrinoSpectrum"
|
||||
mode = ScatterMode.lines
|
||||
x.buffer = range
|
||||
y.numbers = x.doubles.map {
|
||||
val value = spectrum(it, args)
|
||||
// println("${it}\t${value}")
|
||||
value
|
||||
}
|
||||
}
|
||||
scatter {
|
||||
name = "CustomSterileNeutrinoSpectrum"
|
||||
mode = ScatterMode.lines
|
||||
x.buffer = range
|
||||
y.numbers = x.doubles.map { wallStep(it) * 0.02 }
|
||||
}
|
||||
layout {
|
||||
title = "Sterile neutrino spectrum"
|
||||
yaxis.type = AxisType.log
|
||||
}
|
||||
}
|
||||
}.makeFile()
|
||||
}
|
@ -6,8 +6,10 @@ import com.github.ajalt.clikt.output.MordantHelpFormatter
|
||||
import com.github.ajalt.clikt.parameters.arguments.argument
|
||||
import com.github.ajalt.clikt.parameters.arguments.help
|
||||
import com.github.ajalt.clikt.parameters.options.default
|
||||
import com.github.ajalt.clikt.parameters.options.flag
|
||||
import com.github.ajalt.clikt.parameters.options.help
|
||||
import com.github.ajalt.clikt.parameters.options.option
|
||||
import com.github.ajalt.clikt.parameters.types.boolean
|
||||
import com.github.ajalt.clikt.parameters.types.double
|
||||
import kotlinx.coroutines.runBlocking
|
||||
import kotlinx.html.*
|
||||
@ -41,15 +43,30 @@ val rearWall: Symbol by symbol
|
||||
|
||||
//val WALL_FROM_GEANT = arrayOf<Double>(1.0, 0.965322660932242, 0.931697960429816, 0.898974573402624, 0.867371523007387, 0.83652377064957, 0.80635167154491, 0.777318492855199, 0.748894596765094, 0.721062726904672, 0.694387033829122, 0.66850247894391, 0.643351983486981, 0.619025811547166, 0.595610244974082, 0.572728298455555, 0.550417139557573, 0.529053753592312, 0.508302305052798, 0.488194651852737, 0.468917959235145, 0.450136391693049, 0.432001274316548, 0.414580305172265, 0.397673044886473, 0.381359138243434, 0.365326643171455, 0.349742813717487, 0.335017820520479, 0.32095786127206, 0.307289488879597, 0.294063145039789, 0.281339890753904, 0.26886088047309, 0.25679735048351, 0.2453218644844, 0.23456450895672, 0.223824409798963, 0.213578108303632, 0.203634456988498, 0.194163364726652, 0.185154212213528, 0.176259217224512, 0.167792976657441, 0.159677173141124, 0.151853400500435, 0.144459709694761, 0.137381943199995, 0.130504616078955, 0.123876842615269, 0.117728265270228, 0.111736322667569, 0.105828007088386, 0.100348445931147, 0.0950786160391321, 0.0899627660633574, 0.0850871778534403, 0.0804292853871732, 0.0759479388593539, 0.0715117243759499, 0.0675042643144907, 0.0636906065614028, 0.0601543781401615, 0.0565663806091499, 0.0532332463877772, 0.0500859499963496, 0.0471059076518726, 0.0443209950288381, 0.041593161167858, 0.0389940863747685, 0.0365582833894165, 0.0342392927543157, 0.0320052565557613, 0.0298628118591084, 0.0279659385805972, 0.0261155247595723, 0.0243540476143069, 0.0226602685356643, 0.0211058678294805, 0.0195660686670782, 0.0181377722026429, 0.0168196510231036, 0.0156090503023183, 0.0144422542128772, 0.0133205901678514, 0.0123037917554374, 0.0113852219102802, 0.0104812536089043, 0.00966887680942994, 0.0089003046412998, 0.0081622629738035, 0.00744015026315964, 0.00681759353284352, 0.0061990190417405, 0.00559770092056097, 0.00509461136663813, 0.00463399903098846, 0.00423444769660647, 0.00382560447072722, 0.00344596433241078, 0.00309552728165714, 0.00275039988318765, 0.00246898831212791, 0.00219686863256542, 0.00196191651899196, 0.00175351266683923, 0.00156236518460997, 0.00136458063702553, 0.00120529106850115, 0.00105662080454506, 0.000917242432086229, 0.000816359038687454, 0.000722112710643862, 0.000622556730316123, 0.000537602293769787, 0.000468576814075888, 0.000400878747453026, 0.000351764463824675, 0.000289376049485959, 0.000246898831212791, 0.000217695743649988, 0.000177873351518892, 0.000148670263956089, 0.000127431654819505, 0.000103538219540848, 8.76092626884097E-05, 7.30077189070081E-05, 6.37158274097525E-05, 5.30965228414604E-05, 4.51320444152414E-05, 3.31853267759128E-05, 2.38934352786572E-05, 1.99111960655477E-05, 1.32741307103651E-05, 6.63706535518255E-06, 5.30965228414604E-06, 1.32741307103651E-06, 0.0, 0.0, 0.0)
|
||||
|
||||
val WALL_FROM_GEANT = arrayOf<Double>(
|
||||
1.0, 0.972786442674142, 0.945952334545635, 0.91964489360908, 0.894233201597419, 0.869259016583796, 0.844669464499728, 0.820761054827299, 0.797111831765082, 0.773672031483916, 0.750952769979141, 0.728844152128026, 0.707387647788205, 0.686195513790801, 0.665647199333165, 0.64545448890474, 0.625764600500126, 0.606609673258992, 0.58788603253725, 0.569558428955913, 0.551775117256022, 0.534257212644989, 0.517156080103177, 0.500604423175015, 0.484208278212981, 0.46834087393578, 0.452845661630844, 0.437580607035776, 0.423030907484895, 0.408756982487279, 0.394878057883627, 0.381282165058327, 0.368184947271076, 0.355217322788931, 0.342516142142084, 0.330340591940748, 0.318597365005246, 0.306926710320603, 0.29577961258859, 0.284894811706111, 0.27455533945152, 0.264394187584754, 0.254267248350536, 0.244669049801152, 0.235251245132475, 0.226043899991291, 0.217203563090168, 0.208591310406031, 0.200293191893472, 0.192330979227748, 0.184710892887505, 0.177080439082853, 0.169739237535198, 0.162683141258776, 0.155818843073912, 0.149170188148744, 0.142737176483273, 0.136596527314122, 0.13056473652126, 0.124614848697224, 0.119119055814281, 0.113816097769336, 0.108600226425423, 0.103514985133056, 0.0987107021261596, 0.0941251726182824, 0.0896816773728016, 0.0853667386859861, 0.0811399234466428, 0.077199250224974, 0.0733674353795943, 0.069575016898967, 0.06596610253837, 0.06248781822932, 0.0592915289521811, 0.0562300167123526, 0.0531114834182774, 0.0501629765405015, 0.0474021207685194, 0.0446547427002683, 0.0420856850198433, 0.0396928742343628, 0.0373207983776992, 0.0351291164017434, 0.0330442193091951, 0.0309966450885174, 0.0290807376658276, 0.0272104470865351, 0.0254904847411659, 0.0237788163673234, 0.0221884473270603, 0.0206779077627426, 0.0193125127001439, 0.0179792567772115, 0.0167144261193751, 0.0155138737408714, 0.0143454605020341, 0.013340853200851, 0.0123165477172917, 0.0113409693164523, 0.0104555878559669, 0.0095546551988687, 0.0087833158468767, 0.00807729152065821, 0.00740029609478351, 0.00677306449806958, 0.006136502183388, 0.0055517771907489, 0.00502822023811992, 0.0045772355363504, 0.00415113274916127, 0.00373747091926233, 0.00334350727173954, 0.00298271951032392, 0.0026385196919619, 0.00233371623835215, 0.00206727240305384, 0.00182363698945422, 0.00158207506873629, 0.00138924023073829, 0.00121403008223473, 0.00102948921576352, 0.000883307967603747, 0.000751641169615865, 0.000640709300444972, 0.00054636537432767, 0.000460315419737164, 0.000386706422436852, 0.000307913692932292, 0.000243635413599625, 0.000193871584438851, 0.000148254741041474, 0.000121299333579388, 9.43439261173016E-05, 6.6351772214366E-05, 5.49475613650218E-05, 3.52493789888819E-05, 1.96981823761399E-05, 9.33071796764522E-06, 3.11023932254841E-06
|
||||
)
|
||||
// Angle = 158, 1G events
|
||||
//val WALL_FROM_GEANT = arrayOf<Double>(
|
||||
// 1.0, 0.972786442674142, 0.945952334545635, 0.91964489360908, 0.894233201597419, 0.869259016583796, 0.844669464499728, 0.820761054827299, 0.797111831765082, 0.773672031483916, 0.750952769979141, 0.728844152128026, 0.707387647788205, 0.686195513790801, 0.665647199333165, 0.64545448890474, 0.625764600500126, 0.606609673258992, 0.58788603253725, 0.569558428955913, 0.551775117256022, 0.534257212644989, 0.517156080103177, 0.500604423175015, 0.484208278212981, 0.46834087393578, 0.452845661630844, 0.437580607035776, 0.423030907484895, 0.408756982487279, 0.394878057883627, 0.381282165058327, 0.368184947271076, 0.355217322788931, 0.342516142142084, 0.330340591940748, 0.318597365005246, 0.306926710320603, 0.29577961258859, 0.284894811706111, 0.27455533945152, 0.264394187584754, 0.254267248350536, 0.244669049801152, 0.235251245132475, 0.226043899991291, 0.217203563090168, 0.208591310406031, 0.200293191893472, 0.192330979227748, 0.184710892887505, 0.177080439082853, 0.169739237535198, 0.162683141258776, 0.155818843073912, 0.149170188148744, 0.142737176483273, 0.136596527314122, 0.13056473652126, 0.124614848697224, 0.119119055814281, 0.113816097769336, 0.108600226425423, 0.103514985133056, 0.0987107021261596, 0.0941251726182824, 0.0896816773728016, 0.0853667386859861, 0.0811399234466428, 0.077199250224974, 0.0733674353795943, 0.069575016898967, 0.06596610253837, 0.06248781822932, 0.0592915289521811, 0.0562300167123526, 0.0531114834182774, 0.0501629765405015, 0.0474021207685194, 0.0446547427002683, 0.0420856850198433, 0.0396928742343628, 0.0373207983776992, 0.0351291164017434, 0.0330442193091951, 0.0309966450885174, 0.0290807376658276, 0.0272104470865351, 0.0254904847411659, 0.0237788163673234, 0.0221884473270603, 0.0206779077627426, 0.0193125127001439, 0.0179792567772115, 0.0167144261193751, 0.0155138737408714, 0.0143454605020341, 0.013340853200851, 0.0123165477172917, 0.0113409693164523, 0.0104555878559669, 0.0095546551988687, 0.0087833158468767, 0.00807729152065821, 0.00740029609478351, 0.00677306449806958, 0.006136502183388, 0.0055517771907489, 0.00502822023811992, 0.0045772355363504, 0.00415113274916127, 0.00373747091926233, 0.00334350727173954, 0.00298271951032392, 0.0026385196919619, 0.00233371623835215, 0.00206727240305384, 0.00182363698945422, 0.00158207506873629, 0.00138924023073829, 0.00121403008223473, 0.00102948921576352, 0.000883307967603747, 0.000751641169615865, 0.000640709300444972, 0.00054636537432767, 0.000460315419737164, 0.000386706422436852, 0.000307913692932292, 0.000243635413599625, 0.000193871584438851, 0.000148254741041474, 0.000121299333579388, 9.43439261173016E-05, 6.6351772214366E-05, 5.49475613650218E-05, 3.52493789888819E-05, 1.96981823761399E-05, 9.33071796764522E-06, 3.11023932254841E-06
|
||||
//)
|
||||
|
||||
// Angle = 170.4, 1G events
|
||||
//val WALL_FROM_GEANT = arrayOf<Double>(
|
||||
// 1.0, 0.993679458239278, 0.972911963882618, 0.937697516930023, 0.948984198645598, 0.913318284424379, 0.859593679458239, 0.899322799097065, 0.841534988713318, 0.832054176072235, 0.827088036117381, 0.798645598194131, 0.787358916478555, 0.796839729119639, 0.729571106094808, 0.706546275395034, 0.696613995485327, 0.682618510158014, 0.700677200902935, 0.617155756207675, 0.65823927765237, 0.628893905191874, 0.623476297968397, 0.616704288939052, 0.567042889390519, 0.587358916478555, 0.546726862302483, 0.541309255079007, 0.544920993227991, 0.530925507900677, 0.520090293453725, 0.495711060948081, 0.490744920993228, 0.470428893905192, 0.442437923250564, 0.415801354401806, 0.443792325056433, 0.415349887133183, 0.4, 0.379683972911964, 0.37607223476298, 0.354401805869074, 0.367945823927765, 0.357110609480813, 0.327313769751693, 0.329119638826185, 0.320993227990971, 0.295711060948081, 0.293453724604966, 0.276749435665914, 0.272234762979684, 0.266817155756208, 0.257787810383747, 0.267268623024831, 0.232054176072235, 0.215801354401806, 0.207674943566591, 0.208126410835214, 0.214446952595937, 0.192776523702032, 0.187810383747178, 0.190067720090293, 0.176975169300226, 0.178329571106095, 0.163882618510158, 0.163431151241535, 0.153498871331828, 0.143115124153499, 0.143115124153499, 0.143566591422122, 0.12686230248307, 0.124153498871332, 0.126410835214447, 0.103837471783296, 0.106997742663657, 0.11196388261851, 0.0997742663656885, 0.0975169300225734, 0.0920993227990971, 0.0993227990970655, 0.091647855530474, 0.0839729119638826, 0.0753950338600451, 0.0690744920993228, 0.072234762979684, 0.0686230248306998, 0.0600451467268623, 0.055079006772009, 0.0573363431151242, 0.0474040632054176, 0.0501128668171558, 0.0428893905191874, 0.0428893905191874, 0.0469525959367946, 0.0374717832957111, 0.0465011286681716, 0.0352144469525959, 0.0306997742663657, 0.0343115124153499, 0.0297968397291196, 0.0311512415349887, 0.0230248306997743, 0.0230248306997743, 0.018058690744921, 0.0230248306997743, 0.018510158013544, 0.0135440180586907, 0.018058690744921, 0.0126410835214447, 0.0103837471783296, 0.0117381489841986, 0.0153498871331828, 0.0090293453724605, 0.00948081264108352, 0.00767494356659142, 0.00993227990970655, 0.00857787810383747, 0.00677200902934537, 0.0072234762979684, 0.00586907449209932, 0.0054176072234763, 0.00316027088036117, 0.00270880361173815, 0.00316027088036117, 0.00225733634311512, 0.00135440180586907, 0.0036117381489842, 0.00225733634311512, 0.0018058690744921, 0.000451467268623025, 0.0, 0.00135440180586907, 0.000451467268623025, 0.00135440180586907, 0.0, 0.0, 0.00090293453724605, 0.000451467268623025, 0.0, 0.0
|
||||
//)
|
||||
|
||||
// Angle = 170.4, 2G events (dirty)
|
||||
//val WALL_FROM_GEANT = arrayOf<Double>(
|
||||
// 1.0, 0.998864926220204, 0.980249716231555, 0.946878547105562, 0.951872871736663, 0.915096481271283, 0.864472190692395, 0.907604994324631, 0.849489216799092, 0.836322360953462, 0.828376844494892, 0.802270147559591, 0.793416572077185, 0.796140749148695, 0.737116912599319, 0.713961407491487, 0.701702610669694, 0.688081725312145, 0.701929625425653, 0.621339387060159, 0.664018161180477, 0.638365493757094, 0.625652667423383, 0.622928490351873, 0.569580022701476, 0.587287173666288, 0.552780930760499, 0.544381384790011, 0.544154370034052, 0.532122587968218, 0.525085130533485, 0.49466515323496, 0.489897843359818, 0.471736662883087, 0.444494892167991, 0.416572077185017, 0.445402951191827, 0.417026106696935, 0.404313280363224, 0.380930760499432, 0.380476730987514, 0.359818388195233, 0.37094211123723, 0.358683314415437, 0.32894438138479, 0.335981838819523, 0.32372304199773, 0.296481271282633, 0.296481271282633, 0.276958002270148, 0.277412031782066, 0.266969353007945, 0.262202043132804, 0.267877412031782, 0.234733257661748, 0.217934165720772, 0.209761634506243, 0.209307604994325, 0.21566401816118, 0.194097616345062, 0.188195232690125, 0.191827468785471, 0.176617480136209, 0.180249716231555, 0.164585698070375, 0.163450624290579, 0.153688989784336, 0.143927355278093, 0.142565266742338, 0.146424517593644, 0.12644721906924, 0.124858115777526, 0.127582292849035, 0.106923950056754, 0.107604994324631, 0.111237230419977, 0.0994324631101022, 0.0976163450624291, 0.0933030646992055, 0.10011350737798, 0.092622020431328, 0.0844494892167991, 0.0767309875141884, 0.07105561861521, 0.072644721906924, 0.0671963677639047, 0.0601589103291714, 0.0549375709421112, 0.0581157775255392, 0.0485811577752554, 0.0501702610669694, 0.0424517593643587, 0.0438138479001135, 0.0472190692395006, 0.0381384790011351, 0.0467650397275823, 0.0345062429057889, 0.0306469920544835, 0.0349602724177072, 0.0299659477866061, 0.031328036322361, 0.0233825198637911, 0.0229284903518729, 0.0177071509648127, 0.0233825198637911, 0.0186152099886493, 0.0136208853575482, 0.0172531214528944, 0.01316685584563, 0.00998864926220204, 0.0120317820658343, 0.0154370034052213, 0.00885357548240636, 0.00953461975028377, 0.00794551645856981, 0.0102156640181612, 0.00839954597048808, 0.00681044267877412, 0.0072644721906924, 0.00590238365493757, 0.00522133938706016, 0.00317820658342792, 0.00272417707150965, 0.00295119182746879, 0.00227014755959137, 0.00136208853575482, 0.0036322360953462, 0.00204313280363224, 0.0018161180476731, 0.000454029511918275, 0.000227014755959137, 0.00136208853575482, 0.000227014755959137, 0.00136208853575482, 0.0, 0.0, 0.000908059023836549, 0.000454029511918275, 0.0, 0.0, 0.000681044267877412,
|
||||
//)
|
||||
|
||||
// Angle = 170.4, clean 1 Day of Simulation
|
||||
val WALL_FROM_GEANT = arrayOf<Double>(
|
||||
1.0, 0.972091939196761, 0.944933116650224, 0.918339415572875, 0.892342763731334, 0.866657584990828, 0.841645017867133, 0.817068087381331, 0.79314354759348, 0.769646839878348, 0.746871344935884, 0.724380007116344, 0.702462304837092, 0.681184222149143, 0.660418757491939, 0.640182584254715, 0.620163165077551, 0.600595346421589, 0.581610032129976, 0.563042971581095, 0.54490906439937, 0.52731828400316, 0.510042524237609, 0.493319824340523, 0.47687950780155, 0.46090249863154, 0.445398729913444, 0.430199693990095, 0.41538591978397, 0.401187287214739, 0.38718412352782, 0.373629722338404, 0.360369056601899, 0.34752699936109, 0.335044306871246, 0.322764533075925, 0.311037109643143, 0.299521828481909, 0.288342853129081, 0.277518275985743, 0.266915774196901, 0.256725850103393, 0.246719688044435, 0.237067924194968, 0.227676194266979, 0.21872826029502, 0.209961605086874, 0.201402480361763, 0.193189949280969, 0.185187431953947, 0.17751235161127, 0.170101207472658, 0.162812807859055, 0.155777701860644, 0.149027817244045, 0.142447859296461, 0.136102038304096, 0.130090394602363, 0.124349782163943, 0.118758520722717, 0.113302065407223, 0.108004184665945, 0.102964564081334, 0.0980618781402289, 0.0933287641151769, 0.0887943117490988, 0.0844063723565139, 0.0802458296128616, 0.0761856819575836, 0.0722990085009452, 0.0685404008637525, 0.0650354415947139, 0.0615801477404187, 0.0582649813062927, 0.0551094537052705, 0.0520546759455852, 0.0490942624739124, 0.0462952616001558, 0.0436697349250389, 0.0411183516190748, 0.0386471424826251, 0.0363100299659827, 0.0340836003736258, 0.0319813343181276, 0.0299996842698634, 0.0280978536381513, 0.0262811637174279, 0.024579059003577, 0.0229447121055546, 0.0213607401282006, 0.0198966746521559, 0.0184737605197557, 0.0171476939461052, 0.0159113798719555, 0.0147282787421737, 0.0136168377108075, 0.012584151837106, 0.0115919078011241, 0.0106482649209983, 0.00979401978741074, 0.00897489519710607, 0.00819834096229579, 0.0075115392269862, 0.00684602266942381, 0.00622201220846845, 0.00566434055149186, 0.00514994875593457, 0.00466571096218582, 0.00420133933433445, 0.00377315250865331, 0.00339001930920375, 0.00304271615896196, 0.00270889362129341, 0.00241551292134453, 0.00213951511655586, 0.0018968640902378, 0.0016705317001926, 0.00144739208680947, 0.00127107986447018, 0.00109973418360523, 0.000955704480849193, 0.000819479343267126, 0.000702410865657536, 0.000592437447297013, 0.000504458712608594, 0.000427832072718681, 0.000349786420978955, 0.00029657347661096, 0.000251874603341844, 0.000201499682673475, 0.000162122103841159, 0.000131613349070175, 0.000101104594299191, 7.87551576646329E-05, 6.56292980538607E-05, 4.8246402893649E-05, 3.54752962453301E-05, 2.87349899587174E-05, 1.8801907010025E-05, 1.59638833103986E-05, 1.24163536858655E-05
|
||||
)
|
||||
fun wallStep(u: Double): Double {
|
||||
if (u < 11000) {
|
||||
return 1.0
|
||||
}
|
||||
if (u > 17950) {
|
||||
if (u > 18000) {
|
||||
return 0.0
|
||||
}
|
||||
|
||||
@ -96,16 +113,24 @@ class CustomArgs : CliktCommand() {
|
||||
val norm: Double by option().double().default(8.311751921319484E8).help("NBkgSpectrum.norm")
|
||||
val bkg: Double by option().double().default(1612.626961212948).help("NBkgSpectrum.bkg")
|
||||
|
||||
val fixBkg: Boolean by option().flag().help("Don't fit bkg variable")
|
||||
|
||||
val mnu2: Double by option().double().default(0.0).help("NumassBeta.mnu2")
|
||||
val e0: Double by option().double().default(18572.0).help("NumassBeta.e0")
|
||||
val msterile2: Double by option().double().default(0.0.pow(2)).help("NumassBeta.msterile2")
|
||||
val u2: Double by option().double().default(1e-2).help("NumassBeta.u2")
|
||||
|
||||
val fixU2: Boolean by option().flag().help("Don't fit u2 variable")
|
||||
|
||||
val thickness: Double by option().double().default(0.3).help("NumassTransmission.thickness")
|
||||
|
||||
val trap: Double by option().double().default(1.0).help("NumassTransmission.trap")
|
||||
|
||||
val fixTrap: Boolean by option().flag().help("Don't fit trap variable")
|
||||
|
||||
val rwall: Double by option().double().default(0.17).help("rear wall")
|
||||
|
||||
val fixRwall: Boolean by option().flag().help("Don't fit rwall variable")
|
||||
|
||||
|
||||
@UnstableKMathAPI
|
||||
@ -123,7 +148,16 @@ class CustomArgs : CliktCommand() {
|
||||
)
|
||||
|
||||
runBlocking {
|
||||
processCustom(spectrum, full, postfix, fitParams)
|
||||
processCustom(
|
||||
spectrum,
|
||||
full,
|
||||
postfix,
|
||||
fitParams,
|
||||
fixBkg,
|
||||
fixU2,
|
||||
fixTrap,
|
||||
fixRwall
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -133,6 +167,7 @@ fun main(args: Array<String>) = CustomArgs().main(args)
|
||||
suspend fun fitNumassSpectrumCustom(
|
||||
spectrum: NBkgSpectrum,
|
||||
data: XYErrorColumnarData<Double, Double, Double>,
|
||||
fitParams: List<Symbol>,
|
||||
initial: Map<Symbol, Double>, vararg features: OptimizationFeature = emptyArray()): XYFit {
|
||||
|
||||
return data.fitWith(
|
||||
@ -141,23 +176,23 @@ suspend fun fitNumassSpectrumCustom(
|
||||
startingPoint = initial,
|
||||
*features,
|
||||
OptimizationParameters(
|
||||
NumassBeta.e0,
|
||||
NBkgSpectrum.norm,
|
||||
NBkgSpectrum.bkg,
|
||||
|
||||
rearWall,
|
||||
NumassBeta.u2,
|
||||
|
||||
// NumassBeta.mnu2,
|
||||
// NumassBeta.msterile2,
|
||||
NumassTransmission.trap,
|
||||
fitParams
|
||||
),
|
||||
OptimizationIterations(20)
|
||||
)
|
||||
}
|
||||
|
||||
@UnstableKMathAPI
|
||||
suspend fun processCustom(spectrumFile: String, full: String?, postfix: String?, fitParams: Map<Symbol, Double>) {
|
||||
suspend fun processCustom(
|
||||
spectrumFile: String,
|
||||
full: String?,
|
||||
postfix: String?,
|
||||
fitParams: Map<Symbol, Double>,
|
||||
fixBkg: Boolean,
|
||||
fixU2: Boolean,
|
||||
fixTrap: Boolean,
|
||||
fixRwall: Boolean
|
||||
) {
|
||||
|
||||
val data = parse(spectrumFile)
|
||||
val testData = if (full != null) parse(full) else data
|
||||
@ -184,13 +219,40 @@ suspend fun processCustom(spectrumFile: String, full: String?, postfix: String?,
|
||||
println("[$tag] ${block()}")
|
||||
}
|
||||
|
||||
val fit = fitNumassSpectrumCustom(spectrum, data, fitParams, OptimizationLog(dumpLogger))
|
||||
val fitVars = mutableListOf(
|
||||
NumassBeta.e0,
|
||||
NBkgSpectrum.norm,
|
||||
// NBkgSpectrum.bkg,
|
||||
// rearWall,
|
||||
// NumassBeta.u2,
|
||||
// NumassBeta.mnu2,
|
||||
// NumassBeta.msterile2,
|
||||
// NumassTransmission.trap,
|
||||
)
|
||||
|
||||
if (!fixBkg) {
|
||||
fitVars += NBkgSpectrum.bkg
|
||||
}
|
||||
|
||||
if (!fixU2) {
|
||||
fitVars += NumassBeta.u2
|
||||
}
|
||||
|
||||
if (!fixTrap) {
|
||||
fitVars += NumassTransmission.trap
|
||||
}
|
||||
|
||||
if (!fixRwall) {
|
||||
fitVars += rearWall
|
||||
}
|
||||
|
||||
val fit = fitNumassSpectrumCustom(spectrum, data, fitVars, fitParams, OptimizationLog(dumpLogger))
|
||||
|
||||
val dataPath = Path(spectrumFile)
|
||||
|
||||
Plotly.page {
|
||||
h3 {
|
||||
+"Fit for $spectrumFile"
|
||||
+"Fit for $spectrumFile ($postfix)"
|
||||
}
|
||||
plot {
|
||||
scatter {
|
||||
|
@ -16,16 +16,18 @@ fun main() {
|
||||
val p = Path("/home/chernov/Trit8-12_for_fit.tsv")
|
||||
|
||||
|
||||
val interpolator = RearTrapInterpolator()
|
||||
val interpolator = TrapInterpolator()
|
||||
Plotly.page {
|
||||
plot {
|
||||
val eis = (12000.0..18000.0 step 100.0).toDoubleArray()
|
||||
val deltas = (0.0..7000.0 step 1.0).toDoubleArray()
|
||||
val deltas = (0.0..7000.0 step 10.0).toDoubleArray()
|
||||
|
||||
val values = eis.map { ei ->
|
||||
deltas.map { interpolator.value(ei, it) }.toList()
|
||||
}
|
||||
|
||||
|
||||
|
||||
trace {
|
||||
type = TraceType.surface
|
||||
x.numbers = deltas.toList()
|
||||
@ -38,16 +40,15 @@ fun main() {
|
||||
scatter {
|
||||
name = "12 keV"
|
||||
mode = ScatterMode.lines
|
||||
x.buffer = 0.0..7000.0 step 1.0
|
||||
x.buffer = 0.0..7000.0 step 10.0
|
||||
y.numbers = x.doubles.map {
|
||||
interpolator.value(12000.0, it)
|
||||
}
|
||||
}
|
||||
|
||||
scatter {
|
||||
name = "13 keV"
|
||||
mode = ScatterMode.lines
|
||||
x.buffer = 0.0..7000.0 step 1.0
|
||||
x.buffer = 0.0..7000.0 step 10.0
|
||||
y.numbers = x.doubles.map {
|
||||
interpolator.value(13000.0, it)
|
||||
}
|
||||
@ -55,7 +56,7 @@ fun main() {
|
||||
scatter {
|
||||
name = "14 keV"
|
||||
mode = ScatterMode.lines
|
||||
x.buffer = 0.0..7000.0 step 1.0
|
||||
x.buffer = 0.0..7000.0 step 10.0
|
||||
y.numbers = x.doubles.map {
|
||||
interpolator.value(14000.0, it)
|
||||
}
|
||||
@ -63,7 +64,7 @@ fun main() {
|
||||
scatter {
|
||||
name = "15 keV"
|
||||
mode = ScatterMode.lines
|
||||
x.buffer = 0.0..7000.0 step 1.0
|
||||
x.buffer = 0.0..7000.0 step 10.0
|
||||
y.numbers = x.doubles.map {
|
||||
interpolator.value(15000.0, it)
|
||||
}
|
||||
@ -71,7 +72,7 @@ fun main() {
|
||||
scatter {
|
||||
name = "16 keV"
|
||||
mode = ScatterMode.lines
|
||||
x.buffer = 0.0..7000.0 step 1.0
|
||||
x.buffer = 0.0..7000.0 step 10.0
|
||||
y.numbers = x.doubles.map {
|
||||
interpolator.value(16000.0, it)
|
||||
}
|
||||
|
@ -9,13 +9,13 @@ class RearTrapInterpolator {
|
||||
private val yFine = arrayOf(0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0, 20.0, 21.0, 22.0, 23.0, 24.0, 25.0, 26.0, 27.0, 28.0, 29.0, 30.0, 31.0, 32.0, 33.0, 34.0, 35.0, 36.0, 37.0, 38.0, 39.0, 40.0, 41.0, 42.0, 43.0, 44.0, 45.0, 46.0, 47.0, 48.0, 49.0).toDoubleArray()
|
||||
private val gridFine = arrayOf(
|
||||
arrayOf(
|
||||
0.0035041, 0.000118507, 4.64735e-5, 2.32367e-5, 1.16184e-5, 4.64735e-6, 0.0, 2.32367e-6, 4.64735e-6, 2.32367e-6, 2.32367e-6, 0.000346227, 0.00168699, 0.0012269, 0.000876025, 0.000783078, 0.000773783, 0.000643658, 0.000536769, 0.000481, 0.000415938, 0.00031602, 0.00029743, 0.000371788, 0.00045544, 0.000529798, 0.000492619, 0.000520503, 0.000529798, 0.000534445, 0.000425232, 0.000457764, 0.000434527, 0.000446145, 0.000353198, 0.000360169, 0.000355522, 0.000399672, 0.000388054, 0.000434527, 0.000381083, 0.000420585, 0.000413614, 0.000450793, 0.000397348, 0.000425232, 0.000415938, 0.000413614, 0.000364817, 0.000374111
|
||||
0.00493528, 0.000166909, 6.54547e-5, 3.27273e-5, 1.63637e-5, 6.54547e-6, 0.0, 3.27273e-6, 6.54547e-6, 3.27273e-6, 3.27273e-6, 0.000487637, 0.002376, 0.001728, 0.00123382, 0.00110291, 0.00108982, 0.000906547, 0.000756001, 0.000677456, 0.000585819, 0.000445092, 0.00041891, 0.000523637, 0.000641456, 0.000746183, 0.000693819, 0.000733092, 0.000746183, 0.000752729, 0.00059891, 0.000644728, 0.000612001, 0.000628365, 0.000497455, 0.000507274, 0.000500728, 0.00056291, 0.000546546, 0.000612001, 0.000536728, 0.000592365, 0.000582547, 0.00063491, 0.000559637, 0.00059891, 0.000585819, 0.000582547, 0.000513819, 0.00052691
|
||||
).toDoubleArray(),
|
||||
arrayOf(
|
||||
0.00372907, 0.000112677, 4.56073e-5, 1.60967e-5, 2.14623e-5, 1.07311e-5, 1.07311e-5, 8.04835e-6, 5.36557e-6, 2.68278e-6, 0.0, 0.000329983, 0.00183502, 0.00131456, 0.000989948, 0.000791422, 0.000740449, 0.000558019, 0.000552654, 0.000501681, 0.000450708, 0.000442659, 0.000354128, 0.000329983, 0.000434611, 0.000582164, 0.000418514, 0.000614358, 0.000617041, 0.000474853, 0.000450708, 0.000458756, 0.000434611, 0.000464122, 0.000418514, 0.000378273, 0.000389004, 0.000380955, 0.000389004, 0.000429246, 0.000439977, 0.000431928, 0.000434611, 0.000407783, 0.000367542, 0.000394369, 0.000402418, 0.000407783, 0.000394369, 0.000533874
|
||||
0.0045491, 0.000137455, 5.56365e-5, 1.96364e-5, 2.61819e-5, 1.30909e-5, 1.30909e-5, 9.8182e-6, 6.54547e-6, 3.27273e-6, 0.0, 0.000402546, 0.00223855, 0.00160364, 0.00120764, 0.000965456, 0.000903274, 0.000680729, 0.000674183, 0.000612001, 0.000549819, 0.000540001, 0.000432001, 0.000402546, 0.000530183, 0.000710183, 0.000510546, 0.000749456, 0.000752729, 0.000579274, 0.000549819, 0.000559637, 0.000530183, 0.000566183, 0.000510546, 0.000461455, 0.000474546, 0.000464728, 0.000474546, 0.000523637, 0.000536728, 0.00052691, 0.000530183, 0.000497455, 0.000448364, 0.000481092, 0.00049091, 0.000497455, 0.000481092, 0.000651274
|
||||
).toDoubleArray(),
|
||||
arrayOf(
|
||||
0.00388296, 0.00011026, 5.66202e-5, 3.27801e-5, 2.68201e-5, 1.19201e-5, 8.94004e-6, 5.96003e-6, 5.96003e-6, 0.0, 0.0, 0.000363562, 0.00202045, 0.00139763, 0.00115327, 0.000813544, 0.000774803, 0.000631763, 0.000575143, 0.000545342, 0.000420182, 0.000357602, 0.000357602, 0.000303961, 0.000470842, 0.000581103, 0.000509582, 0.000530442, 0.000649643, 0.000601963, 0.000569182, 0.000545342, 0.000476802, 0.000524482, 0.000417202, 0.000464882, 0.000435082, 0.000432102, 0.000488722, 0.000420182, 0.000476802, 0.000458922, 0.000438062, 0.000405282, 0.000500642, 0.000399322, 0.000452962, 0.000527462, 0.000375482, 0.000405282
|
||||
0.00426437, 0.000121091, 6.21819e-5, 3.60001e-5, 2.94546e-5, 1.30909e-5, 9.8182e-6, 6.54547e-6, 6.54547e-6, 0.0, 0.0, 0.000399273, 0.00221891, 0.00153491, 0.00126655, 0.000893456, 0.000850911, 0.000693819, 0.000631638, 0.00059891, 0.000461455, 0.000392728, 0.000392728, 0.000333819, 0.000517092, 0.000638183, 0.000559637, 0.000582547, 0.000713456, 0.000661092, 0.000625092, 0.00059891, 0.000523637, 0.000576001, 0.000458183, 0.000510546, 0.000477819, 0.000474546, 0.000536728, 0.000461455, 0.000523637, 0.000504001, 0.000481092, 0.000445092, 0.000549819, 0.000438546, 0.000497455, 0.000579274, 0.000412364, 0.000445092
|
||||
).toDoubleArray(),
|
||||
arrayOf(
|
||||
0.00405164, 0.000104727, 5.23637e-5, 4.25455e-5, 9.8182e-6, 9.8182e-6, 1.63637e-5, 0.0, 3.27273e-6, 6.54547e-6, 0.0, 0.000428728, 0.00196364, 0.00131237, 0.000958911, 0.000893456, 0.000657819, 0.000654547, 0.000497455, 0.000497455, 0.000445092, 0.000369819, 0.000366546, 0.000356728, 0.000474546, 0.000576001, 0.000579274, 0.000605456, 0.000595637, 0.000523637, 0.000559637, 0.000546546, 0.000494183, 0.000451637, 0.000343637, 0.000409092, 0.000412364, 0.000487637, 0.000471274, 0.00045491, 0.000438546, 0.000507274, 0.000494183, 0.000422183, 0.00041891, 0.000458183, 0.000428728, 0.000500728, 0.000409092, 0.000343637
|
||||
@ -24,19 +24,19 @@ class RearTrapInterpolator {
|
||||
|
||||
private val fineInterpolator = BicubicInterpolator().interpolate(x, yFine, gridFine)
|
||||
|
||||
private val yCoarse = arrayOf(50.0, 150.0, 250.0, 350.0, 450.0, 550.0, 650.0, 750.0, 850.0, 950.0, 1050.0, 1150.0, 1250.0, 1350.0, 1450.0, 1550.0, 1650.0, 1750.0, 1850.0, 1950.0, 2050.0, 2150.0, 2250.0, 2350.0, 2450.0, 2550.0, 2650.0, 2750.0, 2850.0, 2950.0, 3050.0, 3150.0, 3250.0, 3350.0, 3450.0, 3550.0, 3650.0, 3750.0, 3850.0, 3950.0, 4050.0, 4150.0, 4250.0, 4350.0, 4450.0, 4550.0, 4650.0, 4750.0, 4850.0, 4950.0, 5050.0, 5150.0, 5250.0, 5350.0, 5450.0, 5550.0, 5650.0, 5750.0, 5850.0, 5950.0, 6050.0, 6150.0, 6250.0, 6350.0, 6450.0, 6550.0, 6650.0, 6750.0, 6850.0).toDoubleArray()
|
||||
private val yCoarse = arrayOf(50.0, 150.0, 250.0, 350.0, 450.0, 550.0, 650.0, 750.0, 850.0, 950.0, 1050.0, 1150.0, 1250.0, 1350.0, 1450.0, 1550.0, 1650.0, 1750.0, 1850.0, 1950.0, 2050.0, 2150.0, 2250.0, 2350.0, 2450.0, 2550.0, 2650.0, 2750.0, 2850.0, 2950.0, 3050.0, 3150.0, 3250.0, 3350.0, 3450.0, 3550.0, 3650.0, 3750.0, 3850.0, 3950.0, 4050.0, 4150.0, 4250.0, 4350.0, 4450.0, 4550.0, 4650.0, 4750.0, 4850.0, 4950.0, 5050.0, 5150.0, 5250.0, 5350.0, 5450.0, 5550.0, 5650.0, 5750.0, 5850.0, 5950.0, 6050.0, 6150.0, 6250.0, 6350.0, 6450.0, 6550.0, 6650.0, 6750.0, 6850.0, 6950.0, 7050.0, 7150.0, 7250.0, 7350.0, 7450.0).toDoubleArray()
|
||||
private val gridCoarse = arrayOf(
|
||||
arrayOf(
|
||||
0.000407038, 0.000285208, 0.000239106, 0.000218844, 0.000201532, 0.000188311, 0.00018034, 0.00016763, 0.000162773, 0.000157638, 0.000151411, 0.000150063, 0.000146206, 0.000142232, 0.000141558, 0.000138235, 0.00013719, 0.000135354, 0.000129498, 0.000131473, 0.000130172, 0.00012757, 0.000126385, 0.00012506, 0.000129917, 0.000124549, 0.000124084, 0.000122156, 0.000120692, 0.000122063, 0.000124177, 0.000126849, 0.000120041, 0.000122341, 0.000122597, 0.000120482, 0.000118809, 0.000123643, 0.000122783, 0.000123968, 0.000121551, 0.000122225, 0.000123062, 0.000122667, 0.000122318, 0.000124409, 0.000122667, 0.000122341, 0.000124735, 0.000126245, 0.000125014, 0.000127732, 0.00012578, 0.000128383, 0.000130567, 0.000129266, 0.000127221, 0.000132124, 0.0001298, 0.000133402, 0.000134285, 0.000135563, 0.000133123, 0.000138235, 0.000137817, 0.000142557, 0.000138607, 0.000142023, 0.000140884
|
||||
0.000573285, 0.000401695, 0.000336764, 0.000308226, 0.000283844, 0.000265222, 0.000253997, 0.000236095, 0.000229255, 0.000222022, 0.000213251, 0.000211353, 0.00020592, 0.000200324, 0.000199375, 0.000194695, 0.000193222, 0.000190637, 0.000182389, 0.000185171, 0.000183339, 0.000179673, 0.000178004, 0.000176139, 0.000182979, 0.000175419, 0.000174764, 0.000172048, 0.000169986, 0.000171917, 0.000174895, 0.000178659, 0.000169069, 0.000172309, 0.000172669, 0.000169691, 0.000167335, 0.000174142, 0.000172931, 0.0001746, 0.000171197, 0.000172146, 0.000173324, 0.000172768, 0.000172277, 0.000175222, 0.000172768, 0.000172309, 0.00017568, 0.000177808, 0.000176073, 0.000179902, 0.000177153, 0.000180819, 0.000183895, 0.000182062, 0.000179182, 0.000186088, 0.000182815, 0.000187888, 0.000189131, 0.000190931, 0.000187495, 0.000194695, 0.000194106, 0.000200782, 0.000195219, 0.000200029, 0.000198426, 0.000204808, 0.0, 0.0, 0.0, 0.0, 0.0
|
||||
).toDoubleArray(),
|
||||
arrayOf(
|
||||
0.000430319, 0.000304416, 0.000259908, 0.000229834, 0.000211001, 0.000194207, 0.000186454, 0.000176661, 0.000166842, 0.000162308, 0.000158928, 0.000155897, 0.000151041, 0.000149136, 0.000150102, 0.000142322, 0.000139934, 0.00014039, 0.00013819, 0.000133415, 0.000134193, 0.000130571, 0.000130759, 0.000130437, 0.000124884, 0.000130061, 0.000127727, 0.000126198, 0.000127432, 0.000122711, 0.000123971, 0.000120645, 0.000121611, 0.000121852, 0.00012212, 0.000121476, 0.000122979, 0.000122442, 0.000119625, 0.000118874, 0.000120967, 0.000121718, 0.000117989, 0.000121906, 0.000119572, 0.000119035, 0.000118499, 0.000122898, 0.000122308, 0.000120108, 0.000122898, 0.000122764, 0.00012255, 0.000123542, 0.000122442, 0.000123515, 0.000124723, 0.000123113, 0.000124857, 0.000126654, 0.000126386, 0.000124186, 0.000125796, 0.00012424, 0.00012923, 0.000127727, 0.00012821, 0.000130115, 0.000129418
|
||||
0.000524946, 0.000371357, 0.000317062, 0.000280375, 0.0002574, 0.000236913, 0.000227455, 0.000215509, 0.000203531, 0.000198, 0.000193877, 0.000190179, 0.000184255, 0.000181931, 0.000183109, 0.000173618, 0.000170706, 0.000171262, 0.000168578, 0.000162753, 0.000163702, 0.000159284, 0.000159513, 0.00015912, 0.000152346, 0.000158662, 0.000155815, 0.000153949, 0.000155455, 0.000149695, 0.000151233, 0.000147175, 0.000148353, 0.000148648, 0.000148975, 0.000148189, 0.000150022, 0.000149368, 0.000145931, 0.000145015, 0.000147568, 0.000148484, 0.000143935, 0.000148713, 0.000145866, 0.000145211, 0.000144557, 0.000149924, 0.000149204, 0.00014652, 0.000149924, 0.00014976, 0.000149498, 0.000150709, 0.000149368, 0.000150677, 0.000152149, 0.000150186, 0.000152313, 0.000154506, 0.000154178, 0.000151495, 0.000153458, 0.00015156, 0.000157648, 0.000155815, 0.000156404, 0.000158728, 0.000157877, 0.000159513, 0.0, 0.0, 0.0, 0.0, 0.0
|
||||
).toDoubleArray(),
|
||||
arrayOf(
|
||||
0.000456717, 0.000311233, 0.000262569, 0.000236017, 0.000216826, 0.000200227, 0.000191823, 0.000182883, 0.000178473, 0.000174092, 0.00016107, 0.000157583, 0.000157732, 0.000153053, 0.000144978, 0.000150461, 0.000142087, 0.000142087, 0.000133803, 0.000139256, 0.000134905, 0.00013419, 0.000132223, 0.000131359, 0.000131061, 0.000131091, 0.000124535, 0.000125935, 0.000124267, 0.000126442, 0.00012382, 0.00012224, 0.000120184, 0.00012379, 0.000122836, 0.000120303, 0.000119946, 0.000118992, 0.000123373, 0.000120005, 0.000116519, 0.000119528, 0.000119797, 0.00011777, 0.000116995, 0.000119767, 0.000119588, 0.000117264, 0.000121763, 0.000117979, 0.000120273, 0.000116161, 0.000119856, 0.00011625, 0.000119469, 0.000120422, 0.000118962, 0.000115893, 0.000122955, 0.000122479, 0.000121287, 0.000119081, 0.000120333, 0.00012376, 0.000121555, 0.000122955, 0.000121048, 0.000123522, 0.000121734
|
||||
0.000501579, 0.000341804, 0.000288361, 0.0002592, 0.000238124, 0.000219895, 0.000210666, 0.000200848, 0.000196004, 0.000191193, 0.000176891, 0.000173062, 0.000173226, 0.000168088, 0.000159218, 0.00016524, 0.000156044, 0.000156044, 0.000146946, 0.000152935, 0.000148157, 0.000147371, 0.000145211, 0.000144262, 0.000143935, 0.000143968, 0.000136768, 0.000138306, 0.000136473, 0.000138862, 0.000135982, 0.000134248, 0.000131989, 0.000135949, 0.000134902, 0.00013212, 0.000131728, 0.00013068, 0.000135491, 0.000131793, 0.000127964, 0.000131269, 0.000131564, 0.000129338, 0.000128488, 0.000131531, 0.000131335, 0.000128782, 0.000133724, 0.000129568, 0.000132088, 0.000127571, 0.000131629, 0.000127669, 0.000131204, 0.000132251, 0.000130648, 0.000127277, 0.000135033, 0.000134509, 0.0001332, 0.000130778, 0.000132153, 0.000135917, 0.000133495, 0.000135033, 0.000132938, 0.000135655, 0.000133691, 0.000132415, 0.0, 0.0, 0.0, 0.0, 0.0
|
||||
).toDoubleArray(),
|
||||
arrayOf(
|
||||
0.000459132, 0.000318928, 0.00027396, 0.000241953, 0.000222742, 0.000210404, 0.000194433, 0.000185924, 0.000179051, 0.000169593, 0.00016812, 0.000164717, 0.00015552, 0.000157713, 0.000153982, 0.000145473, 0.000146029, 0.000142298, 0.000140695, 0.000138698, 0.000135164, 0.000135328, 0.000134608, 0.000132382, 0.000127735, 0.000128684, 0.0001296, 0.000127538, 0.000129109, 0.000121189, 0.000126066, 0.000122269, 0.000121615, 0.000120862, 0.000123447, 0.000119357, 0.000121124, 0.000118735, 0.000120764, 0.000115789, 0.000119455, 0.000120175, 0.000116509, 0.000118309, 0.0001188, 0.000117458, 0.000116215, 0.000117687, 0.000114611, 0.000116509, 0.000117229, 0.000115462, 0.000116607, 0.00011412, 0.000116967, 0.000116247, 0.000117426, 0.0001188, 0.000113597, 0.000117786, 0.000118604, 0.000118309, 0.000117786, 0.000117949, 0.000117426, 0.000117884, 0.000117426, 0.000116411, 0.000118506, 0.000118866
|
||||
0.000459132, 0.000318928, 0.00027396, 0.000241953, 0.000222742, 0.000210404, 0.000194433, 0.000185924, 0.000179051, 0.000169593, 0.00016812, 0.000164717, 0.00015552, 0.000157713, 0.000153982, 0.000145473, 0.000146029, 0.000142298, 0.000140695, 0.000138698, 0.000135164, 0.000135328, 0.000134608, 0.000132382, 0.000127735, 0.000128684, 0.0001296, 0.000127538, 0.000129109, 0.000121189, 0.000126066, 0.000122269, 0.000121615, 0.000120862, 0.000123447, 0.000119357, 0.000121124, 0.000118735, 0.000120764, 0.000115789, 0.000119455, 0.000120175, 0.000116509, 0.000118309, 0.0001188, 0.000117458, 0.000116215, 0.000117687, 0.000114611, 0.000116509, 0.000117229, 0.000115462, 0.000116607, 0.00011412, 0.000116967, 0.000116247, 0.000117426, 0.0001188, 0.000113597, 0.000117786, 0.000118604, 0.000118309, 0.000117786, 0.000117949, 0.000117426, 0.000117884, 0.000117426, 0.000116411, 0.000118506, 0.000118866, 1.30909e-7, 0.0, 0.0, 0.0, 0.0
|
||||
).toDoubleArray()
|
||||
)
|
||||
|
||||
|
@ -47,7 +47,7 @@ fun main() {
|
||||
msterile2 to 0000.0.pow(2),
|
||||
u2 to 0e-2,
|
||||
thickness to 0.0,
|
||||
trap to 1.0
|
||||
trap to 0.521
|
||||
)
|
||||
|
||||
Plotly.page {
|
||||
|
@ -5,6 +5,89 @@ import kotlin.math.max
|
||||
import kotlin.math.min
|
||||
|
||||
class TrapInterpolator {
|
||||
private val x = arrayOf(12000.0, 14000.0, 16000.0, 18000.0).toDoubleArray()
|
||||
private val yFine = arrayOf(0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0, 20.0, 21.0, 22.0, 23.0, 24.0, 25.0, 26.0, 27.0, 28.0, 29.0, 30.0, 31.0, 32.0, 33.0, 34.0, 35.0, 36.0, 37.0, 38.0, 39.0, 40.0, 41.0, 42.0, 43.0, 44.0, 45.0, 46.0, 47.0, 48.0, 49.0, 51.0).toDoubleArray()
|
||||
private val gridFine = arrayOf(
|
||||
arrayOf(
|
||||
0.0012643067855944597, 0.00031968702323903096, 0.00010821089214836011, 5.420435913830104e-5, 2.9871745364538163e-5, 2.453043990200485e-5, 1.4441307361664145e-5, 1.16717415662765e-5, 8.506523514404908e-6, 7.5173928731950345e-6, 6.132609975501212e-6, 0.00029713484461944584, 0.00132345679793881, 0.0010190023865744111, 0.000832452347642229, 0.000560639247437756, 0.000522260978558813, 0.0004546044427000576, 0.00038714573296954425, 0.000319093544854305, 0.0002925848436698804, 0.00023719352776212753, 0.00021345439237309058, 0.00017745003703305122, 0.00016004133774775745, 0.00017487829736590553, 0.00016637177385150063, 0.00014362176910367354, 0.0001517326403615945, 0.00014441307361664146, 0.0001392695942823501, 0.00013036741851146127, 0.00011454132825210329, 0.0001066282831224243, 9.159349737603424e-5, 8.625219191350092e-5, 8.80326270676787e-5, 7.458045034722442e-5, 8.842827932416264e-5, 8.506523514404907e-5, 8.24934954769034e-5, 8.466958288756512e-5, 8.40761045028392e-5, 8.348262611811327e-5, 7.893262516854787e-5, 8.308697386162933e-5, 7.636088550140219e-5, 7.16130584235948e-5, 7.339349357777257e-5, 7.220653680832073e-5, 0.0
|
||||
).toDoubleArray(),
|
||||
arrayOf(
|
||||
0.001017798227726721, 0.00031166365148059007, 0.00010217508422033295, 5.177924964357299e-5, 2.5691994097956065e-5, 2.055359527836485e-5, 1.2253104877486738e-5, 9.4862747438607e-6, 9.881536191521563e-6, 7.312336781725956e-6, 5.336029543421644e-6, 0.00026008203256084754, 0.001207523722603935, 0.0008905240415799233, 0.0007432891523262519, 0.0004660132467921569, 0.00047154690705940896, 0.0003843917578501888, 0.0003365651226832244, 0.00029960817732693377, 0.00026640621572342134, 0.00022213693358540473, 0.0001814250044763359, 0.0001509898730064495, 0.0001460491049106887, 0.00014940882721580604, 0.0001409107060910975, 0.00013537704582384543, 0.00012786707831828902, 0.00012865760121361075, 0.0001175902806791066, 0.00010593006797311116, 0.00010098929987735037, 8.616699559006803e-5, 7.727361301769862e-5, 7.687835157003776e-5, 6.917075334065095e-5, 6.897312261682051e-5, 7.608782867471604e-5, 6.581103103553361e-5, 7.70759822938682e-5, 7.015890695980309e-5, 6.3241831625738e-5, 5.849869425380765e-5, 5.573186412018162e-5, 6.798496899766835e-5, 6.482287741638145e-5, 6.343946234956843e-5, 5.415081832953817e-5, 5.553423339635118e-5, 0.0
|
||||
).toDoubleArray(),
|
||||
arrayOf(
|
||||
0.0008294685693622354, 0.0002760945380877155, 0.00010941085414920915, 4.957062164521931e-5, 2.7451459795559698e-5, 2.0144236684511432e-5, 1.4416953705581712e-5, 1.1257073441344624e-5, 8.68967072665199e-6, 5.924775495444539e-6, 5.332297945900085e-6, 0.00024568069054443356, 0.0010411805470661203, 0.0008022146020831906, 0.0006491579017842067, 0.0004352735063986588, 0.00041374682209854364, 0.00035449906714409826, 0.00031282814615947165, 0.00026424498709682644, 0.00023225119942142593, 0.00019216021856891788, 0.0001660912063889619, 0.00013903473162643184, 0.00013804726904385775, 0.00012777765818508722, 0.00012284034527221678, 0.00011513813712813888, 0.00010467103375285351, 0.00010170864600513125, 0.00010151115348861643, 9.67713330922608e-5, 7.662709640774937e-5, 8.077443925456055e-5, 7.247975356093819e-5, 6.951736581321592e-5, 5.924775495444539e-5, 6.023521753701948e-5, 6.793742568109738e-5, 6.26051277351973e-5, 6.300011276822693e-5, 6.221014270216766e-5, 5.7075337272782394e-5, 5.984023250398984e-5, 5.549539714066385e-5, 5.0953069260823034e-5, 5.5890382173693484e-5, 5.5692889657178664e-5, 5.60878746902083e-5, 5.5692889657178664e-5, 0.0
|
||||
).toDoubleArray(),
|
||||
arrayOf(
|
||||
0.0006934201583963283, 0.00027247843585548076, 0.00010607337083230727, 4.751613823529006e-5, 3.016584709543311e-5, 1.8730427935072844e-5, 1.5575829546007945e-5, 8.675145569928476e-6, 8.280820771295363e-6, 6.703521576762913e-6, 7.492171174029138e-6, 0.00021451269045641322, 0.0009546603374907654, 0.0007295008774712582, 0.0005938531467414675, 0.00038564965306318405, 0.00038821276425429925, 0.0003182201124969218, 0.00027799898303634433, 0.00023146865679763706, 0.00020169713450083704, 0.00016699655222112314, 0.00014629450029288475, 0.00012677542276054568, 0.00011652297799608474, 0.00011238256761043707, 0.00010213012284597615, 9.207484048083177e-5, 9.621525086647946e-5, 9.266632767878144e-5, 8.300537011227019e-5, 8.063942132047151e-5, 7.156995095190993e-5, 7.354157494507548e-5, 6.348629257993112e-5, 5.8162907798384095e-5, 5.8162907798384095e-5, 5.343101021478674e-5, 5.0473574225038405e-5, 5.540263420795231e-5, 4.830478783255628e-5, 6.368345497924767e-5, 5.836007019770065e-5, 5.205087341957085e-5, 5.2445198218203966e-5, 4.830478783255628e-5, 4.633316383939072e-5, 4.850195023187284e-5, 4.1798428655109924e-5, 4.830478783255628e-5, 0.0
|
||||
).toDoubleArray(),
|
||||
)
|
||||
|
||||
// arrayOf(
|
||||
// arrayOf(
|
||||
// 0.00660514, 0.00167015, 0.000565328, 0.000283181, 0.000156059, 0.000128155, 7.5446e-5, 6.09769e-5, 4.44408e-5, 3.92732e-5, 3.20387e-5, 0.00155233, 0.00691416, 0.00532359, 0.00434899, 0.00292896, 0.00272846, 0.002375, 0.00202257, 0.00166705, 0.00152856, 0.00123917, 0.00111515, 0.000927055, 0.000836107, 0.00091362, 0.000869179, 0.000750326, 0.000792699, 0.00075446, 0.000727588, 0.000681081, 0.0005984, 0.00055706, 0.000478513, 0.000450609, 0.00045991, 0.000389632, 0.000461977, 0.000444408, 0.000430972, 0.000442341, 0.00043924, 0.00043614, 0.000412369, 0.000434073, 0.000398933, 0.000374129, 0.000383431, 0.00037723
|
||||
// ).toDoubleArray(),
|
||||
// arrayOf(
|
||||
// 0.00532256, 0.00162984, 0.000534323, 0.000270779, 0.000134356, 0.000107485, 6.40774e-5, 4.96083e-5, 5.16753e-5, 3.82397e-5, 2.79047e-5, 0.00136009, 0.00631472, 0.00465698, 0.00388702, 0.00243701, 0.00246595, 0.00201017, 0.00176006, 0.0015668, 0.00139317, 0.00116166, 0.000948759, 0.000789599, 0.000763761, 0.000781331, 0.00073689, 0.000707952, 0.000668679, 0.000672813, 0.000614936, 0.000553959, 0.000528122, 0.000450609, 0.000404101, 0.000402034, 0.000361727, 0.000360694, 0.0003979, 0.000344158, 0.000403067, 0.000366895, 0.000330722, 0.000305918, 0.000291449, 0.000355526, 0.00033899, 0.000331756, 0.000283181, 0.000290415
|
||||
// ).toDoubleArray(),
|
||||
// arrayOf(
|
||||
// 0.00434073, 0.00144484, 0.000572562, 0.00025941, 0.000143657, 0.000105418, 7.5446e-5, 5.89099e-5, 4.54743e-5, 3.10052e-5, 2.79047e-5, 0.00128568, 0.00544865, 0.0041981, 0.00339714, 0.00227785, 0.0021652, 0.00185514, 0.00163707, 0.00138283, 0.0012154, 0.0010056, 0.000869179, 0.000727588, 0.000722421, 0.000668679, 0.000642841, 0.000602534, 0.000547758, 0.000532256, 0.000531222, 0.000506418, 0.000401, 0.000422704, 0.000379297, 0.000363794, 0.000310052, 0.000315219, 0.000355526, 0.000327621, 0.000329689, 0.000325554, 0.000298683, 0.000313152, 0.000290415, 0.000266645, 0.000292482, 0.000291449, 0.000293516, 0.000291449
|
||||
// ).toDoubleArray(),
|
||||
// arrayOf(
|
||||
// 0.00363484, 0.00142831, 0.000556026, 0.000249075, 0.000158126, 9.81831e-5, 8.1647e-5, 4.54743e-5, 4.34073e-5, 3.51392e-5, 3.92732e-5, 0.00112445, 0.00500424, 0.00382397, 0.00311292, 0.00202154, 0.00203497, 0.00166808, 0.00145724, 0.00121334, 0.00105728, 0.00087538, 0.000766862, 0.000664545, 0.000610802, 0.000589099, 0.000535356, 0.000482647, 0.000504351, 0.000485748, 0.000435106, 0.000422704, 0.000375163, 0.000385498, 0.000332789, 0.000304884, 0.000304884, 0.00028008, 0.000264578, 0.000290415, 0.000253209, 0.000333823, 0.000305918, 0.000272846, 0.000274913, 0.000253209, 0.000242874, 0.000254243, 0.000219103, 0.000253209
|
||||
// ).toDoubleArray(),
|
||||
// )
|
||||
private val fineInterpolator = BicubicInterpolator().interpolate(x, yFine, gridFine)
|
||||
|
||||
private val yCoarse = arrayOf(50.0, 150.0, 250.0, 350.0, 450.0, 550.0, 650.0, 750.0, 850.0, 950.0, 1050.0, 1150.0, 1250.0, 1350.0, 1450.0, 1550.0, 1650.0, 1750.0, 1850.0, 1950.0, 2050.0, 2150.0, 2250.0, 2350.0, 2450.0, 2550.0, 2650.0, 2750.0, 2850.0, 2950.0, 3050.0, 3150.0, 3250.0, 3350.0, 3450.0, 3550.0, 3650.0, 3750.0, 3850.0, 3950.0, 4050.0, 4150.0, 4250.0, 4350.0, 4450.0, 4550.0, 4650.0, 4750.0, 4850.0, 4950.0, 5050.0, 5150.0, 5250.0, 5350.0, 5450.0, 5550.0, 5650.0, 5750.0, 5850.0, 5950.0, 6050.0, 6150.0, 6250.0, 6350.0, 6450.0, 6550.0, 6650.0, 6750.0, 6850.0, 6950.0, 7050.0, 7150.0, 7250.0, 7350.0, 7450.0).toDoubleArray()
|
||||
private val gridCoarse = arrayOf(
|
||||
arrayOf(
|
||||
0.0001409214424531706, 4.663553147176309e-5, 4.214290009938785e-5, 3.998066051770307e-5, 3.7786768755499566e-5, 3.660970329245982e-5, 3.524668126887261e-5, 3.414874625712965e-5, 3.383420271322492e-5, 3.371550703627973e-5, 3.3759028784492964e-5, 3.415072451841207e-5, 3.402213753505479e-5, 3.4257550627662736e-5, 3.438218108845519e-5, 3.5616616128685105e-5, 3.643561629960688e-5, 3.738122519260352e-5, 3.715372514512525e-5, 3.806768185760317e-5, 3.8342660175859515e-5, 3.944850823273215e-5, 3.9800638741002864e-5, 4.106474770046909e-5, 4.087483461735679e-5, 4.1846160907024886e-5, 4.18679217811315e-5, 4.265329151025214e-5, 4.357713952914216e-5, 4.372748738660606e-5, 4.4942139814011786e-5, 4.5337792070495736e-5, 4.619833572834833e-5, 4.659794450739712e-5, 4.803218393715143e-5, 4.750003165218052e-5, 4.8538618825450886e-5, 4.9371466825349595e-5, 4.958314078256851e-5, 5.003418435496021e-5, 5.103716282514703e-5, 5.1525793361904694e-5, 5.231907613615502e-5, 5.292244582729304e-5, 5.4028293884165686e-5, 5.4445707014756254e-5, 5.511831585077896e-5, 5.5757294245000545e-5, 5.574146815474118e-5, 5.728451195502858e-5, 5.765840333740591e-5, 5.853279482423544e-5, 5.893240360328423e-5, 5.987603423499845e-5, 6.0928469237245756e-5, 6.191759987845562e-5, 6.33775567048814e-5, 6.404620901833927e-5, 6.460407869998164e-5, 6.538747016781985e-5, 6.593544854305014e-5, 6.770203586825097e-5, 6.887316654744346e-5, 6.99711015591864e-5, 7.080790608164996e-5, 7.219862376319104e-5, 7.359329796729697e-5, 7.514623307399647e-5, 7.619668981496135e-5, 7.823825545841853e-5, 3.956522564839492e-9, 0.0, 0.0, 0.0, 0.0
|
||||
).toDoubleArray(),
|
||||
arrayOf(
|
||||
0.00012175040741573717, 4.001626896118572e-5, 3.564072473557997e-5, 3.425335705429034e-5, 3.275136355317907e-5, 3.1344232799506394e-5, 3.056359144037619e-5, 2.9765163316101254e-5, 2.8790843847617227e-5, 2.845289530986719e-5, 2.794103173514637e-5, 2.823747782089202e-5, 2.8245383049845232e-5, 2.8051704940491414e-5, 2.8628786654076275e-5, 2.836198517690519e-5, 2.8808630612761967e-5, 2.95576510560793e-5, 2.9636703345611474e-5, 3.0320505650064762e-5, 3.089363474917301e-5, 3.11624125335824e-5, 3.147269276999618e-5, 3.19410775854743e-5, 3.182645176565265e-5, 3.2520135606297466e-5, 3.291342074672002e-5, 3.4101181396940916e-5, 3.40023660350257e-5, 3.5051785178565293e-5, 3.4765220629011165e-5, 3.5945076050278836e-5, 3.561503274148202e-5, 3.6101204322104875e-5, 3.63857925644207e-5, 3.6994495193818424e-5, 3.70715711761123e-5, 3.769410795617815e-5, 3.864668804504083e-5, 3.854392006864901e-5, 3.919610145728943e-5, 3.909728609537422e-5, 3.998464804537285e-5, 4.0524179921429935e-5, 4.1144740394257484e-5, 4.185028207833212e-5, 4.1988623585013425e-5, 4.2111154633788295e-5, 4.277321755862024e-5, 4.335820450115831e-5, 4.3947144058173e-5, 4.426532952353999e-5, 4.462699374814968e-5, 4.568431812064249e-5, 4.538787203489684e-5, 4.654005915482826e-5, 4.731477159224355e-5, 4.6931367988012514e-5, 4.829699628968079e-5, 4.882467032230804e-5, 4.939582311417799e-5, 4.982270547765172e-5, 4.96764587420172e-5, 5.0923508609387225e-5, 5.153814016049986e-5, 5.176936810738147e-5, 5.232668674858328e-5, 5.294329460693423e-5, 5.433066228822386e-5, 5.4915649230761937e-5, 0.0, 0.0, 0.0, 0.0, 0.0
|
||||
).toDoubleArray(),
|
||||
arrayOf(
|
||||
0.00010693429799211334, 3.4932476321141e-5, 3.133218774507587e-5, 2.964560165403933e-5, 2.8038012569608706e-5, 2.7514657400844436e-5, 2.6586442573224795e-5, 2.562465401779763e-5, 2.5464685079420627e-5, 2.4927505434500324e-5, 2.4040764035348792e-5, 2.434490251078161e-5, 2.3880795096971787e-5, 2.4017064933367013e-5, 2.3772174212888638e-5, 2.4315278633304387e-5, 2.4279729980331718e-5, 2.4305404007478644e-5, 2.431132878297409e-5, 2.4797160373600545e-5, 2.5784622956174634e-5, 2.578857280650493e-5, 2.5587130439659817e-5, 2.6379075430884235e-5, 2.668321390631706e-5, 2.6408699308361457e-5, 2.7269766680366067e-5, 2.7548231128651958e-5, 2.7597604257780663e-5, 2.7609453808771553e-5, 2.8290802990747675e-5, 2.8743060853566604e-5, 2.8484345656932192e-5, 2.9254566471339984e-5, 2.9989238632775107e-5, 3.0005038034096294e-5, 3.0413847543281967e-5, 3.076538422267834e-5, 3.077130899817379e-5, 3.071798601871478e-5, 3.173309755360095e-5, 3.14684575814711e-5, 3.211820796080485e-5, 3.2471719565366366e-5, 3.28212813195976e-5, 3.3684323616767354e-5, 3.327946395791197e-5, 3.408720835045758e-5, 3.4268901465651215e-5, 3.442097070336762e-5, 3.5112194511169485e-5, 3.504504705555445e-5, 3.5402508510446266e-5, 3.640774541950669e-5, 3.618062902551465e-5, 3.673755792208644e-5, 3.642749467115817e-5, 3.7211539961721995e-5, 3.765589812388034e-5, 3.778624318478012e-5, 3.8639410856124134e-5, 3.8499191169398615e-5, 3.8552514148857616e-5, 3.972759462212078e-5, 3.9780917601579784e-5, 4.03556208246379e-5, 4.0912549721209685e-5, 4.0940198673521764e-5, 4.1349008182707435e-5, 4.163339740648877e-5, 0.0, 0.0, 0.0, 0.0, 0.0
|
||||
).toDoubleArray(),
|
||||
arrayOf(
|
||||
9.58347274357985e-5, 3.098604267658998e-5, 2.7853132151449905e-5, 2.656960493189912e-5, 2.518355326470373e-5, 2.44639105071983e-5, 2.3969032884913743e-5, 2.3085745335975572e-5, 2.275845575311009e-5, 2.2642129937513322e-5, 2.1883054700144578e-5, 2.1062859118987704e-5, 2.129156750219491e-5, 2.1037228007076553e-5, 2.117129843861181e-5, 2.097216441530209e-5, 2.1145667326700658e-5, 2.1327056734071892e-5, 2.112200783878267e-5, 2.1498588021477295e-5, 2.1340858102024047e-5, 2.1346772974003546e-5, 2.1912629060042063e-5, 2.1987550771782353e-5, 2.2289209242736686e-5, 2.2764370625089583e-5, 2.283337746485038e-5, 2.2947731656453982e-5, 2.325136175140148e-5, 2.334994295105976e-5, 2.3779756981569852e-5, 2.4178025028189293e-5, 2.438898879545801e-5, 2.444616589125981e-5, 2.4434336147300818e-5, 2.4875979921769903e-5, 2.523284386453287e-5, 2.549112660763756e-5, 2.5698147126919944e-5, 2.625414509299263e-5, 2.6133876029409534e-5, 2.668001587551639e-5, 2.6626782027700926e-5, 2.701322033036137e-5, 2.7192638113739437e-5, 2.7334595041247357e-5, 2.7734834711859967e-5, 2.7801869927627598e-5, 2.816662036636323e-5, 2.8696987220524765e-5, 2.820999609421287e-5, 2.9511267929702143e-5, 2.942451647400286e-5, 2.9073567403219388e-5, 2.9830671016594964e-5, 2.993516708823274e-5, 3.0648894973758665e-5, 3.0305832398947864e-5, 3.10767373802756e-5, 3.151443790675835e-5, 3.1354736363311945e-5, 3.1841727489623835e-5, 3.198959928911125e-5, 3.17234300500339e-5, 3.2579114863067755e-5, 3.2701355550644025e-5, 3.27427596545005e-5, 3.3326360356477506e-5, 3.3975024650228974e-5, 3.388235832255019e-5, 1.380136795215894e-8, 0.0, 0.0, 0.0, 0.0
|
||||
).toDoubleArray(),
|
||||
)
|
||||
|
||||
// arrayOf(
|
||||
// arrayOf(
|
||||
// 0.000736218, 0.000243639, 0.000220168, 0.000208872, 0.00019741, 0.000191261, 0.00018414, 0.000178404, 0.000176761, 0.00017614, 0.000176368, 0.000178414, 0.000177742, 0.000178972, 0.000179623, 0.000186072, 0.000190351, 0.000195291, 0.000194103, 0.000198878, 0.000200314, 0.000206091, 0.000207931, 0.000214535, 0.000213543, 0.000218618, 0.000218731, 0.000222834, 0.000227661, 0.000228446, 0.000234792, 0.000236859, 0.000241355, 0.000243442, 0.000250935, 0.000248155, 0.000253581, 0.000257932, 0.000259038, 0.000261394, 0.000266634, 0.000269187, 0.000273331, 0.000276484, 0.000282261, 0.000284442, 0.000287956, 0.000291294, 0.000291211, 0.000299272, 0.000301226, 0.000305794, 0.000307882, 0.000312811, 0.00031831, 0.000323477, 0.000331104, 0.000334598, 0.000337512, 0.000341605, 0.000344468, 0.000353697, 0.000359815, 0.000365551, 0.000369923, 0.000377188, 0.000384475, 0.000392588, 0.000398076, 0.000408741, 2.06701e-8, 0.0, 0.0, 0.0, 0.0
|
||||
// ).toDoubleArray(),
|
||||
// arrayOf(
|
||||
// 0.000636692, 0.000209264, 0.000186383, 0.000179127, 0.000171273, 0.000163914, 0.000159832, 0.000155656, 0.000150561, 0.000148794, 0.000146117, 0.000147667, 0.000147709, 0.000146696, 0.000149714, 0.000148318, 0.000150654, 0.000154571, 0.000154985, 0.000158561, 0.000161558, 0.000162963, 0.000164586, 0.000167035, 0.000166436, 0.000170063, 0.00017212, 0.000178332, 0.000177815, 0.000183303, 0.000181804, 0.000187974, 0.000186248, 0.000188791, 0.000190279, 0.000193462, 0.000193865, 0.000197121, 0.000202102, 0.000201565, 0.000204975, 0.000204459, 0.000209099, 0.00021192, 0.000215166, 0.000218855, 0.000219579, 0.00022022, 0.000223682, 0.000226741, 0.000229821, 0.000231485, 0.000233376, 0.000238905, 0.000237355, 0.00024338, 0.000247432, 0.000245427, 0.000252568, 0.000255328, 0.000258315, 0.000260547, 0.000259782, 0.000266304, 0.000269518, 0.000270727, 0.000273641, 0.000276866, 0.000284121, 0.00028718, 0.0, 0.0, 0.0, 0.0, 0.0 ).toDoubleArray(),
|
||||
// arrayOf(
|
||||
// 0.000559602, 0.000182807, 0.000163966, 0.00015514, 0.000146727, 0.000143988, 0.000139131, 0.000134097, 0.00013326, 0.000130449, 0.000125809, 0.0001274, 0.000124972, 0.000125685, 0.000124403, 0.000127245, 0.000127059, 0.000127194, 0.000127225, 0.000129767, 0.000134935, 0.000134955, 0.000133901, 0.000138045, 0.000139637, 0.0001382, 0.000142707, 0.000144164, 0.000144422, 0.000144484, 0.00014805, 0.000150417, 0.000149063, 0.000153093, 0.000156938, 0.000157021, 0.00015916, 0.000161, 0.000161031, 0.000160752, 0.000166064, 0.000164679, 0.000168079, 0.000169929, 0.000171758, 0.000176275, 0.000174156, 0.000178383, 0.000179334, 0.00018013, 0.000183747, 0.000183396, 0.000185266, 0.000190527, 0.000189338, 0.000192253, 0.00019063, 0.000194733, 0.000197059, 0.000197741, 0.000202206, 0.000201472, 0.000201751, 0.0002079, 0.000208179, 0.000211187, 0.000214101, 0.000214246, 0.000216385, 0.000217873, 0.0, 0.0, 0.0, 0.0, 0.0
|
||||
// ).toDoubleArray(),
|
||||
// arrayOf(
|
||||
// 0.000502356, 0.000162426, 0.000146003, 0.000139275, 0.00013201, 0.000128237, 0.000125643, 0.000121013, 0.000119298, 0.000118688, 0.000114709, 0.000110409, 0.000111608, 0.000110275, 0.000110978, 0.000109934, 0.000110844, 0.000111794, 0.00011072, 0.000112694, 0.000111867, 0.000111898, 0.000114864, 0.000115257, 0.000116838, 0.000119329, 0.00011969, 0.00012029, 0.000121881, 0.000122398, 0.000124651, 0.000126739, 0.000127845, 0.000128144, 0.000128082, 0.000130397, 0.000132268, 0.000133622, 0.000134707, 0.000137622, 0.000136991, 0.000139854, 0.000139575, 0.000141601, 0.000142541, 0.000143285, 0.000145383, 0.000145735, 0.000147647, 0.000150427, 0.000147874, 0.000154695, 0.00015424, 0.000152401, 0.000156369, 0.000156917, 0.000160659, 0.00015886, 0.000162901, 0.000165196, 0.000164359, 0.000166911, 0.000167686, 0.000166291, 0.000170777, 0.000171417, 0.000171634, 0.000174694, 0.000178094, 0.000177608, 7.23454e-8, 0.0, 0.0, 0.0, 0.0
|
||||
// ).toDoubleArray(),
|
||||
// )
|
||||
|
||||
|
||||
|
||||
private val coarseInterpolator = BicubicInterpolator().interpolate(x, yCoarse, gridCoarse)
|
||||
|
||||
fun value(ei: Double, delta: Double): Double {
|
||||
|
||||
val ei = max(12000.0, min(18000.0, ei))
|
||||
return if (delta < 50.0) {
|
||||
fineInterpolator.value(ei, min(49.0, delta))
|
||||
} else {
|
||||
coarseInterpolator.value(ei, min(6850.0, delta))
|
||||
}
|
||||
|
||||
// return coarseInterpolator.value(ei, max(50.0, min(6850.0, delta)))
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Старый неправильный треппинг (каждая энергия нормирована сама на себя)
|
||||
class TrapInterpolatorIncorrect {
|
||||
private val x = arrayOf(12000.0, 14000.0, 16000.0, 18000.0).toDoubleArray()
|
||||
private val yFine = arrayOf(0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0, 20.0, 21.0, 22.0, 23.0, 24.0, 25.0, 26.0, 27.0, 28.0, 29.0, 30.0, 31.0, 32.0, 33.0, 34.0, 35.0, 36.0, 37.0, 38.0, 39.0, 40.0, 41.0, 42.0, 43.0, 44.0, 45.0, 46.0, 47.0, 48.0, 49.0).toDoubleArray()
|
||||
private val gridFine = arrayOf(
|
||||
|
Loading…
x
Reference in New Issue
Block a user