feat(poly): added NonlinearPowerIntegrator and PolytropeOperator
A custom integrator is required to handle the theta^n term in the lane emden equation, that is written as NonlinearPowerIntegrator which is a mfem::NonlinearFormIntegrator and defines methods to assemble its element vector (function value) and element gradient matrix (jacobian). This is then, along with built in mfem vectors for M Q and D, incorporated into the PolytropeOperator which defines methods for Mult (calculate the residuals of the variational form) and GetGradient (find the jacobian of the system)
This commit is contained in:
@@ -1,24 +1,48 @@
|
||||
# ***********************************************************************
|
||||
#
|
||||
# Copyright (C) 2025 -- The 4D-STAR Collaboration
|
||||
# File Author: Emily Boudreaux
|
||||
# Last Modified: March 19, 2025
|
||||
#
|
||||
# 4DSSE is free software; you can use it and/or modify
|
||||
# it under the terms and restrictions the GNU General Library Public
|
||||
# License version 3 (GPLv3) as published by the Free Software Foundation.
|
||||
#
|
||||
# 4DSSE is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
# See the GNU Library General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Library General Public License
|
||||
# along with this software; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
#
|
||||
# *********************************************************************** #
|
||||
polyutils_sources = files(
|
||||
'private/polyIO.cpp',
|
||||
'private/polyMFEMUtils.cpp'
|
||||
'private/integrators.cpp',
|
||||
'private/operator.cpp'
|
||||
)
|
||||
|
||||
polyutils_headers = files(
|
||||
'public/polyIO.h',
|
||||
'public/polyMFEMUtils.h'
|
||||
)
|
||||
dependencies = [
|
||||
mfem_dep,
|
||||
macros_dep,
|
||||
probe_dep,
|
||||
quill_dep,
|
||||
config_dep,
|
||||
types_dep,
|
||||
]
|
||||
|
||||
libpolyutils = static_library('polyutils',
|
||||
polyutils_sources,
|
||||
include_directories : include_directories('.'),
|
||||
include_directories : include_directories('./public'),
|
||||
cpp_args: ['-fvisibility=default'],
|
||||
dependencies: [mfem_dep],
|
||||
dependencies: dependencies,
|
||||
install: true
|
||||
)
|
||||
|
||||
libpolyutils_dep = declare_dependency(
|
||||
include_directories : include_directories('.'),
|
||||
polyutils_dep = declare_dependency(
|
||||
include_directories : include_directories('./public'),
|
||||
link_with : libpolyutils,
|
||||
sources : polyutils_sources,
|
||||
dependencies : [mfem_dep]
|
||||
dependencies : dependencies
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user