start of cyl mesh anisotropy

This commit is contained in:
lheagy
2015-02-05 12:44:46 -08:00
parent ca4fd2adf8
commit f8259456d0
2 changed files with 49 additions and 0 deletions
+24
View File
@@ -640,3 +640,27 @@ class CircleMap(IdentityMap):
g4 = a*(-Y + y)*(-sig1 + sig2)/(np.pi*(a**2*(-r + np.sqrt((X - x)**2 + (Y - y)**2))**2 + 1)*np.sqrt((X - x)**2 + (Y - y)**2))
g5 = -a*(-sig1 + sig2)/(np.pi*(a**2*(-r + np.sqrt((X - x)**2 + (Y - y)**2))**2 + 1))
return np.c_[g1,g2,g3,g4,g5]
class AnisotropyMap(IdentityMap):
def __init__(self, mesh, **kwargs):
Utils.setKwargs(self, **kwargs)
self.mesh = mesh
@property
def nP(self):
"""
:rtype: int
:return: number of parameters in the model
"""
return self.mesh.nC*2
@property
def shape(self):
"""
The default shape is (mesh.nC, nP).
:rtype: (int,int)
:return: shape of the operator as a tuple
"""
return (self.mesh.nC*2, self.nP)
+25
View File
@@ -278,6 +278,19 @@ class CylMesh(BaseTensorMesh, InnerProducts, CylView):
# kron3(speye(n[2]), av(n[1]), av(n[0]))), format="csr")
return self._aveE2CC
@property
def aveE2CCV(self):
"Construct the averaging operator on cell edges to cell centers."
if getattr(self, '_aveE2CCV', None) is None:
# The number of cell centers in each direction
n = self.vnC
if self.isSymmetric:
self._aveE2CCV = sp.block_diag((sp.kron(av(n[1]), speye(n[0])),
sp.kron(speye(n[1]), av(n[0]))), format="csr")
else:
raise NotImplementedError('wrapping in the averaging is not yet implemented')
return self._aveE2CCV
@property
def aveF2CC(self):
@@ -295,6 +308,18 @@ class CylMesh(BaseTensorMesh, InnerProducts, CylView):
# kron3(av(n[2]), speye(n[1]), speye(n[0]))), format="csr")
return self._aveF2CC
@property
def aveF2CCV(self):
"Construct the averaging operator on cell faces to cell centers."
if getattr(self, '_aveF2CCV', None) is None:
n = self.vnC
if self.isSymmetric:
self._aveF2CCV = sp.block_diag((sp.kron(speye(n[1]), av(n[0])),
sp.kron(av(n[1]), speye(n[0]))), format="csr")
else:
raise NotImplementedError('wrapping in the averaging is not yet implemented')
return self._aveF2CCV
if __name__ == '__main__':