WarpX
Toggle main menu visibility
Loading...
Searching...
No Matches
Source
FieldSolver
ImplicitSolvers
SemiImplicitEM.H
Go to the documentation of this file.
1
/* Copyright 2024 Justin Angus
2
*
3
* This file is part of WarpX.
4
*
5
* License: BSD-3-Clause-LBNL
6
*/
7
#ifndef SEMI_IMPLICIT_EM_H_
8
#define SEMI_IMPLICIT_EM_H_
9
10
#include "
FieldSolver/ImplicitSolvers/WarpXSolverVec.H
"
11
12
#include <
AMReX_Array.H
>
13
#include <
AMReX_MultiFab.H
>
14
#include <
AMReX_REAL.H
>
15
16
#include "
ImplicitSolver.H
"
17
41
42
class
SemiImplicitEM
:
public
ImplicitSolver
43
{
44
public
:
45
46
SemiImplicitEM
() =
default
;
47
48
~SemiImplicitEM
()
override
=
default
;
49
50
// Prohibit Move and Copy operations
51
SemiImplicitEM
(
const
SemiImplicitEM
&) =
delete
;
52
SemiImplicitEM
&
operator=
(
const
SemiImplicitEM
&) =
delete
;
53
SemiImplicitEM
(
SemiImplicitEM
&&) =
delete
;
54
SemiImplicitEM
&
operator=
(
SemiImplicitEM
&&) =
delete
;
55
56
void
Define
(
WarpX
* a_WarpX,
bool
a_from_restart)
override
;
57
58
void
PrintParameters
()
const override
;
59
60
int
OneStep
(
amrex::Real
start_time,
61
amrex::Real
a_dt,
62
int
a_step)
override
;
63
64
void
ComputeRHS
(
WarpXSolverVec
& a_RHS,
65
const
WarpXSolverVec
& a_E,
66
amrex::Real
start_time,
67
int
a_nl_iter,
68
bool
a_from_jacobian )
override
;
69
70
// This parameter is used for the time-step fraction in the PC for implicit
71
// treatment of light waves in the curl-curl MLMG solver.
72
// This function should return zero if light waves are not treated implicitly
73
[[nodiscard]]
amrex::Real
GetThetaForPC
()
const override
{
return
0.; }
74
75
private
:
76
80
WarpXSolverVec
m_E
,
m_Eold
;
81
82
};
83
84
#endif
AMReX_Array.H
AMReX_MultiFab.H
AMReX_REAL.H
ImplicitSolver.H
WarpXSolverVec.H
ImplicitSolver::ImplicitSolver
ImplicitSolver()=default
SemiImplicitEM::SemiImplicitEM
SemiImplicitEM()=default
SemiImplicitEM::m_Eold
WarpXSolverVec m_Eold
Definition
SemiImplicitEM.H:80
SemiImplicitEM::operator=
SemiImplicitEM & operator=(SemiImplicitEM &&)=delete
SemiImplicitEM::GetThetaForPC
amrex::Real GetThetaForPC() const override
Definition
SemiImplicitEM.H:73
SemiImplicitEM::SemiImplicitEM
SemiImplicitEM(SemiImplicitEM &&)=delete
SemiImplicitEM::~SemiImplicitEM
~SemiImplicitEM() override=default
SemiImplicitEM::OneStep
int OneStep(amrex::Real start_time, amrex::Real a_dt, int a_step) override
Advance fields and particles by one time step using the specified implicit algorithm.
Definition
SemiImplicitEM.cpp:60
SemiImplicitEM::Define
void Define(WarpX *a_WarpX, bool a_from_restart) override
Read user-provided parameters that control the implicit solver. Allocate internal arrays for intermed...
Definition
SemiImplicitEM.cpp:15
SemiImplicitEM::SemiImplicitEM
SemiImplicitEM(const SemiImplicitEM &)=delete
SemiImplicitEM::operator=
SemiImplicitEM & operator=(const SemiImplicitEM &)=delete
SemiImplicitEM::m_E
WarpXSolverVec m_E
Solver vectors for E and Eold.
Definition
SemiImplicitEM.H:80
SemiImplicitEM::PrintParameters
void PrintParameters() const override
Definition
SemiImplicitEM.cpp:48
SemiImplicitEM::ComputeRHS
void ComputeRHS(WarpXSolverVec &a_RHS, const WarpXSolverVec &a_E, amrex::Real start_time, int a_nl_iter, bool a_from_jacobian) override
Computes the RHS of the equation corresponding to the specified implicit algorithm....
Definition
SemiImplicitEM.cpp:119
WarpX
Definition
WarpX.H:87
WarpXSolverVec
This is a wrapper class around a Vector of pointers to MultiFabs that contains basic math operators a...
Definition
WarpXSolverVec.H:56
amrex::Real
amrex_real Real
Generated by
1.17.0