Example #1
0
    def on_create_Ke(self, elx, ely, element_type):
        Ke = None
        if self.mesh.shape.element_type == 2:
            Ke = cfc.flw2te(elx, ely, self.mesh.shape.ep, self.mesh.shape.D)
        else:
            Ke = cfc.flw2i4e(elx, ely, self.mesh.shape.ep, self.mesh.shape.D)

        return Ke
    def executeFem(self):
        
        q = self.inputData.q
        B = self.inputData.B
        b = self.inputData.b
        hvec = self.inputData.hvec
        Mvec = self.inputData.Mvec
        kmat = self.inputData.kmat
        rhow = self.inputData.rhow
        hn = self.inputData.hn
        
        coords = self.outputData.coords
        edof = self.outputData.edof
        bdofs = self.outputData.bdofs
        elementmarkers = self.outputData.elementmarkers 
        ex = self.outputData.ex
        ey = self.outputData.ey
        
        ndof=edof.max()
        
        # --- Definera randvillkor
        bc = np.array([],int)
        bcVal = np.array([],int)
        
        bc,bcVal = cfu.applybc(bdofs, bc, bcVal, 3, 0) 
        bc,bcVal = cfu.applybc(bdofs, bc, bcVal, 2, 0)
        
    
        
        if self.inputData.perm == True:
            bc,bcVal = cfu.applybc(bdofs, bc, bcVal, (599+hn), 0)    
        
        # --- Definiera materialmatris       
        ep=[(1)]
        D=np.zeros([2,2]) 
        
        # --- Skapa tom K-matris och f-vektor
        
        K = np.zeros([ndof,ndof])   
        C = np.zeros([ndof,ndof])


        
        for eltopo, elx, ely, elMarker in zip(edof, ex, ey, elementmarkers):
            Dn = elMarker - 100
            D[0,0] = kmat[Dn,0]*60*60*24*365.25
            D[1,1] = kmat[Dn,1]*60*60*24*365.25

            M = Mvec[Dn]
            
            Ke = cfc.flw2te(elx, ely, ep, D)
            Ce = tg.flwtec(elx,ely,rhow,M)
            cfc.assem(eltopo, K, Ke)
            cfc.assem(eltopo,C,Ce)
    
        a0 = tg.strdist(coords, ndof, q, B, b, hvec)
        a0 = np.asmatrix(a0)
        
        self.outputData.K = K
        self.outputData.C = C
        self.outputData.a0 = a0
        self.outputData.bc = bc
        self.outputData.bcVal = bcVal
Example #3
0
                                          maxArea=20.0,
                                          dofsPerNode=1)

print(coords[0:8, :])

# ---- Assemble system matrix

print("Assemblig system matrix...")

nDofs = np.size(dofs)
ex, ey = cfc.coordxtr(edof, coords, dofs)

K = np.zeros([nDofs, nDofs])

for eltopo, elx, ely in zip(edof, ex, ey):
    Ke = cfc.flw2te(elx, ely, ep, D)
    cfc.assem(eltopo, K, Ke)

# ---- Solving equation system

print("Solving equation system...")

f = np.zeros([nDofs, 1])

bc = np.array([], 'i')
bcVal = np.array([], 'i')

bc, bcVal = cfu.applybc(bdofs, bc, bcVal, 2, 30.0)
bc, bcVal = cfu.applybc(bdofs, bc, bcVal, 3, 0.0)

a, r = cfc.solveq(K, f, bc, bcVal)