Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def getStiffnessMatrix(self):
rowptr, colind, nzval = self.jacobian.getCSRrepresentation()
nnz = nzval.shape[-1] # number of non-zero entries in sparse matrix
self.stiffness_matrix_array = nzval.copy()
self.stiffness_matrix = SparseMat(self.nFreeDOF_global[0],
self.nFreeDOF_global[0],
nnz,
self.stiffness_matrix_array,
colind,
rowptr)
cfemIntegrals.zeroJacobian_CSR(self.nNonzerosInJacobian,
self.stiffness_matrix)
self.rdls3p.calculateStiffnessMatrix(
self.u[0].femSpace.elementMaps.psi,
self.u[0].femSpace.elementMaps.grad_psi,
self.mesh.nodeArray,
self.mesh.elementNodesArray,
self.elementQuadratureWeights[('u', 0)],
self.u[0].femSpace.grad_psi,
self.mesh.nElements_global,
self.csrRowIndeces[(0, 0)], self.csrColumnOffsets[(0, 0)],
self.stiffness_matrix)
def getJacobian(self, jacobian):
cfemIntegrals.zeroJacobian_CSR(self.nNonzerosInJacobian, jacobian)
if self.stiffness_matrix is None:
self.getStiffnessMatrix()
self.mcorr3p.calculateJacobian(# element
self.u[0].femSpace.elementMaps.psi,
self.u[0].femSpace.elementMaps.grad_psi,
self.mesh.nodeArray,
self.mesh.elementNodesArray,
self.elementQuadratureWeights[('u', 0)],
self.u[0].femSpace.psi,
self.u[0].femSpace.grad_psi,
self.u[0].femSpace.psi,
self.u[0].femSpace.grad_psi,
# element boundary
self.u[0].femSpace.elementMaps.psi_trace,
def getJacobian(self, jacobian):
cfemIntegrals.zeroJacobian_CSR(self.nNonzerosInJacobian,
jacobian)
if self.nSpace_global == 2:
self.csrRowIndeces[(0, 2)] = self.csrRowIndeces[(0, 1)]
self.csrColumnOffsets[(0, 2)] = self.csrColumnOffsets[(0, 1)]
self.csrRowIndeces[(1, 2)] = self.csrRowIndeces[(0, 1)]
self.csrColumnOffsets[(1, 2)] = self.csrColumnOffsets[(0, 1)]
self.csrRowIndeces[(2, 0)] = self.csrRowIndeces[(1, 0)]
self.csrColumnOffsets[(2, 0)] = self.csrColumnOffsets[(1, 0)]
self.csrRowIndeces[(2, 1)] = self.csrRowIndeces[(1, 0)]
self.csrColumnOffsets[(2, 1)] = self.csrColumnOffsets[(1, 0)]
self.csrRowIndeces[(2, 2)] = self.csrRowIndeces[(1, 0)]
self.csrColumnOffsets[(2, 2)] = self.csrColumnOffsets[(1, 0)]
self.csrColumnOffsets_eb[(0, 2)] = self.csrColumnOffsets[(0, 1)]
self.csrColumnOffsets_eb[(1, 2)] = self.csrColumnOffsets[(0, 1)]
self.csrColumnOffsets_eb[(2, 2)] = self.csrColumnOffsets[(0, 1)]
self.csrColumnOffsets_eb[(2, 0)] = self.csrColumnOffsets[(0, 1)]
def getJacobian(self, jacobian):
cfemIntegrals.zeroJacobian_CSR(self.nNonzerosInJacobian, jacobian)
self.presinit.calculateJacobian( # element
self.u[0].femSpace.elementMaps.psi,
self.u[0].femSpace.elementMaps.grad_psi,
self.mesh.nodeArray,
self.mesh.elementNodesArray,
self.elementQuadratureWeights[('u', 0)],
self.u[0].femSpace.psi,
self.u[0].femSpace.grad_psi,
self.u[0].femSpace.psi,
self.u[0].femSpace.grad_psi,
# element boundary
self.u[0].femSpace.elementMaps.psi_trace,
self.u[0].femSpace.elementMaps.grad_psi_trace,
self.elementBoundaryQuadratureWeights[('u', 0)],
self.u[0].femSpace.psi_trace,
self.u[0].femSpace.grad_psi_trace,
def getJacobian(self, jacobian):
#import superluWrappers
#import numpy
import pdb
cfemIntegrals.zeroJacobian_CSR(self.nNonzerosInJacobian,
jacobian)
# mwf debug
# pdb.set_trace()
# cNCLS3P.calculateJacobian(self.mesh.nElements_global,
self.ncls3p.calculateJacobian( # element
self.u[0].femSpace.elementMaps.psi,
self.u[0].femSpace.elementMaps.grad_psi,
self.mesh.nodeArray,
self.mesh.nodeVelocityArray,
self.MOVING_DOMAIN,
self.mesh.elementNodesArray,
self.elementQuadratureWeights[('u', 0)],
self.u[0].femSpace.psi,
self.u[0].femSpace.grad_psi,
self.u[0].femSpace.psi,
dm = np.ones(self.q[('u', 0)].shape, 'd')
elementMassMatrix = np.zeros((self.mesh.nElements_global,
self.nDOF_test_element[0],
self.nDOF_trial_element[0]), 'd')
cfemIntegrals.updateMassJacobian_weak_lowmem(dm,
self.q[('w', 0)],
self.q[('w*dV_m', 0)],
elementMassMatrix)
self.MC_a = self.nzval.copy()
self.MC_global = SparseMat(self.nFreeDOF_global[0],
self.nFreeDOF_global[0],
self.nnz,
self.MC_a,
self.colind,
self.rowptr)
cfemIntegrals.zeroJacobian_CSR(self.nnz, self.MC_global)
cfemIntegrals.updateGlobalJacobianFromElementJacobian_CSR(self.l2g[0]['nFreeDOF'],
self.l2g[0]['freeLocal'],
self.l2g[0]['nFreeDOF'],
self.l2g[0]['freeLocal'],
self.csrRowIndeces[(0, 0)],
self.csrColumnOffsets[(0, 0)],
elementMassMatrix,
self.MC_global)
self.ML = np.zeros((self.nFreeDOF_global[0],), 'd')
for i in range(self.nFreeDOF_global[0]):
self.ML[i] = self.MC_a[self.rowptr[i]:self.rowptr[i + 1]].sum()
np.testing.assert_almost_equal(self.ML.sum(),
self.mesh.volume,
err_msg="Trace of lumped mass matrix should be the domain volume", verbose=True)
if (self.MassMatrix is None):
rowptr, colind, nzval = self.jacobian.getCSRrepresentation()
self.MassMatrix_a = nzval.copy()
nnz = nzval.shape[-1] # number of non-zero entries in sparse matrix
self.MassMatrix = LinearAlgebraTools.SparseMat(self.nFreeDOF_global[0],
self.nFreeDOF_global[0],
nnz,
self.MassMatrix_a,
colind,
rowptr)
# Lumped mass matrix
self.LumpedMassMatrix = np.zeros(rowptr.size - 1, 'd')
else:
self.LumpedMassMatrix.fill(0.0)
cfemIntegrals.zeroJacobian_CSR(self.nNonzerosInJacobian,
self.MassMatrix)
argsDict = cArgumentsDict.ArgumentsDict()
argsDict["mesh_trial_ref"] = self.u[0].femSpace.elementMaps.psi
argsDict["mesh_grad_trial_ref"] = self.u[0].femSpace.elementMaps.grad_psi
argsDict["mesh_dof"] = self.mesh.nodeArray
argsDict["mesh_l2g"] = self.mesh.elementNodesArray
argsDict["dV_ref"] = self.elementQuadratureWeights[('u', 0)]
argsDict["u_trial_ref"] = self.u[0].femSpace.psi
argsDict["u_grad_trial_ref"] = self.u[0].femSpace.grad_psi
argsDict["u_test_ref"] = self.u[0].femSpace.psi
argsDict["u_grad_test_ref"] = self.u[0].femSpace.grad_psi
argsDict["mesh_trial_trace_ref"] = self.u[0].femSpace.elementMaps.psi_trace
argsDict["mesh_grad_trial_trace_ref"] = self.u[0].femSpace.elementMaps.grad_psi_trace
argsDict["dS_ref"] = self.elementBoundaryQuadratureWeights[('u', 0)]
argsDict["u_trial_trace_ref"] = self.u[0].femSpace.psi_trace
argsDict["u_grad_trial_trace_ref"] = self.u[0].femSpace.grad_psi_trace