Home > Src > Elliptic_2d > Schur > schur_preconnl.m

schur_preconnl

PURPOSE ^

SCHUR_PRECONNL: Solves the sistem (P^{NN})^{-1} z=r where P^{NN} is the Neumann-Neumann preconditioner for Schur compl.

SYNOPSIS ^

function [z]=preconnl(r,ne,nvli,novg,D,LGG,Am);

DESCRIPTION ^

 SCHUR_PRECONNL:  Solves the sistem (P^{NN})^{-1} z=r where P^{NN} is the Neumann-Neumann preconditioner for Schur compl.  

   Neumann-Neumann preconditioner for Schur
 Complement    (Algorithm 6.4.3., pag. 398 CHQZ3)
                   Solves the sistem (P^{NN})^{-1} z=r

 Input: r= r.h.s, column array of length ngamma
        ne = number of subdomains
        nvli = column array with number of internal nodes of each
               subdomain
        novg = restriction map from (\cup_i \Omega_i) to \Gamma
                 set in cosnovg.m
        D = diagonal weighting matrix (column array of lenght ngamam)
        LGG = structure with maps from \Gamma_i to \Gamma
                 set in schur_local.m
        Am  = structure of choleski factors of local matrices 
              \tilde A_m= A_mm+ M_m/H_m^2 (H_m is the size of the
              subdomain of index m, while M_m si the local mass matrix)

 Ouput: z = solution, column array of length ngamma

 References: CHQZ2 = C. Canuto, M.Y. Hussaini, A. Quarteroni, T.A. Zang,
                    "Spectral Methods. Fundamentals in Single Domains"
                    Springer Verlag, Berlin Heidelberg New York, 2006.
             CHQZ3 = C. Canuto, M.Y. Hussaini, A. Quarteroni, T.A. Zang,
                    "Spectral Methods. Evolution to Complex Geometries 
                     and Applications to Fluid DynamicsSpectral Methods"
                    Springer Verlag, Berlin Heidelberg New York, 2007.

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 function [z]=preconnl(r,ne,nvli,novg,D,LGG,Am);
0002 % SCHUR_PRECONNL:  Solves the sistem (P^{NN})^{-1} z=r where P^{NN} is the Neumann-Neumann preconditioner for Schur compl.
0003 %
0004 %   Neumann-Neumann preconditioner for Schur
0005 % Complement    (Algorithm 6.4.3., pag. 398 CHQZ3)
0006 %                   Solves the sistem (P^{NN})^{-1} z=r
0007 %
0008 % Input: r= r.h.s, column array of length ngamma
0009 %        ne = number of subdomains
0010 %        nvli = column array with number of internal nodes of each
0011 %               subdomain
0012 %        novg = restriction map from (\cup_i \Omega_i) to \Gamma
0013 %                 set in cosnovg.m
0014 %        D = diagonal weighting matrix (column array of lenght ngamam)
0015 %        LGG = structure with maps from \Gamma_i to \Gamma
0016 %                 set in schur_local.m
0017 %        Am  = structure of choleski factors of local matrices
0018 %              \tilde A_m= A_mm+ M_m/H_m^2 (H_m is the size of the
0019 %              subdomain of index m, while M_m si the local mass matrix)
0020 %
0021 % Ouput: z = solution, column array of length ngamma
0022 %
0023 % References: CHQZ2 = C. Canuto, M.Y. Hussaini, A. Quarteroni, T.A. Zang,
0024 %                    "Spectral Methods. Fundamentals in Single Domains"
0025 %                    Springer Verlag, Berlin Heidelberg New York, 2006.
0026 %             CHQZ3 = C. Canuto, M.Y. Hussaini, A. Quarteroni, T.A. Zang,
0027 %                    "Spectral Methods. Evolution to Complex Geometries
0028 %                     and Applications to Fluid DynamicsSpectral Methods"
0029 %                    Springer Verlag, Berlin Heidelberg New York, 2007.
0030 
0031 %   Written by Paola Gervasio
0032 %   $Date: 2007/04/01$
0033 
0034 
0035 ngamma=length(r);
0036 
0037 z=zeros(ngamma,1);
0038 for ie=1:ne
0039 %
0040 lgamma=LGG{ie};
0041 mn=nvli(ie);
0042 % compute D_ie (restriction of global weighting matrix  D to Gamma_ie)
0043 Die=D(novg(lgamma,ie));
0044 f=zeros(mn,1);
0045 f(lgamma)=Die.*r(novg(lgamma,ie));
0046 R=Am{ie};
0047 zloc=R\(R'\f);
0048 z(novg(lgamma,ie))=z(novg(lgamma,ie))+Die.*zloc(lgamma);
0049 end
0050 return

Generated on Fri 21-Sep-2007 10:07:00 by m2html © 2003