seqfeti Class Reference

#include <nseqfeti.h>

List of all members.

Public Member Functions

void assemble_ff (double *rhs)
void assemble_ff (double *rhs)
void assemble_subdom_unknowns (gtopology *top, FILE *out)
void assemble_subdom_unknowns (gtopology *top, FILE *out)
void assemble_subdom_unknowns (gtopology *top, FILE *out)
void boolean_matrix (long sdid, double *a)
void boolean_matrix (long sdid, double *a)
void boolean_matrix (long sdid, double *a)
void coarse_local (long nd, double *lv, double *cv)
void coarse_local (long nd, double *lv, double *cv)
void coarse_local (long nd, double *lv, double *cv)
void define_b (FILE *out)
void define_h (FILE *out)
void det_ndofmax ()
void det_ndofmax ()
void det_ndofmax ()
void dirichletprec (long nd, double *dd, double *pp)
void dirichletprec (long nd, double *dd, double *pp)
void dirichletprec (long nd, double *dd, double *pp)
void evector (FILE *out)
void evector (FILE *out)
void feti_projection (double *v)
void feti_projection (double *v, double *h, double *h1)
void feti_projection (double *v)
void g_matrix (FILE *out)
void g_matrix (FILE *out)
void g_matrixsize (FILE *out)
void g_matrixsize (FILE *out)
void hmatrix (double *h)
void hmatrixsize (FILE *out)
void initiate (seqselnodes *selnodfeti, gtopology *top, FILE *out)
void initiate (seqselnodes *selnodfeti, gtopology *top, FILE *out)
void initiate (seqselnodes *selnodfeti, gtopology *top, FILE *out)
void inverse_matrix_GG (FILE *out)
void inverse_matrix_GG (FILE *out)
void kernel (FILE *out)
void kernel (FILE *out)
void kernel (FILE *out)
void lagrmultdispl (gtopology *top, gmatrix *gm, double *w, double **d, double **ff, double *h, double *h1, FILE *out)
void lagrmultdispl (FILE *out)
void lagrmultnodunknowns (FILE *out)
void local_coarse (long nd, double *lv, double *cv)
void local_coarse (long nd, double *lv, double *cv)
void local_coarse (long nd, double *lv, double *cv)
void lscaling (double *invect, double *outvect, long ndom, FILE *out)
void lscaling (double *invect, double *outvect, long ndom, FILE *out)
void lscaling (double *invect, double *outvect, long ndom, FILE *out)
void lumpedprec (long nd, double *dd, double *pp)
void lumpedprec (long nd, double *dd, double *pp)
void lumpedprec (long nd, double *dd, double *pp)
void matrices_assembl (gmatrix *gm, FILE *out)
void mpcg (FILE *out)
void mpcg (gtopology *top, gmatrix *gm, double *w, double **ff, double *q, double *h, double *h1, FILE *out)
void mpcg (FILE *out)
void mpcg_old (gtopology *top, gmatrix *gm, double *w, double **ff, double *q, double *h, double *h1, FILE *out)
void mpcg_old (gtopology *top, gmatrix *gm, double *w, double **ff, double *q, double *h, double *h1, FILE *out)
void mprcg (gtopology *top, gmatrix *gm, double *lambda, double **ff, double *e, double *g, double *g1, FILE *out)
void mprcg (gtopology *top, gmatrix *gm, double *lambda, double **ff, double *e, double *g, double *g1, FILE *out)
void mprcg (gtopology *top, gmatrix *gm, double *lambda, double **ff, double *e, double *g, double *g1, FILE *out)
void nodalunknowns (double *lhs, FILE *out)
void nodalunknowns (double *lhs, FILE *out)
void print (FILE *out)
void print (FILE *out)
void print (FILE *out)
void qvector (double *q, double **ff)
void qvector (double *q, double **ff)
void qvector (double *q, double **ff)
void read (gtopology *top, XFILE *in)
void read (gtopology *top, XFILE *in)
void read (gtopology *top, XFILE *in)
void read_booldata (XFILE *in)
void read_booldata (XFILE *in)
void read_booldata (XFILE *in)
void scaling (double *invect, double *outvector, long n, FILE *out)
void scaling (double *invect, double *outvector, long n, FILE *out)
void scaling (double *invect, double *outvector, long n, FILE *out)
 seqfeti ()
 seqfeti ()
 seqfeti ()
void solve_system (gtopology *top, gmatrix *gm, double *lhs, double *rhs, FILE *out)
void solve_system (gtopology *top, gmatrix *gm, double *lhs, double *rhs, FILE *out)
void solve_system (gtopology *top, gmatrix *gm, double *lhs, double *rhs, FILE *out)
void subdomain_matrices (gmatrix *gm, FILE *out)
void subdomain_matrices (gmatrix *gm, FILE *out)
void subdomain_matrices (gmatrix *gm, FILE *out)
void vectors_assembl (double *rhs, FILE *out)
 ~seqfeti ()
 ~seqfeti ()
 ~seqfeti ()

Public Attributes

double aerrcg
 attained error
long anicg
 the number of performed iterations in conjugate gradient method
double * b
double ** booldata
long ** booldatac
long ** booldatar
long ** ccn
long ** cndom
long ** cnprec
long ** cpreccn
 cpreccn[i][j]=k - the j-th DOF on the i-th subdomain has local number k
double ** d
long discont
double * e
long ** edofs
long ense
 estimated number of rigid body modes (estimated dimension of the kernel)
double errcg
 required error
fetiimplem fetiimpl
double ** ff
double * g
long gsize
double * h
 array for the compliances in the matrix H
long hsize
double * invgg
double ** jum
 array containing jumps
