kmath dev-10
This commit is contained in:
parent
a1dea9cac9
commit
2f3e9357ff
@ -13,6 +13,7 @@ import space.kscience.kmath.functions.UnivariateFunction
|
|||||||
import space.kscience.kmath.functions.value
|
import space.kscience.kmath.functions.value
|
||||||
import space.kscience.kmath.integration.GaussIntegrator
|
import space.kscience.kmath.integration.GaussIntegrator
|
||||||
import space.kscience.kmath.integration.integrate
|
import space.kscience.kmath.integration.integrate
|
||||||
|
import space.kscience.kmath.integration.value
|
||||||
import space.kscience.kmath.misc.Symbol
|
import space.kscience.kmath.misc.Symbol
|
||||||
import space.kscience.kmath.misc.symbol
|
import space.kscience.kmath.misc.symbol
|
||||||
import space.kscience.kmath.operations.DoubleField
|
import space.kscience.kmath.operations.DoubleField
|
||||||
@ -273,7 +274,7 @@ public class NumassTransmission(
|
|||||||
val res = { x: Double ->
|
val res = { x: Double ->
|
||||||
integrator.integrate(5.0..margin) { y ->
|
integrator.integrate(5.0..margin) { y ->
|
||||||
loss(x - y) * singleScatterFunction(y)
|
loss(x - y) * singleScatterFunction(y)
|
||||||
}
|
}.value
|
||||||
}
|
}
|
||||||
|
|
||||||
return res.cache(0.0..margin, 200)
|
return res.cache(0.0..margin, 200)
|
||||||
@ -389,7 +390,7 @@ public class NumassTransmission(
|
|||||||
val cutoff = 25.0
|
val cutoff = 25.0
|
||||||
//caclulating lorentz integral analythically
|
//caclulating lorentz integral analythically
|
||||||
val tailNorm = (atan((ionPos - cutoff) * 2.0 / ionW) + 0.5 * PI) * ionW / 2.0
|
val tailNorm = (atan((ionPos - cutoff) * 2.0 / ionW) + 0.5 * PI) * ionW / 2.0
|
||||||
val norm: Double = integrator.integrate(range = 0.0..cutoff, function = func) + tailNorm
|
val norm: Double = integrator.integrate(range = 0.0..cutoff, function = func).value + tailNorm
|
||||||
return { e -> func(e) / norm }
|
return { e -> func(e) / norm }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -15,6 +15,7 @@ import inr.numass.models.sterile.NumassTransmission.Companion.trap
|
|||||||
import ru.inr.mass.models.*
|
import ru.inr.mass.models.*
|
||||||
import space.kscience.kmath.expressions.derivative
|
import space.kscience.kmath.expressions.derivative
|
||||||
import space.kscience.kmath.integration.integrate
|
import space.kscience.kmath.integration.integrate
|
||||||
|
import space.kscience.kmath.integration.integrator
|
||||||
import space.kscience.kmath.integration.value
|
import space.kscience.kmath.integration.value
|
||||||
import space.kscience.kmath.misc.Symbol
|
import space.kscience.kmath.misc.Symbol
|
||||||
import space.kscience.kmath.operations.DoubleField
|
import space.kscience.kmath.operations.DoubleField
|
||||||
@ -91,7 +92,7 @@ public class SterileNeutrinoSpectrum(
|
|||||||
// getHighDensityIntegrator()
|
// getHighDensityIntegrator()
|
||||||
// }
|
// }
|
||||||
|
|
||||||
return DoubleField.integrate(u..eMax) { eIn ->
|
return DoubleField.integrator.integrate(u..eMax) { eIn ->
|
||||||
sumByFSS(eIn, sourceFunction, arguments) * transResFunction(eIn, u, arguments)
|
sumByFSS(eIn, sourceFunction, arguments) * transResFunction(eIn, u, arguments)
|
||||||
}.value ?: error("Integration failed")
|
}.value ?: error("Integration failed")
|
||||||
}
|
}
|
||||||
@ -125,10 +126,9 @@ public class SterileNeutrinoSpectrum(
|
|||||||
val integrand = { eOut: Double -> transFunc(eIn, eOut, arguments) * resolution(eOut, u, arguments) }
|
val integrand = { eOut: Double -> transFunc(eIn, eOut, arguments) * resolution(eOut, u, arguments) }
|
||||||
|
|
||||||
val border = u + 30
|
val border = u + 30
|
||||||
val firstPart = DoubleField.integrate(u..min(eIn, border), function = integrand).value
|
val firstPart = DoubleField.integrator.integrate(u..min(eIn, border), function = integrand).value
|
||||||
?: error("Integration failed")
|
|
||||||
val secondPart: Double = if (eIn > border) {
|
val secondPart: Double = if (eIn > border) {
|
||||||
DoubleField.integrate(border..eIn, function = integrand).value ?: error("Integration failed")
|
DoubleField.integrator.integrate(border..eIn, function = integrand).value
|
||||||
} else {
|
} else {
|
||||||
0.0
|
0.0
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user