Example #1
0
 def volumeStiffness(self):
     ''' The contribution of the volume terms to the stiffness matrix (should be zero if using Trefftz basis functions)'''
     E = pms.ElementMatrices(self.problem.mesh)
     L2K = self.weightedassembly.assemble([[E.I, E.Z],[E.Z, E.Z]])
     H1 = self.volumeassembly.assemble([[E.Z,E.Z],[E.Z, E.I]])
     
     AJ = pms.AveragesAndJumps(self.problem.mesh)
     B = pms.sumfaces(self.problem.mesh, self.internalassembly.assemble([[AJ.Z,AJ.Z],[AJ.I,AJ.Z]]))
     
     return H1 - L2K - B   
Example #2
0
 def internalStiffness(self):
     ''' The contribution of the internal faces to the stiffness matrix'''
     jk = 1j * self.problem.k
     AJ = pms.AveragesAndJumps(self.problem.mesh)   
     B = self.problem.mesh.boundary # This is the integration by parts term that generally gets folded into the boundary data, but is more appropriate here
     
     SI = self.internalassembly.assemble([[jk * self.alpha * AJ.JD,   -AJ.AN - B], 
                                         [AJ.AD + B,                -(self.beta / jk) * AJ.JN]])    
     SFSI = pms.sumfaces(self.problem.mesh,SI)
             
     return SFSI
Example #3
0
    def stiffness(self):
        delta = self.delta
        dik = delta / (1j * self.k)
        B = self.B
        
        # The contribution of the boundary conditions
        SB = self.bdyassembly.assemble([[(1-delta) * B, (1-delta)*B],
                              [-dik * B, -dik *B]])
#        SB = self.bdyassembly.assemble([[-(1-delta) * B, (1-delta)*B],
#                              [dik * B, -dik *B]])
        return pms.sumfaces(self.mesh,SB)     
Example #4
0
 def getPerturbation(self):
     return pms.sumfaces(self.mesh, self.internalassembly.assemble([[self.B, self.Z], 
                                                                    [self.B, self.Z]]))