double * lambda
 array of Lagrange multipliers
double ** lwscalmat
long matassem
long * ncbool
long * ncdofd
long ndofcp
long * ndofmas
long ndofmax
long * ndofprec
 numbers of nodes on subdomains
long nicg
 the maximum number of iterations in conjugate gradient method
long * nlwscalmat
long * nrbmdom
long ns
 the number of subdomains
long * nsid
precondtype prec
 type of preconditioner
densematpsmdm
 matrix in the dense storage scheme (it contains Schur complements which are dense)
long * rbmadr
double ** rbmdom
long ** se
densematsmdm
 subdomain matrices stored in the dense format
symcomprowsmscr
skylinesmsky
 subdomain matrices stored in the skyline storage
skylinesmskyprec
 subdomain matrices stored in the skyline storage used for precondition
storagetype smst
double thresh
 threshold for kernel detection
long vecassem
double * wscalmat
double zero
 computer zero

Detailed Description

class feti deals with the FETI method (Finite Element Tearing and Interconnecting method) this is single-processor implementation, it is different from feti1 in PARGEF which is multi-processor implementation

this class contains three different implementation of the FETI method 1. implementation based on the Boolean matrices, the matrices define ordering of unknowns and multipliers 2. implementation without the Boolean matrices with nonredundant conditions correspondence among nodes is used for deinition of unknowns 3. implementation without the Boolean matrices with redundant conditions correspondence among nodes is used for deinition of unknowns

JK, 21.8.2007

class seqfeti deals with the FETI method (Finite Element Tearing and Interconnecting method) this is single-processor implementation, it is different from feti1 in PARGEF which is multi-processor implementation

this class contains three different implementations of the FETI method 1. implementation based on the Boolean matrices, the matrices define ordering of unknowns and multipliers 2. implementation without the Boolean matrices with nonredundant conditions correspondence among nodes is used for deinition of unknowns 3. implementation without the Boolean matrices with redundant conditions correspondence among nodes is used for deinition of unknowns

JK, 21.8.2007

Definition at line 29 of file nseqfeti.h.


Constructor & Destructor Documentation

seqfeti (  ) 
~seqfeti (  ) 
seqfeti (  ) 
~seqfeti (  ) 
seqfeti (  ) 
~seqfeti (  ) 

Member Function Documentation

void assemble_ff ( double *  rhs  ) 
void assemble_ff ( double *  rhs  ) 

function assembles the right hand sides for subdomains

Parameters:
rhs - array containing the whole vector of the right hand side

29. 7. 2012, JK

Definition at line 2259 of file nseqfeti.cpp.

References cndom, ff, globloc(), ndofmas, and ns.

Referenced by flsubdom::solve_lin_alg_system(), solve_system(), and vectors_assembl().

void assemble_subdom_unknowns ( gtopology top,
FILE *  out 
)
void assemble_subdom_unknowns ( gtopology top,
FILE *  out 
)
void assemble_subdom_unknowns ( gtopology top,
FILE *  out 
)

function assembles list of unknowns belonging to the subdomains

function assembles: sid - node-subdomain correspondence ndofmas - numbers of DOFs on subdomains cndom - list of DOFs on subdomains

Parameters:
top - pointer to topology
out - output file

JK, 21.8.2007

Definition at line 468 of file nseqfeti.cpp.

References cndom, feti_dirichlet, gtopology::give_dof(), gtopology::give_ndofn(), jum, ndofmas, gtopology::nn, seqtop::nnsd, ns, nsid, prec, and gtopology::stop.

Referenced by slesolv::prepare_data().

void boolean_matrix ( long  sdid,
double *  a 
)
void boolean_matrix ( long  sdid,
double *  a 
)
void boolean_matrix ( long  sdid,
double *  a 
)

function assembles the Boolean matrix of one subdomain

Parameters:
sdid - subdomain id
a - array storing the Boolean matrix

JK, 17.2.2009

Definition at line 841 of file nseqfeti.cpp.

References booldata, booldatac, booldatar, ncbool, and ndofmas.

Referenced by coarse_local(), and local_coarse().

void coarse_local ( long  nd,
double *  lv,
double *  cv 
)
void coarse_local ( long  nd,
double *  lv,
double *  cv 
)
void coarse_local ( long  nd,
double *  lv,
double *  cv 
)

function extracts contributions from coarse vector to local vector

Parameters:
nd - domain id (number of required subdomain)
lv - local vector
cv - coarse vector

JK, 14.9.2007

Definition at line 918 of file nseqfeti.cpp.

References addv(), boolean_matrices, boolean_matrix(), ccn, edofs, fetiimpl, mtxv(), ncdofd, ndofcp, ndofmas, nonredundant, nullv(), and redundant.

Referenced by lagrmultdispl(), lagrmultnodunknowns(), mpcg(), and mprcg().

void define_b ( FILE *  out  ) 

function defines the prescribed discontinuities stored in the array b

Parameters:
out - output stream

JK, 3. 8. 2012

Definition at line 1193 of file seqfeti.cpp.

References b.

Referenced by solve_incremental_floating_subdomains().

void define_h ( FILE *  out  ) 

function defines the compliances stored in the array h

Parameters:
out - output stream

JK, 3. 8. 2012

Definition at line 1172 of file seqfeti.cpp.

References h.

Referenced by solve_incremental_floating_subdomains().

void det_ndofmax (  ) 
void det_ndofmax (  ) 
void det_ndofmax (  ) 

function determines ndofmax the variable is used for simple allocation in other functions

JK, 16.9.2007, checked 20.9.2009

Definition at line 429 of file nseqfeti.cpp.

