Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add external particle fields ohms law hybrid #5275

Open
wants to merge 86 commits into
base: development
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 81 commits
Commits
Show all changes
86 commits
Select commit Hold shift + click to select a range
8eefb02
Adding RZ implementation of external particle field for Ohms Law Hybr…
clarkse Aug 28, 2024
786a5c9
Adding Cartesian implementation.
clarkse Aug 28, 2024
cb99d2a
Adding 3D implementation of analytical particle fields.
clarkse Aug 29, 2024
d866bda
Fixing up external fields for ohms law hybrid solver in RZ and 3D.
clarkse Sep 5, 2024
f82bb97
Fixing bug that leads to garbage E fields.
clarkse Sep 12, 2024
98fd8af
Fixed issue with external parser in HybridPIC model object
clarkse Sep 15, 2024
5f75428
Rebasing to latest development branch
clarkse Sep 16, 2024
36caed1
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Sep 18, 2024
f0ad73a
Removing electron pressure calculation. Fixing merge error.
clarkse Sep 18, 2024
c9dea5d
Merge branch 'add_external_particle_fields_ohms_law_hybrid' of github…
clarkse Sep 18, 2024
1482f8b
Adding grid based split field advance for Hybrid solver to improve pe…
clarkse Sep 24, 2024
ba9678a
Merging new multifab register changes.
clarkse Sep 24, 2024
344a3dd
Merged and refactored external fields to use new MultiFab register in…
clarkse Sep 25, 2024
18ae509
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Sep 25, 2024
71116c7
Fixing hybrid multifab wrapper sin PICMI.
clarkse Sep 25, 2024
d8465b1
Merge branch 'add_external_particle_fields_ohms_law_hybrid' of github…
clarkse Sep 25, 2024
bc127a8
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Sep 25, 2024
8d39c52
Fixing some BC issues.
clarkse Sep 25, 2024
368e8a9
Merge branch 'add_external_particle_fields_ohms_law_hybrid' of github…
clarkse Sep 25, 2024
a546023
Fixed segfault when accessing edge_lengths MF during loading of analy…
clarkse Sep 26, 2024
ae4fc4e
Merge branch 'development' into add_external_particle_fields_ohms_law…
clarkse Sep 26, 2024
e31b639
Adding checks to make sure Hybrid external field loading is skipped w…
clarkse Sep 26, 2024
2ca7190
Adding appropriate flags to mask embedded boundary properly during ex…
clarkse Sep 30, 2024
f1bcd35
Updating so time varying vector potential A is initialized, then B is…
clarkse Oct 22, 2024
7e4f6d6
Merge branch 'add_external_particle_fields_ohms_law_hybrid' of github…
clarkse Oct 22, 2024
5158bbd
Merged with development
clarkse Oct 22, 2024
15caad1
Ironing out a few merge issues.
clarkse Oct 22, 2024
821250e
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 22, 2024
ce99096
Fixing issues with initialization and boundary conditions.
clarkse Oct 23, 2024
5f0ceab
Merge branch 'add_external_particle_fields_ohms_law_hybrid' of github…
clarkse Oct 23, 2024
c810af2
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 23, 2024
b85f868
Refactored EB logic in Hybrid solver to reduce code redundancy.
clarkse Oct 25, 2024
c4b9417
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 25, 2024
1cafe4d
Fixing some CI issues.
clarkse Oct 29, 2024
c73d22c
Adding flags for sometimes unused variables in EB covering calcs.
clarkse Oct 29, 2024
e2730bc
More CI cleanup.
clarkse Oct 30, 2024
aa716ae
Clang-tidy update.
clarkse Oct 30, 2024
eed83ea
Adding nodiscard to EB::Covered::isCovered routine.
clarkse Oct 31, 2024
6bfe0f9
Changing order of attribute list for HIP
clarkse Oct 31, 2024
b724995
Adding ability to add lists of external fields with different timings.
clarkse Nov 6, 2024
859158e
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Nov 6, 2024
db817c1
Updating boundary covering helper to work when compiling with EB, but…
clarkse Nov 7, 2024
bed12a8
Manually resolving merge
clarkse Nov 7, 2024
5a1e8cc
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Nov 7, 2024
6659cdc
Update Python/pywarpx/picmi.py
clarkse Nov 7, 2024
2c0b35f
Update Python/pywarpx/picmi.py
clarkse Nov 7, 2024
e82cccc
Update Source/FieldSolver/FiniteDifferenceSolver/ComputeCurlA.cpp
clarkse Nov 7, 2024
e1180fd
Update Source/FieldSolver/FiniteDifferenceSolver/ComputeCurlA.cpp
clarkse Nov 7, 2024
57df0b2
Update Source/FieldSolver/FiniteDifferenceSolver/ComputeCurlA.cpp
clarkse Nov 7, 2024
dd18deb
Update Source/FieldSolver/FiniteDifferenceSolver/HybridPICSolveE.cpp
clarkse Nov 7, 2024
13ecbce
Update Source/FieldSolver/FiniteDifferenceSolver/HybridPICSolveE.cpp
clarkse Nov 7, 2024
913760c
Redisabling filtering for RZ. Commenting out E field boundary.
clarkse Nov 7, 2024
8d2dc92
Merge branch 'add_external_particle_fields_ohms_law_hybrid' of github…
clarkse Nov 7, 2024
5083cad
Fixing some bugs in RZ mode.
clarkse Nov 20, 2024
0ee42fc
Adding Generic Multifab wrappers to access runtime allocated multifab…
clarkse Dec 7, 2024
c9e9bd1
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Dec 7, 2024
d86c411
Adding Holmstrom vacuum handing and updating external fields to inter…
clarkse Jan 30, 2025
315d053
Merge branch 'add_external_particle_fields_ohms_law_hybrid' of github…
clarkse Jan 30, 2025
0f11b42
Changing evaluation of current to break dependence on standard resist…
clarkse Feb 4, 2025
e55ffdf
Changing Ez calculation for hyper resistivity to allow for z complone…
clarkse Feb 4, 2025
9ba0ac2
Merging development with EB changes.
clarkse Feb 4, 2025
84056ab
Merging latest development branch.
clarkse Feb 5, 2025
8a09559
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Feb 5, 2025
b41e717
Adding benchmarks and cleaning up CI test a bit.
clarkse Feb 6, 2025
a0da96e
Fixing some issues with CI tests.
clarkse Feb 6, 2025
d151e96
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Feb 6, 2025
ea55f19
More CI changes.
clarkse Feb 6, 2025
9cb9b0b
Merge branch 'add_external_particle_fields_ohms_law_hybrid' of github…
clarkse Feb 6, 2025
404cdc8
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Feb 6, 2025
aff8938
Changing description in CI test input file for 3d case.
clarkse Feb 6, 2025
41cf2b1
Merge branch 'add_external_particle_fields_ohms_law_hybrid' of github…
clarkse Feb 6, 2025
ef83768
Adding usage documentation to Parameters.rst
clarkse Feb 6, 2025
0aa4144
Adding usage documentation, holmstrom vacuum flag, and updated CI tes…
clarkse Feb 6, 2025
8dd2cfb
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Feb 6, 2025
3ae78aa
Adjusting CI tests and application of external fields in vacuum region.
clarkse Feb 7, 2025
925e065
Merge branch 'add_external_particle_fields_ohms_law_hybrid' of github…
clarkse Feb 7, 2025
e4b285d
Adding check around lookup of external fields to not lookup from regi…
clarkse Feb 7, 2025
066f72a
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Feb 7, 2025
f49494c
Removing typo.
clarkse Feb 7, 2025
dd6f5d4
Fixed bug in EB maksing for field loading for external fields.
clarkse Feb 7, 2025
4904329
Adding directory prefix for file writing to CI tests.
clarkse Feb 7, 2025
c3f40cf
Fixing typo in CI tests.
clarkse Feb 7, 2025
2081e33
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Feb 7, 2025
863b645
Adjusting CI invocation script.
clarkse Feb 7, 2025
55eb2a3
Resetting benchmarks and turning off holmstrom vacuum flag in test. D…
clarkse Feb 7, 2025
cd68984
Updating benchmarks and fixinf clang-tiday issue.
clarkse Feb 10, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions Docs/source/refs.bib
Original file line number Diff line number Diff line change
Expand Up @@ -507,3 +507,13 @@ @article{Rhee1987
url = {https://doi.org/10.1063/1.1139314},
eprint = {https://pubs.aip.org/aip/rsi/article-pdf/58/2/240/19154912/240\_1\_online.pdf},
}

@misc{holmstrom2013handlingvacuumregionshybrid,
title={Handling vacuum regions in a hybrid plasma solver},
author={M. Holmstrom},
year={2013},
eprint={1301.0272},
archivePrefix={arXiv},
primaryClass={physics.space-ph},
url={https://arxiv.org/abs/1301.0272},
}
21 changes: 21 additions & 0 deletions Docs/source/usage/parameters.rst
Original file line number Diff line number Diff line change
Expand Up @@ -2535,6 +2535,27 @@ Maxwell solver: kinetic-fluid hybrid
* ``hybrid_pic_model.substeps`` (`int`) optional (default ``10``)
If ``algo.maxwell_solver`` is set to ``hybrid``, this sets the number of sub-steps to take during the B-field update.

* ``hybrid_pic_model.holmstrom_vacuum_region`` (`bool`) optional (default ``false``)
If ``algo.maxwell_solver`` is set to ``hybrid``, this sets the vacuum region handling of the generalized Ohm's Law to suppress vacuum fluctuations. :cite:t:`param-holmstrom2013handlingvacuumregionshybrid`.

* ``hybid_pic_model.add_external_fields`` (`bool`) optional (default ``false``)
If ``algo.maxwell_solver`` is set to ``hybrid``, this sets the hybrid solver to use split external fields defined in external_vector_potential inputs.

* ``external_vector_potential.fields`` (list of `str`) optional (default ``empty``)
If ``hybid_pic_model.add_external_fields`` is set to ``true``, this adds a list names for external time varying vector potentials to be added to hybrid solver.

* ``external_vector_potential.<field name>.read_from_file`` (`bool`) optional (default ``false``)
If ``hybid_pic_model.add_external_fields`` is set to ``true``, this flag determines whether to load an external field or use an implcit function to evaluate teh time varying field.

* ``external_vector_potential.<field name>.path`` (`str`) optional (default ``""``)
If ``external_vector_potential.<field name>.read_from_file`` is set to ``true``, sets the path to an OpenPMD file that can be loaded externally in :math:`weber/m`.

* ``external_vector_potential.<field name>.A[x,y,z]_external_grid_function(x,y,z)`` (`str`) optional (default ``"0"``)
If ``external_vector_potential.<field name>.read_from_file`` is set to ``false``, Sets the external vector potential to be populated by an implicit function (on the grid) in :math:`weber/m`.

* ``external_vector_potential.<field name>.A_time_external_grid_function(t)`` (`str`) optional (default ``"1"``)
This sets the relative strength of the external vector potential by a dimensionless implicit time function, which can compute the external B fields and E fields based on the value and first time derivative of the function.

.. note::

Based on results from :cite:t:`param-Stanier2020` it is recommended to use
Expand Down
1 change: 1 addition & 0 deletions Examples/Tests/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ add_subdirectory(nci_fdtd_stability)
add_subdirectory(nci_psatd_stability)
add_subdirectory(nodal_electrostatic)
add_subdirectory(nuclear_fusion)
add_subdirectory(ohm_solver_cylinder_compression)
add_subdirectory(ohm_solver_em_modes)
add_subdirectory(ohm_solver_ion_beam_instability)
add_subdirectory(ohm_solver_ion_Landau_damping)
Expand Down
24 changes: 24 additions & 0 deletions Examples/Tests/ohm_solver_cylinder_compression/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# Add tests (alphabetical order) ##############################################
#

add_warpx_test(
test_3d_ohm_solver_cylinder_compression_picmi # name
3 # dims
2 # nprocs
"inputs_test_3d_ohm_solver_cylinder_compression_picmi.py --test" # inputs
analysis_default_regression.py # analysis
diags/diag1000020 # output
OFF # dependency
)
label_warpx_test(test_3d_ohm_solver_cylinder_compression_picmi slow)

add_warpx_test(
test_rz_ohm_solver_cylinder_compression_picmi # name
RZ # dims
2 # nprocs
"inputs_test_rz_ohm_solver_cylinder_compression_picmi.py --test" # inputs
analysis_default_regression.py # analysis
diags/diag1000020 # output
OFF # dependency
)
label_warpx_test(test_rz_ohm_solver_cylinder_compression_picmi slow)
Loading
Loading