AMReX-Codes / amrex

AMReX: Software Framework for Block Structured AMR
https://amrex-codes.github.io/amrex
Other
518 stars 339 forks source link

Which examples demonstrate how to set the boundary conditions of the first kind? #3837

Closed ztdepztdep closed 4 months ago

ztdepztdep commented 5 months ago

, I'm looking for examples of how to set a first kind boundary condition (BC) . I've already reviewed the user guide, specifically the section on [Boundary Conditions], but I'm still struggling to understand the process.

Could anyone share code snippets (if applicable) or detailed explanations that demonstrate how to implement a first kind BC ?

drummerdoc commented 5 months ago

Not sure if it's just a language thing. We typically refer to Dirichlet, Neumann and Robin type conditions for fixed value, gradient and linear combination of both, respectively. All of those are supported.

ztdepztdep commented 5 months ago

Not sure if it's just a language thing. We typically refer to Dirichlet, Neumann and Robin type conditions for fixed value, gradient and linear combination of both, respectively. All of those are supported.

ok, i mean Dirichlet bc. I didn't find any examples in the tutorial files.

WeiqunZhang commented 5 months ago
IAMR$ git grep -i "dirichlet"
Docs/sphinx_documentation/source/ProblemSetup.rst:Here we provide examples of both styles. We then discuss how to provide Dirichlet
Docs/sphinx_documentation/source/ProblemSetup.rst:.. _sec:dirichlet:
Docs/sphinx_documentation/source/ProblemSetup.rst:Dirichlet Boundary Conditions
Docs/sphinx_documentation/source/ProblemSetup.rst:IAMR provides the ability to specify constant Dirichlet BCs
Docs/sphinx_documentation/source/ProblemSetup.rst:Users can create more complex Dirichlet boundary condtions by writing
Docs/sphinx_documentation/source/Software.rst:and a special one that indicates external Dirichlet. In the case of Dirichlet,
Docs/sphinx_documentation/source/Software.rst:IAMR provides the ability to specify constant Dirichlet BCs
Docs/sphinx_documentation/source/Software.rst:in the inputs file (see section :ref:`sec:dirichlet`).
Docs/sphinx_documentation/source/Software.rst:Users can create more complex Dirichlet boundary condtions by writing
Docs/sphinx_documentation/source/Software.rst:It is important to note that external Dirichlet boundary data is to be specified as
Docs/sphinx_documentation/source/Software.rst:that are Dirichlet and wall-centered, and the stencils are adjusted accordingly.
Source/Diffusion.cpp:        // for the gradient at Dirichlet boundaries.
Source/Diffusion.cpp:        // gradient at a Dirichlet boundary.
Source/Diffusion.cpp:    // needs to have 1 ghost cell if there is Dirichlet BC.
Source/Diffusion.cpp:    // outside external Dirichlet boundaries. Reset these to zero
Source/Diffusion.cpp:        // Dirichlet bc for the solve. mu_g is the viscosity at cc
Source/Diffusion.cpp:        // mlabec.setEBHomogDirichlet ( mg_level, (*mu_g[lev]) );
Source/Diffusion.cpp:                mlmg_lobc[idim] = LinOpBCType::Dirichlet;
Source/Diffusion.cpp:                mlmg_hibc[idim] = LinOpBCType::Dirichlet;
Source/Diffusion.cpp:                mlmg_lobc[idim] = LinOpBCType::Dirichlet;
Source/Diffusion.cpp:                mlmg_hibc[idim] = LinOpBCType::Dirichlet;
Source/MacProj.cpp:    // macproj.get_linop().setEBDirichlet (int amrlev, const MultiFab& phi, const MultiFab& beta)
Source/MacProj.cpp:    // macproj.get_linop().setEBHomogDirichlet (int amrlev, const MultiFab& beta)
Source/MacProj.cpp:                mlmg_lobc[idim] = MLLinOp::BCType::Dirichlet;
Source/MacProj.cpp:                mlmg_hibc[idim] = MLLinOp::BCType::Dirichlet;
Source/NS_LES.cpp:                mlmg_lobc[idim] = LinOpBCType::Dirichlet;
Source/NS_LES.cpp:                mlmg_hibc[idim] = LinOpBCType::Dirichlet;
Source/NS_bcfill.H:// Fill external Dirichlet boundary for State varibles.
Source/NS_bcfill.H:        // do something for external Dirichlet (BCType::ext_dir)
Source/NS_bcfill.H:// Fill external Dirichlet boundary for velocity
Source/NS_bcfill.H:        // do something for external Dirichlet (BCType::ext_dir)
Source/NS_bcfill.H:        // Homogeneous Dirichlet BC
Source/NS_bcfill.H://     // do something for external Dirichlet (BCType::ext_dir)
Source/NS_bcfill.H:    amrex::Abort("press_fill: Need to write fill for external Dirichlet (BCType::ext_dir)");
Source/NavierStokes.H:    // Hold external Dirichlet BC values
Source/NavierStokesBase.cpp:// Set external dirichlet BC to zero
Source/NavierStokesBase.cpp:// A dummy function because FillPatch requires something to exist for filling dirichlet boundary conditions,
Source/Projection.cpp:            mlmg_lobc[idim] = mlmg_hibc[idim] = LinOpBCType::Dirichlet;
Source/Projection.cpp:                mlmg_lobc[idim] = LinOpBCType::Dirichlet;
Source/Projection.cpp:                mlmg_hibc[idim] = LinOpBCType::Dirichlet;