References booldatac, booldatar, boolean_matrices, fetiimpl, ncbool, ndofcp, ndofmas, ndofmax, nonredundant, ns, and redundant.

Referenced by matrices_assembl(), and solve_system().

void dirichletprec ( long  nd,
double *  dd,
double *  pp 
)
void dirichletprec ( long  nd,
double *  dd,
double *  pp 
)
void dirichletprec ( long  nd,
double *  dd,
double *  pp 
)

JK, 7.5.2008

Definition at line 1276 of file nseqfeti.cpp.

References boolean_matrices, cpreccn, d, fetiimpl, densemat::mxv_dm(), ndofmas, ndofprec, nonredundant, p, psmdm, and redundant.

Referenced by mpcg().

void evector ( FILE *  out  ) 
void evector ( FILE *  out  ) 

function assembles vector e

Parameters:
f - right hand side

JK, 16.9.2007

Definition at line 1038 of file nseqfeti.cpp.

References e, ff, gsize, ndofmas, nrbmdom, ns, rbmdom, and ss().

Referenced by flsubdom::solve_lin_alg_system(), solve_system(), and vectors_assembl().

void feti_projection ( double *  v  ) 
void feti_projection ( double *  v,
double *  h,
double *  h1 
)

function computes projection in FETI method v_new = v_old - H . (H^T . H)^{-1} . H^T . v_old function overwrites vector v by projected vector

Parameters:
v - vector
h - matrix H
h1 - matrix (H^T.H)^{-1}
ndofcp,hsize - number of rows and columns of matrix H

ndofcp - number of Lagrange multipliers hsize - total number of all rigid body motions

JK, 16.9.2007

Definition at line 1051 of file oseqfeti.cpp.

References hsize, mtxv(), mxv(), and p.

void feti_projection ( double *  v  ) 

function computes projection in FETI method v_new = v_old - G . (G^T . G)^{-1} . G^T . v_old function overwrites the vector v by the projected vector

Parameters:
v - vector

JK, 16.9.2007

Definition at line 1118 of file nseqfeti.cpp.

References g, gsize, invgg, mtxv(), mxv(), ndofcp, and p.

Referenced by mpcg(), and mprcg().

void g_matrix ( FILE *  out  ) 
void g_matrix ( FILE *  out  ) 

function assembles matrix G columns are RBM after localization

JK, 16.9.2007

Definition at line 1004 of file nseqfeti.cpp.

References g, gsize, local_coarse(), ndofcp, ndofmas, nrbmdom, ns, nullv(), rbmadr, and rbmdom.

Referenced by matrices_assembl(), and solve_system().

void g_matrixsize ( FILE *  out  ) 
void g_matrixsize ( FILE *  out  ) 

function computes size of matrix G

Parameters:
out - output stream

JK, 16.9.2007

Definition at line 975 of file nseqfeti.cpp.

References gsize, nrbmdom, ns, and rbmadr.

Referenced by matrices_assembl(), and solve_system().

void hmatrix ( double *  h  ) 

function assembles matrix H columns are RBM after localization

Parameters:
h - matrix H
rbm - array containing rigid body motions

JK, 16.9.2007

Definition at line 990 of file oseqfeti.cpp.

References hsize, local_coarse(), nrbmdom, nullv(), rbmadr, and rbmdom.

void hmatrixsize ( FILE *  out  ) 

function computes size of matrix H

Parameters:
out - output stream

JK, 16.9.2007

Definition at line 958 of file oseqfeti.cpp.

References hsize, nrbmdom, and rbmadr.

void initiate ( seqselnodes selnodfeti,
gtopology top,
FILE *  out 
)
void initiate ( seqselnodes selnodfeti,
gtopology top,
FILE *  out 
)
void initiate ( seqselnodes selnodfeti,
gtopology top,
FILE *  out 
)

function assembles the following arrays ncdofd - array of numbers of unknowns (DOFs) contributing to the coarse problem wscalmat - edofs - array containing code numbers contributing to the coarse problem ccn - array of coarse code numbers

Parameters:
selnodfeti - pointer to the object containing selected nodes
top - pointer to object with topology
out - output file

JK, 17.9.2007

Definition at line 310 of file nseqfeti.cpp.

References ccn, seqselnodes::cndofmas, edofs, gtopology::give_dof(), gtopology::give_ndofn(), seqselnodes::lndofmas, ncdofd, ndofcp, seqtop::nnsd, ns, seqselnodes::snndofmas, gtopology::stop, seqselnodes::tndofsn, and wscalmat.

Referenced by slesolv::prepare_data().

void inverse_matrix_GG ( FILE *  out  ) 
void inverse_matrix_GG ( FILE *  out  ) 

function computes the inverse matrix to the matrix G^T G

JK, 29. 7. 2012

Definition at line 1061 of file nseqfeti.cpp.

References g, gemp(), gsize, invgg, mtxm(), ndofcp, and zero.

Referenced by matrices_assembl(), and solve_system().

void kernel ( FILE *  out  ) 
void kernel ( FILE *  out  ) 
void kernel ( FILE *  out  ) 

function computes kernel (rigid body modes) of the matrix

JK, 28.8.2007

Definition at line 762 of file nseqfeti.cpp.

References dense_matrix, ense, skyline::ker(), densemat::ker(), ndofmas, nrbmdom, ns, rbmdom, se, skyline_matrix, smdm, smsky, smst, and thresh.

Referenced by matrices_assembl(), and solve_system().

void lagrmultdispl ( gtopology top,
gmatrix gm,
double *  w,
double **  d,
double **  ff,
double *  h,
double *  h1,
FILE *  out 
)

function computes displacements from Lagrange multipliers function is used in FETI method

