Exemplo n.º 1
0
def discSol(h):
    
  (p,t,e,z,be)=mesh.generate_shifted_quad(h,1,True)
  
  width=mesh.max_mesh_width()
  nDN=FE.notDiricNodes(p,t,be)
    
  Stiff=FE.stiffness(p,t).tocsr()
 
  Load=FE.load(p,t,3,f)

  N=sp.lil_matrix((nDN.size,p[0:,0].size))

  for j in range(nDN.size):         # Initialisierung von Reduktionsmatrizen, aehnlich der T Matrizen.
    N[j,nDN[j]]=1                 # Dies sind quasi NxN Einheitsmatrizen bei denen die Zeilen entfernt
                                 # sind, deren Indizes mit denen der Boundary Nodes korrelieren.

  
 
  rStiff=N.dot(Stiff).dot(N.transpose()) # Durch Multiplikation der N Matrizen von Links und Rechts werden die

  rLoad=N.dot(Load)

  run=spla.spsolve(rStiff,rLoad)
  un=N.transpose().dot(run)  

 # if h==0.1:
  #    FE.plot(p,t,un)
   #   plt.title('Diskrete Loesung')
    #  plt.show()
      
  return (np.dot(un, Load),width)