WarpX
Loading...
Searching...
No Matches
EmbeddedBoundaryInit.H
Go to the documentation of this file.
1/* Copyright 2021-2025 Lorenzo Giacomel, Luca Fedeli
2 *
3 * This file is part of WarpX.
4 *
5 * License: BSD-3-Clause-LBNL
6 */
7
8#ifndef WARPX_EMBEDDED_BOUNDARY_EMBEDDED_BOUNDARY_INIT_H_
9#define WARPX_EMBEDDED_BOUNDARY_EMBEDDED_BOUNDARY_INIT_H_
10
11#include "Enabled.H"
12
13#ifdef AMREX_USE_EB
14
16
17#include <AMReX_EBFabFactory.H>
18#include <AMReX_iMultiFab.H>
19#include <AMReX_Periodicity.H>
20#include <AMReX_REAL.H>
21
22#include <array>
23
24namespace warpx::embedded_boundary
25{
26
40 void MarkReducedShapeCells (
41 std::unique_ptr<amrex::iMultiFab> & eb_reduce_particle_shape,
42 amrex::EBFArrayBoxFactory const & eb_fact,
43 int particle_shape_order,
44 const amrex::Periodicity& periodicity);
45
59 void MarkUpdateCellsStairCase (
60 std::array< std::unique_ptr<amrex::iMultiFab>,3> & eb_update,
61 ablastr::fields::VectorField const & field,
62 amrex::EBFArrayBoxFactory const & eb_fact,
63 const amrex::Periodicity& periodicity );
64
75 void MarkUpdateECellsECT (
76 std::array< std::unique_ptr<amrex::iMultiFab>,3> & eb_update_E,
77 ablastr::fields::VectorField const& edge_lengths );
78
89 void MarkUpdateBCellsECT (
90 std::array< std::unique_ptr<amrex::iMultiFab>,3> & eb_update_B,
91 ablastr::fields::VectorField const& face_areas,
92 ablastr::fields::VectorField const& edge_lengths );
93
102 void MarkExtensionCells(
103 const std::array<amrex::Real,3>& cell_size,
104 std::array< std::unique_ptr<amrex::iMultiFab>, 3 > & flag_info_face,
105 std::array< std::unique_ptr<amrex::iMultiFab>, 3 > & flag_ext_face,
106 const ablastr::fields::VectorField& b_field,
107 const ablastr::fields::VectorField& face_areas,
108 const ablastr::fields::VectorField& edge_lengths,
109 const ablastr::fields::VectorField& area_mod);
110
115 void ComputeEdgeLengths (
116 ablastr::fields::VectorField& edge_lengths,
117 const amrex::EBFArrayBoxFactory& eb_fact);
122 void ComputeFaceAreas (
124 const amrex::EBFArrayBoxFactory& eb_fact);
125
129 void ScaleEdges (
130 ablastr::fields::VectorField& edge_lengths,
131 const std::array<amrex::Real,3>& cell_size);
135 void ScaleAreas (
137 const std::array<amrex::Real,3>& cell_size);
138}
139
140#endif
141
142#endif //WARPX_EMBEDDED_BOUNDARY_EMBEDDED_BOUNDARY_H_
std::array< amrex::MultiFab *, 3 > VectorField
Definition MultiFabRegister.H:201