Parameters:
w - array containing Lagrange multipliers
d - array containing displacements
f - array containing load forces
rbm - array containing rigid body motions
h - matrix H (columns are rigid body motions)
h1 - matrix (H^T . H)^{-1}
ndofcp - number of Lagrange multipliers
hsize - number of columns of matrix H

JK, 16.9.2007

Definition at line 1823 of file oseqfeti.cpp.

References cmulv(), coarse_local(), dense_matrix, g, hsize, jum, skyline::ldl_feti_sky(), local_coarse(), mtxv(), mxv(), ndofmax, nrbmdom, nullv(), rbmadr, rbmdom, se, skyline_matrix, smsky, smst, subv(), and zero.

void lagrmultdispl ( FILE *  out  ) 

function computes displacements from Lagrange multipliers function is used in FETI method

Parameters:
out - output stream

JK, 16.9.2007

Definition at line 2149 of file nseqfeti.cpp.

References cmulv(), coarse_local(), d, dense_matrix, ff, g, gsize, invgg, jum, lambda, skyline::ldl_feti_sky(), local_coarse(), mtxv(), mxv(), ndofcp, ndofmas, ndofmax, nrbmdom, ns, nullv(), rbmadr, rbmdom, se, skyline_matrix, smsky, smst, subv(), and zero.

Referenced by nodalunknowns().

void lagrmultnodunknowns ( FILE *  out  ) 

function computes nodal unknowns from Lagrange multipliers function is used in the FETI method

Parameters:
out - output stream

JK, 16.9.2007

Definition at line 1913 of file seqfeti.cpp.

References b, cmulv(), coarse_local(), dense_matrix, discont, ff, g, h, invgg, lambda, skyline::ldl_feti_sky(), local_coarse(), mtxv(), mxv(), ndofmax, nrbmdom, nullv(), rbmadr, rbmdom, se, skyline_matrix, smsky, smst, subv(), and zero.

void local_coarse ( long  nd,
double *  lv,
double *  cv 
)
void local_coarse ( long  nd,
double *  lv,
double *  cv 
)
void local_coarse ( long  nd,
double *  lv,
double *  cv 
)

function extracts contributions from local vector to coarse vector

Parameters:
nd - domain id (number of required subdomain)
lv - local vector
cv - coarse vector

JK, 14.9.2007

Definition at line 863 of file nseqfeti.cpp.

References addv(), boolean_matrices, boolean_matrix(), ccn, edofs, fetiimpl, mxv(), ncdofd, ndofcp, ndofmas, nonredundant, nullv(), and redundant.

Referenced by g_matrix(), hmatrix(), lagrmultdispl(), lagrmultnodunknowns(), mpcg(), and mprcg().

void lscaling ( double *  invect,
double *  outvect,
long  ndom,
FILE *  out 
)
void lscaling ( double *  invect,
double *  outvect,
long  ndom,
FILE *  out 
)
void lscaling ( double *  invect,
double *  outvect,
long  ndom,
FILE *  out 
)

Definition at line 1205 of file nseqfeti.cpp.

References ccn, lwscalmat, and nlwscalmat.

void lumpedprec ( long  nd,
double *  dd,
double *  pp 
)
void lumpedprec ( long  nd,
double *  dd,
double *  pp 
)
void lumpedprec ( long  nd,
double *  dd,
double *  pp 
)
void matrices_assembl ( gmatrix gm,
FILE *  out 
)

function assembles the matrices G, (G^T.G)^{-1}

Parameters:
gm - matrix of the system
out - output stream

JK, 2. 8. 2012

Definition at line 2037 of file seqfeti.cpp.

References det_ndofmax(), g, g_matrix(), g_matrixsize(), inverse_matrix_GG(), kernel(), matassem, print_err(), subdomain_matrices(), and time.

Referenced by flsubdom::initiation(), and solve_incremental_floating_subdomains().

void mpcg ( FILE *  out  ) 
void mpcg ( gtopology top,
gmatrix gm,
double *  w,
double **  ff,
double *  q,
double *  h,
double *  h1,
FILE *  out 
)

function performs modified conjugate gradient method

Parameters:
w - vector of Lagrange multipliers
ff - vectors of right hand side
h - matrix H
h1 - matrix (H^T.H)^{-1}
ndofcp,hsize - number of rows and columns of matrix H

ndofcp - number of Lagrange multipliers hsize - total number of all rigid body motions

JK, 16.9.2007

Definition at line 1305 of file oseqfeti.cpp.

References aerrcg, anicg, coarse_local(), dense_matrix, dirichletprec(), errcg, feti_dirichlet, feti_lumped, feti_projection(), g, hsize, jum, skyline::ldl_feti_sky(), local_coarse(), lumpedprec(), mxv(), ndofmax, nicg, noprecond, nrbmdom, nullv(), prec, se, skyline_matrix, smsky, smst, ss(), subv(), and zero.

void mpcg ( FILE *  out  ) 

function performs the modified conjugate gradient method

Parameters:
out - output stream

for details se the book J. Kruis: Domain Decomposition Methods for Distributed Computing. Saxe-Coburg Publications, 2006

JK, 16.9.2007, revised 29. 7. 2012

Definition at line 1341 of file nseqfeti.cpp.

References aerrcg, anicg, cmulv(), coarse_local(), d, dense_matrix, e, errcg, feti_projection(), ff, g, gsize, invgg, jum, lambda, skyline::ldl_feti_sky(), local_coarse(), mxv(), ndofcp, ndofmas, ndofmax, nicg, nrbmdom, ns, nullv(), p, print_err(), se, skyline_matrix, smsky, smst, ss(), subv(), and zero.

Referenced by solve_incremental_floating_subdomains(), flsubdom::solve_lin_alg_system(), and solve_system().

