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
74 void MarkUpdateECellsECT (
75 std::array< std::unique_ptr<amrex::iMultiFab>,3> & eb_update_E,
76 ablastr::fields::VectorField const& edge_lengths );
77
88 void MarkUpdateBCellsECT (
89 std::array< std::unique_ptr<amrex::iMultiFab>,3> & eb_update_B,
90 ablastr::fields::VectorField const& face_areas,
91 ablastr::fields::VectorField const& edge_lengths );
92
101 void MarkExtensionCells(
102 const std::array<amrex::Real,3>& cell_size,
103 std::array< std::unique_ptr<amrex::iMultiFab>, 3 > & flag_info_face,
104 std::array< std::unique_ptr<amrex::iMultiFab>, 3 > & flag_ext_face,
105 const ablastr::fields::VectorField& b_field,
106 const ablastr::fields::VectorField& face_areas,
107 const ablastr::fields::VectorField& edge_lengths,
108 const ablastr::fields::VectorField& area_mod);
109
114 void ComputeEdgeLengths (
115 ablastr::fields::VectorField& edge_lengths,
116 const amrex::EBFArrayBoxFactory& eb_fact);
121 void ComputeFaceAreas (
123 const amrex::EBFArrayBoxFactory& eb_fact);
124
128 void ScaleEdges (
129 ablastr::fields::VectorField& edge_lengths,
130 const std::array<amrex::Real,3>& cell_size);
134 void ScaleAreas (
136 const std::array<amrex::Real,3>& cell_size);
137}
138
139#endif
140
141#endif //WARPX_EMBEDDED_BOUNDARY_EMBEDDED_BOUNDARY_H_
std::array< amrex::MultiFab *, 3 > VectorField
Definition MultiFabRegister.H:191