-
Notifications
You must be signed in to change notification settings - Fork 67
Open
Description
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
Metadata
Metadata
Assignees
Labels
No labels