void mpcg_old ( gtopology top,
gmatrix gm,
double *  w,
double **  ff,
double *  q,
double *  h,
double *  h1,
FILE *  out 
)
void mpcg_old ( gtopology top,
gmatrix gm,
double *  w,
double **  ff,
double *  q,
double *  h,
double *  h1,
FILE *  out 
)
void mprcg ( gtopology top,
gmatrix gm,
double *  lambda,
double **  ff,
double *  e,
double *  g,
double *  g1,
FILE *  out 
)
void mprcg ( gtopology top,
gmatrix gm,
double *  lambda,
double **  ff,
double *  e,
double *  g,
double *  g1,
FILE *  out 
)
void mprcg ( gtopology top,
gmatrix gm,
double *  lambda,
double **  ff,
double *  e,
double *  g,
double *  g1,
FILE *  out 
)

function performs modified preconditioned reorthonormalized conjugate gradient method

Parameters:
w - vector of Lagrange multipliers
ff - vectors of right hand side
h - matrix H
h1 - matrix (H^T.H)^{-1}
ndofcp,hsize - number of rows and columns of matrix H

ndofcp - number of Lagrange multipliers hsize - total number of all rigid body motions

JK, 5.5.2008

Definition at line 1583 of file oseqfeti.cpp.

References aerrcg, anicg, coarse_local(), dense_matrix, errcg, feti_lumped, feti_projection(), hsize, skyline::ldl_feti_sky(), local_coarse(), lumpedprec(), mxv(), ndofmax, nicg, noprecond, nrbmdom, nullv(), prec, se, skyline_matrix, smsky, smst, ss(), subv(), and zero.

void nodalunknowns ( double *  lhs,
FILE *  out 
)
void nodalunknowns ( double *  lhs,
FILE *  out 
)

function performs modified conjugate gradient method

Parameters:
w - vector of Lagrange multipliers
ff - vectors of right hand side
h - matrix H
h1 - matrix (H^T.H)^{-1}
ndofcp,hsize - number of rows and columns of matrix H

ndofcp - number of Lagrange multipliers hsize - total number of all rigid body motions

JK, 16.9.2007 function performs modified preconditioned reorthonormalized conjugate gradient method

Parameters:
w - vector of Lagrange multipliers
ff - vectors of right hand side
h - matrix H
h1 - matrix (H^T.H)^{-1}
ndofcp,hsize - number of rows and columns of matrix H

ndofcp - number of Lagrange multipliers hsize - total number of all rigid body motions

JK, 5.5.2008 function computes the nodal unknowns on subdomains

Parameters:
lhs - array containing the left hand side

JK, 29. 7. 2012

function performs modified preconditioned reorthonormalized conjugate gradient method

Parameters:
w - vector of Lagrange multipliers
ff - vectors of right hand side
h - matrix H
h1 - matrix (H^T.H)^{-1}
ndofcp,hsize - number of rows and columns of matrix H

ndofcp - number of Lagrange multipliers hsize - total number of all rigid body motions

JK, 5.5.2008 function computes the nodal unknowns on subdomains

Parameters:
lhs - array containing the left hand side
out - output file

JK, 29. 7. 2012

Definition at line 2114 of file nseqfeti.cpp.

References cndom, d, lagrmultdispl(), ndofmas, and ns.

Referenced by solve_incremental_floating_subdomains(), flsubdom::solve_lin_alg_system(), and solve_system().

void print ( FILE *  out  ) 
void print ( FILE *  out  ) 
void print ( FILE *  out  ) 

function prints basic data

Parameters:
out - output file

JK, 24.11.2008

Definition at line 247 of file nseqfeti.cpp.

References ense, errcg, fetiimpl, nicg, ns, prec, and thresh.

Referenced by slesolv::print().

void qvector ( double *  q,
double **  ff 
)
void qvector ( double *  q,
double **  ff 
)
void qvector ( double *  q,
double **  ff 
)

function assembles vector q

Parameters:
q - vector q
rbm - array containing rigid body motions
f - right hand side

JK, 16.9.2007

Definition at line 1020 of file oseqfeti.cpp.

References nrbmdom, rbmdom, and ss().

void read ( gtopology top,
XFILE in 
)
void read ( gtopology top,
XFILE in 
)
void read ( gtopology top,
XFILE in 
)

function reads basic data

Parameters:
top - pointer to general topology
in - input file

JK, 20.11.2007

Definition at line 195 of file nseqfeti.cpp.

References boolean_matrices, gtopology::cngen, ense, errcg, feti_dirichlet, fetiimpl, fetiimplem_kwdset(), nicg, nonredundant, ns, prec, print_err(), redundant, gtopology::rst, thresh, and xfscanf().

Referenced by slesolv::read().

void read_booldata ( XFILE in  ) 
void read_booldata ( XFILE in  ) 
void read_booldata ( XFILE in  ) 

function reads data for construction of Boolean matrices

Parameters:
in - input file

JK, 19.2.2008

Definition at line 269 of file nseqfeti.cpp.

References booldata, booldatac, booldatar, ncbool, ns, and xfscanf().

Referenced by transtop::read(), and mechtop::read().

void scaling ( double *  invect,
double *  outvector,
long  n,
FILE *  out 
)
void scaling ( double *  invect,
double *  outvector,
long  n,
FILE *  out 
)
void scaling ( double *  invect,
double *  outvect,
long  n,
FILE *  out 
)

function obtaines jumps from problem solved

Parameters:
jump - array of jumps

JK, 28.11.2007

Definition at line 1181 of file nseqfeti.cpp.

References wscalmat.

