ImpactX
Toggle main menu visibility
Loading...
Searching...
No Matches
src
particles
CovarianceMatrix.H
Go to the documentation of this file.
1
/* Copyright 2022-2026 The Regents of the University of California, through Lawrence
2
* Berkeley National Laboratory (subject to receipt of any required
3
* approvals from the U.S. Dept. of Energy). All rights reserved.
4
*
5
* This file is part of ImpactX.
6
*
7
* Authors: Chad Mitchell, Axel Huebl
8
* License: BSD-3-Clause-LBNL
9
*/
10
#ifndef IMPACTX_DISTRIBUTION_COVARIANCE_MATRIX_H
11
#define IMPACTX_DISTRIBUTION_COVARIANCE_MATRIX_H
12
13
#include <
AMReX_REAL.H
>
14
#include <
AMReX_SmallMatrix.H
>
15
16
17
namespace
impactx
18
{
20
using
Map6x6
=
amrex::SmallMatrix<amrex::ParticleReal, 6, 6, amrex::Order::F, 1>
;
21
23
using
CovarianceMatrix
=
Map6x6
;
24
38
inline
Map6x6
symplectic_form
()
39
{
40
Map6x6
Omega =
Map6x6::Zero
();
41
for
(
int
i = 0; i < 3; ++i) {
42
Omega(2*i+1, 2*i+2) = 1;
43
Omega(2*i+2, 2*i+1) = -1;
44
}
45
return
Omega;
46
}
47
48
52
struct
Envelope
53
{
54
CovarianceMatrix
m_env
;
55
amrex::ParticleReal
m_beam_intensity
= 0.0;
56
57
Envelope
() =
default
;
58
59
Envelope
(
60
CovarianceMatrix
const
& env,
61
amrex::ParticleReal
const
beam_intensity
62
)
63
:
m_env
(env),
m_beam_intensity
(
beam_intensity
)
64
{
65
}
66
71
Envelope
&
72
set_beam_intensity
(
amrex::ParticleReal
const
intensity)
73
{
74
m_beam_intensity
= intensity;
75
76
return
*
this
;
77
}
78
83
amrex::ParticleReal
84
beam_intensity
()
const
85
{
86
return
m_beam_intensity
;
87
}
88
93
Envelope
&
94
set_covariance_matrix
(
CovarianceMatrix
const
&
covariance_matrix
)
95
{
96
m_env
=
covariance_matrix
;
97
98
return
*
this
;
99
}
100
103
CovarianceMatrix
104
covariance_matrix
()
const
105
{
106
return
m_env
;
107
}
108
109
};
110
111
112
}
// namespace impactx::distribution
113
114
#endif
// IMPACTX_DISTRIBUTION_COVARIANCE_MATRIX_H
AMReX_REAL.H
AMReX_SmallMatrix.H
amrex::ParticleReal
amrex_particle_real ParticleReal
impactx
Definition
CovarianceMatrixMath.H:25
impactx::Map6x6
amrex::SmallMatrix< amrex::ParticleReal, 6, 6, amrex::Order::F, 1 > Map6x6
Definition
CovarianceMatrix.H:20
impactx::symplectic_form
Map6x6 symplectic_form()
Definition
CovarianceMatrix.H:38
impactx::CovarianceMatrix
Map6x6 CovarianceMatrix
Definition
CovarianceMatrix.H:23
amrex::SmallMatrix
amrex::SmallMatrix< amrex::ParticleReal, 6, 6, amrex::Order::F, 1 >::Zero
static constexpr __host__ __device__ SmallMatrix< T, NRows, NCols, ORDER, StartIndex > Zero() noexcept
impactx::Envelope
Definition
CovarianceMatrix.H:53
impactx::Envelope::m_beam_intensity
amrex::ParticleReal m_beam_intensity
optional: charge in A (for 3D space charge) or current in A (for 2D space charge)
Definition
CovarianceMatrix.H:55
impactx::Envelope::beam_intensity
amrex::ParticleReal beam_intensity() const
Definition
CovarianceMatrix.H:84
impactx::Envelope::Envelope
Envelope()=default
impactx::Envelope::m_env
CovarianceMatrix m_env
the 6x6 beam covariance matrix
Definition
CovarianceMatrix.H:54
impactx::Envelope::set_beam_intensity
Envelope & set_beam_intensity(amrex::ParticleReal const intensity)
Definition
CovarianceMatrix.H:72
impactx::Envelope::set_covariance_matrix
Envelope & set_covariance_matrix(CovarianceMatrix const &covariance_matrix)
Definition
CovarianceMatrix.H:94
impactx::Envelope::Envelope
Envelope(CovarianceMatrix const &env, amrex::ParticleReal const beam_intensity)
Definition
CovarianceMatrix.H:59
impactx::Envelope::covariance_matrix
CovarianceMatrix covariance_matrix() const
Definition
CovarianceMatrix.H:104
Generated by
1.17.0