[enh] update adiabacy
This commit is contained in:
@@ -1,48 +0,0 @@
|
||||
package ru.inr.mass.scripts
|
||||
|
||||
private val TABLE_X = arrayOf<Double>(
|
||||
3000.0, 3100.0, 3200.0, 3300.0, 3400.0, 3500.0, 3600.0, 3700.0, 3800.0, 3900.0, 4000.0, 4100.0, 4200.0,
|
||||
4210.0, 4400.0, 4500.0, 4600.0, 4700.0, 4800.0, 4900.0, 5000.0, 5100.0, 5200.0, 5300.0, 5400.0, 5500.0,
|
||||
5600.0, 5700.0, 5800.0, 5850.0, 5900.0, 5950.0, 6000.0, 6050.0, 6100.0, 6150.0, 6200.0, 6250.0, 6300.0,
|
||||
6350.0, 6400.0, 6450.0, 6500.0, 6550.0, 6600.0, 6650.0, 6700.0, 6750.0, 6800.0, 6850.0, 6900.0, 6950.0,
|
||||
7000.0, 7050.0, 7100.0, 7150.0, 7200.0, 7250.0, 7300.0, 7350.0, 7400.0, 7450.0, 7500.0, 7550.0, 7600.0,
|
||||
7650.0, 7700.0, 7750.0, 7800.0)
|
||||
|
||||
private val TABLE_Y = arrayOf<Double>(
|
||||
1.00013864040375, 0.99311101436615, 0.990257203578949, 0.994479060173035, 0.992072880268097, 0.990162968635559,
|
||||
0.989075183868408, 0.99011492729187, 0.983498156070709, 0.991690993309021, 0.985046207904816, 0.983466565608978,
|
||||
0.981356799602509, 0.984025597572327, 0.981970727443695, 0.977014005184174, 0.973981201648712, 0.97092479467392,
|
||||
0.965949237346649, 0.967343509197235, 0.969820857048035, 0.97280490398407, 0.964862942695618, 0.96708345413208,
|
||||
0.968482375144959, 0.96562671661377, 0.96340423822403, 0.955135881900787, 0.950935482978821, 0.935285091400147,
|
||||
0.921773135662079, 0.927967965602875, 0.924734711647034, 0.906031787395477, 0.905169427394867, 0.897284090518951,
|
||||
0.883931875228882, 0.87497353553772, 0.862376809120178, 0.845500528812408, 0.823084533214569, 0.814878404140472,
|
||||
0.794394135475159, 0.783127129077911, 0.761884748935699, 0.744905948638916, 0.72154700756073, 0.69835764169693,
|
||||
0.675829291343689, 0.659660696983337, 0.637992024421692, 0.612448275089264, 0.592042982578278, 0.570101141929626,
|
||||
0.537925243377686, 0.523792922496796, 0.498814582824707, 0.479436606168747, 0.461632758378983, 0.441303879022598,
|
||||
0.425816267728806, 0.402952134609222, 0.383262157440186, 0.374637126922607, 0.354630798101425, 0.342853039503098,
|
||||
0.328158438205719, 0.312913507223129, 0.298821419477463)
|
||||
|
||||
fun adiab2024(e: Double, u: Double): Double {
|
||||
val delta = e - u - 200
|
||||
|
||||
if (delta < 3000) {
|
||||
return 1.0
|
||||
}
|
||||
|
||||
var idx = 0
|
||||
while (idx < TABLE_X.size - 2) {
|
||||
if (TABLE_X[idx + 1] > delta)
|
||||
break
|
||||
idx += 1
|
||||
}
|
||||
|
||||
val x1 = TABLE_X[idx]
|
||||
val y1 = TABLE_Y[idx]
|
||||
val x2 = TABLE_X[idx+1]
|
||||
val y2 = TABLE_Y[idx+1]
|
||||
|
||||
val k = (y2 - y1)/(x2 - x1)
|
||||
val b = y2 - k * x2
|
||||
|
||||
return k * delta + b
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
package ru.inr.mass.scripts
|
||||
|
||||
import ru.inr.mass.workspace.buffer
|
||||
import space.kscience.kmath.real.map
|
||||
import space.kscience.kmath.real.step
|
||||
import space.kscience.plotly.*
|
||||
import space.kscience.plotly.models.ScatterMode
|
||||
|
||||
fun main() {
|
||||
|
||||
val e = 18600.0
|
||||
val u = WALL_L..18600.0 step 10.0
|
||||
|
||||
Plotly.page {
|
||||
plot {
|
||||
scatter {
|
||||
name = "Adiabacity Function"
|
||||
mode = ScatterMode.lines
|
||||
x.buffer = u.map {
|
||||
e - it
|
||||
}
|
||||
y.buffer = u.map {
|
||||
adiabacity(e, it)
|
||||
}
|
||||
}
|
||||
}
|
||||
}.makeFile()
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
package ru.inr.mass.scripts
|
||||
|
||||
import org.apache.commons.math3.analysis.interpolation.LinearInterpolator
|
||||
|
||||
// Таблички дал Влад
|
||||
private val TABLE_X = arrayOf<Double>(
|
||||
0.0, 200.0, 300.0, 400.0, 500.0, 600.0, 700.0, 800.0, 900.0, 1000.0, 1100.0, 1200.0, 1300.0, 1400.0, 1500.0, 1600.0, 1700.0, 1800.0, 1900.0, 2000.0, 2100.0, 2200.0, 2300.0, 2400.0, 2500.0, 2600.0, 2700.0, 2800.0, 2900.0, 3000.0, 3100.0, 3200.0, 3300.0, 3400.0, 3500.0, 3600.0, 3700.0, 3800.0, 3900.0, 4000.0, 4100.0, 4200.0, 4210.0, 4400.0, 4500.0, 4600.0, 4700.0, 4800.0, 4900.0, 5000.0, 5100.0, 5200.0, 5300.0, 5400.0, 5500.0, 5600.0, 5700.0, 5800.0, 5850.0, 5900.0, 5950.0, 6000.0, 6050.0, 6100.0, 6150.0, 6200.0, 6250.0, 6300.0, 6350.0, 6400.0, 6450.0, 6500.0, 6550.0, 6600.0, 6650.0, 6700.0, 6750.0, 6800.0, 6850.0, 6900.0, 6950.0, 7000.0, 7050.0, 7100.0, 7150.0, 7200.0, 7250.0, 7300.0, 7350.0, 7400.0, 7450.0, 7500.0, 7550.0, 7600.0, 7650.0, 7700.0, 7750.0, 7800.0, 7850.0, 7900.0, 7950.0, 8000.0, 8050.0, 8100.0, 8150.0, 8200.0, 8250.0, 8300.0, 8350.0, 8400.0, 8450.0, 8500.0, 8550.0, 8600.0, 8650.0, 8700.0, 8750.0, 8800.0, 8850.0, 8900.0, 8950.0, 9000.0,
|
||||
).toDoubleArray()
|
||||
|
||||
private val TABLE_Y = arrayOf<Double>(
|
||||
1.00240290164948, 1.00017845630646, 1.00203716754913, 1.00221610069275, 1.00038015842438, 0.994577169418335, 1.00515520572662, 0.999377489089966, 1.00087404251099, 0.996169149875641, 0.998798131942749, 0.998405337333679, 1.00339663028717, 0.99450033903122, 0.997694253921509, 0.994965016841888, 0.995169341564179, 0.998219728469849, 0.997945725917816, 1.0012059211731, 1.00025320053101, 0.999431014060974, 1.00128185749054, 1.00263059139252, 0.995539963245392, 1.00312459468842, 1.00555884838104, 0.993147969245911, 0.999567568302155, 1.00013864040375, 0.99311101436615, 0.990257203578949, 0.994479060173035, 0.992072880268097, 0.990162968635559, 0.989075183868408, 0.99011492729187, 0.983498156070709, 0.991690993309021, 0.985046207904816, 0.983466565608978, 0.981356799602509, 0.984025597572327, 0.981970727443695, 0.977014005184174, 0.973981201648712, 0.97092479467392, 0.965949237346649, 0.967343509197235, 0.969820857048035, 0.97280490398407, 0.964862942695618, 0.96708345413208, 0.968482375144959, 0.96562671661377, 0.96340423822403, 0.955135881900787, 0.950935482978821, 0.935285091400147, 0.921773135662079, 0.927967965602875, 0.924734711647034, 0.906031787395477, 0.905169427394867, 0.897284090518951, 0.883931875228882, 0.87497353553772, 0.862376809120178, 0.845500528812408, 0.823084533214569, 0.814878404140472, 0.794394135475159, 0.783127129077911, 0.7618847489357, 0.744905948638916, 0.72154700756073, 0.69835764169693, 0.675829291343689, 0.659660696983337, 0.637992024421692, 0.612448275089264, 0.592042982578278, 0.570101141929627, 0.537925243377686, 0.523792922496796, 0.498814582824707, 0.479436606168747, 0.461632758378983, 0.441303879022598, 0.425816267728806, 0.402952134609222, 0.383262157440186, 0.374637126922607, 0.354630798101425, 0.342853039503098, 0.328158438205719, 0.312913507223129, 0.298821419477463, 0.2295962, 0.2083628, 0.1871294, 0.165896, 0.1446626, 0.1234292, 0.1021958, 0.0809623999999998, 0.0597289999999999, 0.0384956000000001, 0.0172621999999998, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0
|
||||
).toDoubleArray()
|
||||
|
||||
private val ADIABACITY_INTERPOLATOR = LinearInterpolator().interpolate(
|
||||
TABLE_X,
|
||||
TABLE_Y
|
||||
)
|
||||
|
||||
fun adiabacity(e: Double, u: Double): Double {
|
||||
val delta = e - u
|
||||
|
||||
if (delta > TABLE_X.last() || delta < 0.0) {
|
||||
error("adiabacity: delta ($delta) out of [0:${TABLE_X.last()}]")
|
||||
}
|
||||
|
||||
if (delta < 3000.0) {
|
||||
return 1.0
|
||||
}
|
||||
|
||||
return ADIABACITY_INTERPOLATOR.value(delta)
|
||||
}
|
||||
@@ -37,7 +37,7 @@ fun main() {
|
||||
adjustX = false,
|
||||
),
|
||||
resolution = NumassResolution(1.7e-4, tailFunction = {
|
||||
e,u -> adiab2024(e,u)
|
||||
e,u -> adiabacity(e,u)
|
||||
})
|
||||
).withNBkg()
|
||||
|
||||
|
||||
@@ -32,7 +32,7 @@ fun main() {
|
||||
adjustX = false,
|
||||
),
|
||||
resolution = NumassResolution(1.7e-4, tailFunction = {
|
||||
e,u -> adiab2024(e,u)
|
||||
e,u -> adiabacity(e,u)
|
||||
})
|
||||
).withNBkg()
|
||||
|
||||
@@ -59,7 +59,7 @@ fun main() {
|
||||
adjustX = false,
|
||||
),
|
||||
resolution = NumassResolution(1.7e-4, tailFunction = {
|
||||
e,u -> adiab2024(e,u)
|
||||
e,u -> adiabacity(e,u)
|
||||
})
|
||||
).withNBkg()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user