void solve_system ( gtopology top,
gmatrix gm,
double *  lhs,
double *  rhs,
FILE *  out 
)
void solve_system ( gtopology top,
gmatrix gm,
double *  lhs,
double *  rhs,
FILE *  out 
)
void solve_system ( gtopology top,
gmatrix gm,
double *  lhs,
double *  rhs,
FILE *  out 
)

function solves system of equations by the FETI method

Parameters:
top - pointer to object with topology
gm - matrix of the system
lhs - vector of solution (left hand side)
rhs - vector of right hand side
out - output stream

JK, 16.9.2007

Definition at line 2302 of file nseqfeti.cpp.

References assemble_ff(), d, det_ndofmax(), e, evector(), g, g_matrix(), g_matrixsize(), gsize, inverse_matrix_GG(), kernel(), lambda, mpcg(), ndofcp, ndofmas, nodalunknowns(), ns, subdomain_matrices(), and time.

Referenced by slesolv::solve_system().

void subdomain_matrices ( gmatrix gm,
FILE *  out 
)
void subdomain_matrices ( gmatrix gm,
FILE *  out 
)
void subdomain_matrices ( gmatrix gm,
FILE *  out 
)

function assembles subdomain matrices from the matrix of the whole system

Parameters:
gm - pointer to the matrix of the system
out - output file

JK, 21.8.2007

Definition at line 582 of file nseqfeti.cpp.

References densemat::a, symcomprow::a, symcomprow::adr, skyline::assemble_from_scr(), booldatac, boolean_matrices, symcomprow::ci, cndom, cnprec, cpreccn, dense_matrix, edofs, feti_dirichlet, feti_lumped, fetiimpl, skyline::ldlkon_sky(), densemat::n, ncbool, ncdofd, ndofmas, ndofprec, densemat::negm, nonredundant, ns, prec, psmdm, redundant, gmatrix::scr, symcomprow::select_submatrix(), skyline_matrix, smdm, smscr, smsky, smskyprec, smst, and skyline::~skyline().

Referenced by matrices_assembl(), and solve_system().

void vectors_assembl ( double *  rhs,
FILE *  out 
)

function assembles the matrices G, (G^T.G)^{-1}

Parameters:
gm - matrix of the system
out - output stream

JK, 2. 8. 2012

Definition at line 2100 of file seqfeti.cpp.

References assemble_ff(), evector(), and time.

Referenced by solve_incremental_floating_subdomains().


Member Data Documentation

double aerrcg

attained error

Definition at line 120 of file nseqfeti.h.

Referenced by mpcg(), mprcg(), and seqfeti().

long anicg

the number of performed iterations in conjugate gradient method

Definition at line 115 of file nseqfeti.h.

Referenced by mpcg(), mprcg(), and seqfeti().

double* b

array for the vector b it is a constant vector containing prescribed discontinuities

Definition at line 281 of file seqfeti.h.

Referenced by define_b(), and lagrmultnodunknowns().

double ** booldata

array containing matrix entries of the Boolean matrices it contains ns,ncbool[i] components booldata[i][j] = k - the j-th interface unknown on the i-th subdomain contributes to the Boolean matrix with the value k it is assembled in the function read_booldata

Definition at line 226 of file nseqfeti.h.

Referenced by boolean_matrix(), read_booldata(), seqfeti(), and ~seqfeti().

long ** booldatac

array containing column indices for construction of the Boolean matrices it contains ns,ncbool[i] components booldatac[i][j] = k - the j-th interface unknown on the i-th subdomain contributes to the k-th column it is assembled in the function read_booldata

Definition at line 220 of file nseqfeti.h.

Referenced by boolean_matrix(), det_ndofmax(), read_booldata(), seqfeti(), subdomain_matrices(), and ~seqfeti().

long ** booldatar

array containing row indices for construction of the Boolean matrices it contains ns,ncbool[i] components booldatar[i][j] = k - the j-th interface unknown on the i-th subdomain contributes to the k-th row it is assembled in the function read_booldata

Definition at line 214 of file nseqfeti.h.

Referenced by boolean_matrix(), det_ndofmax(), read_booldata(), seqfeti(), and ~seqfeti().

long ** ccn

array of coarse code numbers it contains tnbn rows and ncdofd[i] columns ccn[i][j]=k - the j-th contribution from the i-th subdomain goes to the k-th coarse unknown

Definition at line 231 of file nseqfeti.h.

Referenced by coarse_local(), initiate(), local_coarse(), lscaling(), seqfeti(), and ~seqfeti().

long ** cndom

list of DOFs on subdomains it is used in connection with preconditioning it contains ns, ndofmas[i] components cndom[i][j]=k - the j-th DOF on the i-th subdomain has global glued number k array is assembled in the function assemble_subdom_unknowns

Definition at line 159 of file nseqfeti.h.

Referenced by assemble_ff(), assemble_subdom_unknowns(), nodalunknowns(), seqfeti(), subdomain_matrices(), and ~seqfeti().

long ** cnprec

code numbers for preconditioning cnprec[i][j]=k - the j-th DOF on the i-th subdomain has global glued number k

Definition at line 297 of file nseqfeti.h.

Referenced by subdomain_matrices().

long ** cpreccn

cpreccn[i][j]=k - the j-th DOF on the i-th subdomain has local number k

Definition at line 300 of file nseqfeti.h.

Referenced by dirichletprec(), lumpedprec(), and subdomain_matrices().

double ** d

array of nodal variables on subdomains it contains ns vectors, the vectors contain ndofmas[i] entries

Definition at line 249 of file nseqfeti.h.

Referenced by dirichletprec(), lagrmultdispl(), lumpedprec(), mpcg(), nodalunknowns(), seqfeti(), and solve_system().

