MFEM  v4.6.0
Finite element discretization library
Public Member Functions | List of all members
mfem::WhiteGaussianNoiseDomainLFIntegrator Class Reference

#include <lininteg.hpp>

Inheritance diagram for mfem::WhiteGaussianNoiseDomainLFIntegrator:
[legend]
Collaboration diagram for mfem::WhiteGaussianNoiseDomainLFIntegrator:
[legend]

Public Member Functions

 WhiteGaussianNoiseDomainLFIntegrator (int seed_=0)
 Sets the seed_ of the random number generator. A fixed seed allows for a reproducible sequence of white noise vectors. More...
 
 WhiteGaussianNoiseDomainLFIntegrator (MPI_Comm comm_, int seed_)
 Sets the MPI communicator comm_ and the seed_ of the random number generator. A fixed seed allows for a reproducible sequence of white noise vectors. More...
 
 WhiteGaussianNoiseDomainLFIntegrator (int seed_=0)
 Sets the seed_ of the random number generator. A fixed seed allows for a reproducible sequence of white noise vectors. More...
 
void SetSeed (int seed)
 Sets/resets the seed of the random number generator. More...
 
virtual void AssembleRHSElementVect (const FiniteElement &el, ElementTransformation &Tr, Vector &elvect)
 
void SaveFactors (int NE)
 Saves the lower triangular matrices in the element-wise Cholesky decomposition. The parameter NE should be the number of elements in the mesh. More...
 
void ResetFactors (int NE)
 Resets the array of saved lower triangular Cholesky decomposition matrices. The parameter NE should be the number of elements in the mesh. More...
 
 ~WhiteGaussianNoiseDomainLFIntegrator ()
 
virtual void AssembleRHSElementVect (const FiniteElement &el, ElementTransformation &Tr, Vector &elvect)=0
 
virtual void AssembleRHSElementVect (const FiniteElement &el, FaceElementTransformations &Tr, Vector &elvect)
 
virtual void AssembleRHSElementVect (const FiniteElement &el1, const FiniteElement &el2, FaceElementTransformations &Tr, Vector &elvect)
 
- Public Member Functions inherited from mfem::LinearFormIntegrator
virtual bool SupportsDevice () const
 Method probing for assembly on device. More...
 
virtual void AssembleDevice (const FiniteElementSpace &fes, const Array< int > &markers, Vector &b)
 Method defining assembly on device. More...
 
virtual void AssembleRHSElementVect (const FiniteElement &el, FaceElementTransformations &Tr, Vector &elvect)
 
virtual void AssembleRHSElementVect (const FiniteElement &el1, const FiniteElement &el2, FaceElementTransformations &Tr, Vector &elvect)
 
virtual void SetIntRule (const IntegrationRule *ir)
 
const IntegrationRuleGetIntRule ()
 
virtual ~LinearFormIntegrator ()
 

Additional Inherited Members

- Protected Member Functions inherited from mfem::LinearFormIntegrator
 LinearFormIntegrator (const IntegrationRule *ir=NULL)
 
- Protected Attributes inherited from mfem::LinearFormIntegrator
const IntegrationRuleIntRule
 

Detailed Description

Class for spatial white Gaussian noise integration.

The target problem is the linear SPDE a(u,v) = F(v) with F(v) := <Ẇ,v>, where Ẇ is spatial white Gaussian noise. When the Galerkin method is used to discretize this problem into a linear system of equations Ax = b, the RHS is a Gaussian random vector b~N(0,M) whose covariance matrix is the same as the mass matrix M_ij = (v_i,v_j). This property can be ensured if b = H w, where HHᵀ = M and each component w_i~N(0,1).

There is much flexibility in how we may wish to define H. In this PR, we define H = Pᵀ diag(L_e), where P is the local-to-global dof assembly matrix and diag(L_e) is a block-diagonal matrix with L_e L_eᵀ = M_e, where M_e is the element mass matrix for element e. A straightforward computation shows that HHᵀ = Pᵀ diag(M_e) P = M, as necessary.

Definition at line 627 of file lininteg.hpp.

Constructor & Destructor Documentation

◆ WhiteGaussianNoiseDomainLFIntegrator() [1/3]

mfem::WhiteGaussianNoiseDomainLFIntegrator::WhiteGaussianNoiseDomainLFIntegrator ( int  seed_ = 0)
inline

Sets the seed_ of the random number generator. A fixed seed allows for a reproducible sequence of white noise vectors.

Definition at line 645 of file lininteg.hpp.

◆ WhiteGaussianNoiseDomainLFIntegrator() [2/3]

mfem::WhiteGaussianNoiseDomainLFIntegrator::WhiteGaussianNoiseDomainLFIntegrator ( MPI_Comm  comm_,
int  seed_ 
)
inline

Sets the MPI communicator comm_ and the seed_ of the random number generator. A fixed seed allows for a reproducible sequence of white noise vectors.

Definition at line 654 of file lininteg.hpp.

◆ WhiteGaussianNoiseDomainLFIntegrator() [3/3]

mfem::WhiteGaussianNoiseDomainLFIntegrator::WhiteGaussianNoiseDomainLFIntegrator ( int  seed_ = 0)
inline

Sets the seed_ of the random number generator. A fixed seed allows for a reproducible sequence of white noise vectors.

Definition at line 666 of file lininteg.hpp.

◆ ~WhiteGaussianNoiseDomainLFIntegrator()

mfem::WhiteGaussianNoiseDomainLFIntegrator::~WhiteGaussianNoiseDomainLFIntegrator ( )
inline

Definition at line 710 of file lininteg.hpp.

Member Function Documentation

◆ AssembleRHSElementVect() [1/4]

virtual void mfem::LinearFormIntegrator::AssembleRHSElementVect

Given a particular Finite Element and a transformation (Tr) computes the element vector, elvect.

◆ AssembleRHSElementVect() [2/4]

void mfem::LinearFormIntegrator::AssembleRHSElementVect

Definition at line 31 of file lininteg.cpp.

◆ AssembleRHSElementVect() [3/4]

void mfem::LinearFormIntegrator::AssembleRHSElementVect

Definition at line 25 of file lininteg.cpp.

◆ AssembleRHSElementVect() [4/4]

void mfem::WhiteGaussianNoiseDomainLFIntegrator::AssembleRHSElementVect ( const FiniteElement el,
ElementTransformation Tr,
Vector elvect 
)
virtual

Given a particular Finite Element and a transformation (Tr) computes the element vector, elvect.

Implements mfem::LinearFormIntegrator.

Definition at line 1006 of file lininteg.cpp.

◆ ResetFactors()

void mfem::WhiteGaussianNoiseDomainLFIntegrator::ResetFactors ( int  NE)
inline

Resets the array of saved lower triangular Cholesky decomposition matrices. The parameter NE should be the number of elements in the mesh.

Definition at line 695 of file lininteg.hpp.

◆ SaveFactors()

void mfem::WhiteGaussianNoiseDomainLFIntegrator::SaveFactors ( int  NE)
inline

Saves the lower triangular matrices in the element-wise Cholesky decomposition. The parameter NE should be the number of elements in the mesh.

Definition at line 686 of file lininteg.hpp.

◆ SetSeed()

void mfem::WhiteGaussianNoiseDomainLFIntegrator::SetSeed ( int  seed)
inline

Sets/resets the seed of the random number generator.

Definition at line 673 of file lininteg.hpp.


The documentation for this class was generated from the following files: