[enh] update adiabacy

This commit is contained in:
2025-03-13 15:58:55 +03:00
parent d1a7b5367d
commit cb720ca89e
5 changed files with 62 additions and 51 deletions

View File

@@ -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
}

View File

@@ -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()
}

View File

@@ -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)
}

View File

@@ -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()

View File

@@ -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()