long discont

indicator of the presence of discontinuities discont=0 - the classical FETI method discont=1 - the FETI method with interface discontinuities

Definition at line 107 of file seqfeti.h.

Referenced by lagrmultnodunknowns().

double * e

array for the e vector it contains gsize entries

Definition at line 245 of file nseqfeti.h.

Referenced by evector(), mpcg(), seqfeti(), and solve_system().

long ** edofs

array containing code numbers contributing to the coarse problem extracted values from subdomains to the coarse problem it contains ns, ncdofd[i] components edofs[i][j]=k - the j-th components contributing to the coarse problem from the i-th subdomains has number k array is assembled in the function initiate

Definition at line 173 of file nseqfeti.h.

Referenced by coarse_local(), initiate(), local_coarse(), seqfeti(), subdomain_matrices(), and ~seqfeti().

long ense

estimated number of rigid body modes (estimated dimension of the kernel)

Definition at line 107 of file nseqfeti.h.

Referenced by kernel(), print(), read(), and seqfeti().

double errcg

required error

Definition at line 118 of file nseqfeti.h.

Referenced by mpcg(), mprcg(), print(), read(), and seqfeti().

type of FETI implementation fetiimpl=no_impl=0 - no implementation is defined fetiimpl=boolean_matrices=1 - Boolean matrix is assembled, it is used for tests only, it is not efficient implementation fetiimpl=nonredundant=2 - nonredundant constraints are defined, matrix B has linearly independent rows fetiimpl=redundant=3 - redundant constraints are defined, matrix B has linearly dependent rows

Definition at line 97 of file nseqfeti.h.

Referenced by coarse_local(), det_ndofmax(), dirichletprec(), local_coarse(), lumpedprec(), slesolv::prepare_data(), print(), read(), seqfeti(), and subdomain_matrices().

double ** ff

array for the right hand sides it contains ns vectors, each vector contains ndofmas[i] entries ff[i][j]

Definition at line 241 of file nseqfeti.h.

Referenced by assemble_ff(), evector(), lagrmultdispl(), lagrmultnodunknowns(), mpcg(), and seqfeti().

double * g

matrix G rigid body modes are stored in columns of the matrix G it contains ndofcp,gsize components array is assembled in the function gmatrix

Definition at line 202 of file nseqfeti.h.

Referenced by feti_projection(), g_matrix(), inverse_matrix_GG(), lagrmultdispl(), lagrmultnodunknowns(), matrices_assembl(), mpcg(), seqfeti(), solve_system(), and ~seqfeti().

long gsize

size of matrix G it is determined in the function g_matrixsize

size of the matrix G it is determined in the function g_matrixsize

Definition at line 131 of file nseqfeti.h.

Referenced by evector(), feti_projection(), g_matrix(), g_matrixsize(), inverse_matrix_GG(), lagrmultdispl(), mpcg(), seqfeti(), and solve_system().

double * h

array for the compliances in the matrix H

matrix H rigid body modes are stored in columns of the matrix H it contains ndofcp,hsize components array is assembled in the function hmatrix

Definition at line 198 of file oseqfeti.h.

Referenced by define_h(), and lagrmultnodunknowns().

long hsize

size of matrix H it is determined in the function hmatrixsize

Definition at line 127 of file oseqfeti.h.

Referenced by feti_projection(), hmatrix(), hmatrixsize(), lagrmultdispl(), mpcg(), and mprcg().

double * invgg

array for the inverse matrix to the matrix G^T G it contains gsize rows and columns

Definition at line 236 of file nseqfeti.h.

Referenced by feti_projection(), inverse_matrix_GG(), lagrmultdispl(), lagrmultnodunknowns(), mpcg(), and seqfeti().

double ** jum

array containing jumps

Definition at line 322 of file nseqfeti.h.

Referenced by assemble_subdom_unknowns(), lagrmultdispl(), and mpcg().

double * lambda

array of Lagrange multipliers

Definition at line 252 of file nseqfeti.h.

Referenced by lagrmultdispl(), lagrmultnodunknowns(), mpcg(), seqfeti(), and solve_system().

double ** lwscalmat

Definition at line 304 of file nseqfeti.h.

Referenced by lscaling().

long matassem

indicator of assembled matrices matassem=0 - matrices are not assembled matassem=1 - matrices are assembled

Definition at line 116 of file seqfeti.h.

Referenced by matrices_assembl().

long * ncbool

the number of contributions in the arrays booldatar, booldatac and booldata it contains ns components it is assembled in the function read_booldata

number of contributions in the arrays booldatar, booldatac and booldata it contains ns components it is assembled in the function read_booldata

Definition at line 208 of file nseqfeti.h.

Referenced by boolean_matrix(), det_ndofmax(), read_booldata(), seqfeti(), subdomain_matrices(), and ~seqfeti().

long * ncdofd

array of numbers of unknowns (DOFs) contributing to the coarse problem ncdofd contains nproc components ncdofd[i]=j - the i-th subdomains contributes to coarse problem by j contributions ncdofd is a copy of selnodfeti->snndofmas array is assembled in the function initiate

Definition at line 166 of file nseqfeti.h.

Referenced by coarse_local(), initiate(), local_coarse(), seqfeti(), subdomain_matrices(), and ~seqfeti().

long ndofcp

the number of DOFs (unknowns) in coarse problem it is defined in the function initiate it is equal to the variable selnodfeti->tndofsn

Definition at line 140 of file nseqfeti.h.

Referenced by coarse_local(), det_ndofmax(), feti_projection(), g_matrix(), initiate(), inverse_matrix_GG(), lagrmultdispl(), local_coarse(), mpcg(), seqfeti(), solve_incremental_floating_subdomains(), and solve_system().

