Hi all,
I have been trying to implement a PWMatrixCoefficient but I am having trouble with the interface (also couldn't find an example for this). The goal is to assign a MatrixConstantCoefficient per mesh attribute.
In normal MFEM (C++) this is done by creating an Array Array<MatrixCoefficient *> coefs(0); and then assigning the matrix coefficients. I thought that PyMFEM can interpret normal lists of tuples as list-equivalents, i.e., I tried something like this:
sigma_all_coefs = []
sigma_attr = mfem.intArray(max_attr)
for ti,tensor in enumerate(sigma_all):
# just for testing
temp = mfem.DenseMatrix(dim)
temp.Assign(0.0)
# add matrix coefficient to list
sigma_all_coefs.append(mfem.MatrixConstantCoefficient(temp) )
sigma_attr[ti] = ti+1
# Create PW Matrix Coefficient
sigmaCoef = mfem.PWMatrixCoefficient(dim, sigma_attr, sigma_all_coefs, False)
which fails when calling the mfem.PWMatrixCoefficient constructor. Also tried another approach:
# Create PW Matrix Coefficient
sigmaCoef = mfem.PWMatrixCoefficient(dim, False)
for ti, tensor in enumerate(sigma_all):
# Set coefficient
sigmaCoef.UpdateCoefficient( ti+1, mfem.MatrixConstantCoefficient( mfem.DenseMatrix(tensor) ) )
which fails when attempting to assemble a bilinear operator, that utilizes the PWMatrixCoefficient.
Any thoughts on how this could be achieved?
Big thanks and warm regards,
Mathias
Hi all,
I have been trying to implement a
PWMatrixCoefficientbut I am having trouble with the interface (also couldn't find an example for this). The goal is to assign aMatrixConstantCoefficientper mesh attribute.In normal MFEM (C++) this is done by creating an Array
Array<MatrixCoefficient *> coefs(0);and then assigning the matrix coefficients. I thought that PyMFEM can interpret normal lists of tuples as list-equivalents, i.e., I tried something like this:which fails when calling the
mfem.PWMatrixCoefficientconstructor. Also tried another approach:which fails when attempting to assemble a bilinear operator, that utilizes the
PWMatrixCoefficient.Any thoughts on how this could be achieved?
Big thanks and warm regards,
Mathias