Ejemplo n.º 1
0
void EC2D2T3::BEBlocks(size_t            n1,
                       size_t            n2,
                       SpMatrix<real_t>& L,
                       SpMatrix<real_t>& U,
                       SpMatrix<real_t>& D)
{
   real_t aa = -0.5*_ll1;
   if (_ns==_nt) {
      U.add(2*_i1-1,2*_ns-1,aa);
      U.add(2*_i1  ,2*_ns  ,aa);
      U.add(2*_j1-1,2*_ns-1,aa);
      U.add(2*_j1  ,2*_ns  ,aa);
      L.add(2*_ns-1,2*_i1-1,aa);
      L.add(2*_ns  ,2*_i1  ,aa);
      L.add(2*_ns-1,2*_j1-1,aa);
      L.add(2*_ns  ,2*_j1  ,aa);
   }
   real_t d1, d2;
   _Dkl(_N1, _N2, _M1, _M2, d1);
   D.add(2*(_ns+n1)-1,2*(_nt+n2)-1,d1);
   D.add(2*(_ns+n1)  ,2*(_nt+n2)  ,d1);
   if (_ns != _nt) {
      _Lkl(_N1, _N2, _M1, _M2, d1, d2);
      L.add(2*_ns-1,2*_i2-1,d1);
      L.add(2*_ns  ,2*_i2  ,d1);
      L.add(2*_ns-1,2*_j2-1,d2);
      L.add(2*_ns  ,2*_j2  ,d2);
   }
}