long * ndofmas

the numbers of DOFs on subdomains it contains ns components ndofmas[i]=j - the i-th subdomain contains j DOFs array is assembled in the function assemble_subdom_unknowns

Definition at line 146 of file nseqfeti.h.

Referenced by assemble_ff(), assemble_subdom_unknowns(), boolean_matrix(), coarse_local(), det_ndofmax(), dirichletprec(), evector(), g_matrix(), kernel(), lagrmultdispl(), local_coarse(), mpcg(), nodalunknowns(), seqfeti(), solve_system(), subdomain_matrices(), and ~seqfeti().

long ndofmax

the maximum number of degrees of freedom on one subdomain it is determined in the function det_ndofmax

Definition at line 135 of file nseqfeti.h.

Referenced by det_ndofmax(), lagrmultdispl(), lagrmultnodunknowns(), mpcg(), mprcg(), and seqfeti().

long * ndofprec

numbers of nodes on subdomains

first node numbers on subdomains number of DOFs on subdomains used for preconditioning

Definition at line 293 of file nseqfeti.h.

Referenced by dirichletprec(), lumpedprec(), and subdomain_matrices().

long nicg

the maximum number of iterations in conjugate gradient method

Definition at line 113 of file nseqfeti.h.

Referenced by mpcg(), mprcg(), print(), read(), and seqfeti().

long * nlwscalmat

Definition at line 303 of file nseqfeti.h.

Referenced by lscaling().

long * nrbmdom

array containing numbers of RBM on subdomains it contains ns components nrbmdom[i]=j - the i-th subdomain contains j rigid body modes array is assembled in the function kernel

Definition at line 181 of file nseqfeti.h.

Referenced by evector(), g_matrix(), g_matrixsize(), hmatrix(), hmatrixsize(), kernel(), lagrmultdispl(), lagrmultnodunknowns(), mpcg(), mprcg(), qvector(), seqfeti(), and ~seqfeti().

long ns
long * nsid

node-subdomain correspondence it contains ns components nsid[i]=j - the i-th node belongs to the j-th subdomain array is assembled in the function assemble_subdom_unknowns

Definition at line 152 of file nseqfeti.h.

Referenced by assemble_subdom_unknowns(), seqfeti(), and ~seqfeti().

type of preconditioner

Definition at line 126 of file nseqfeti.h.

Referenced by assemble_subdom_unknowns(), mpcg(), mprcg(), print(), read(), seqfeti(), and subdomain_matrices().

matrix in the dense storage scheme (it contains Schur complements which are dense)

Definition at line 319 of file nseqfeti.h.

Referenced by dirichletprec(), and subdomain_matrices().

long * rbmadr

array containing addresses of first RBM in coarse matrix it contains ns+1 components rbmadr[i]=j - rigid body modes of the i-th subdomains start from the index j array is assembled in the function hmatrixsize

Definition at line 191 of file nseqfeti.h.

Referenced by g_matrix(), g_matrixsize(), hmatrix(), hmatrixsize(), lagrmultdispl(), lagrmultnodunknowns(), seqfeti(), and ~seqfeti().

double ** rbmdom

rigid body modes / kernel array is assembled in the function kernel

Definition at line 185 of file nseqfeti.h.

Referenced by evector(), g_matrix(), hmatrix(), kernel(), lagrmultdispl(), lagrmultnodunknowns(), qvector(), seqfeti(), and ~seqfeti().

long ** se

list of linearly dependent equations se[i][j]=k - the j-th base vector of the kernel of the i-th subdomain creates the k-th column of the matrix array is assembled in the function kernel

Definition at line 196 of file nseqfeti.h.

Referenced by kernel(), lagrmultdispl(), lagrmultnodunknowns(), mpcg(), mprcg(), seqfeti(), and ~seqfeti().

subdomain matrices stored in the dense format

Definition at line 257 of file nseqfeti.h.

Referenced by kernel(), seqfeti(), subdomain_matrices(), and ~seqfeti().

subdomain matrices for preconditioning matrix in the compressed row storage scheme

Definition at line 317 of file nseqfeti.h.

Referenced by lumpedprec(), and subdomain_matrices().

subdomain matrices stored in the skyline storage

Definition at line 255 of file nseqfeti.h.

Referenced by kernel(), lagrmultdispl(), lagrmultnodunknowns(), mpcg(), mprcg(), seqfeti(), subdomain_matrices(), and ~seqfeti().

subdomain matrices stored in the skyline storage used for precondition

Definition at line 312 of file nseqfeti.h.

Referenced by lumpedprec(), and subdomain_matrices().

type of storage of subdomain matrices see galias.h

Definition at line 101 of file nseqfeti.h.

Referenced by kernel(), lagrmultdispl(), lagrmultnodunknowns(), mpcg(), mprcg(), seqfeti(), and subdomain_matrices().

double thresh

threshold for kernel detection

Definition at line 110 of file nseqfeti.h.

Referenced by kernel(), print(), read(), and seqfeti().

long vecassem

indicator of assembled right hand side vectors vecassem=0 - vectors of right hand sides are not assembled vecassem=1 - vectors of right hand sides are assembled

Definition at line 120 of file seqfeti.h.

double * wscalmat

Definition at line 302 of file nseqfeti.h.

Referenced by initiate(), and scaling().

double zero

computer zero

Definition at line 123 of file nseqfeti.h.

Referenced by inverse_matrix_GG(), lagrmultdispl(), lagrmultnodunknowns(), mpcg(), mprcg(), and seqfeti().


The documentation for this class was generated from the following files:

Generated by  doxygen 1.6.2