#include <nseqfeti.h>
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 | |
densemat * | psmdm |
matrix in the dense storage scheme (it contains Schur complements which are dense) | |
long * | rbmadr |
double ** | rbmdom |
long ** | se |
densemat * | smdm |
subdomain matrices stored in the dense format | |
symcomprow * | smscr |
skyline * | smsky |
subdomain matrices stored in the skyline storage | |
skyline * | smskyprec |
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 |
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.
seqfeti | ( | ) |
Definition at line 5 of file nseqfeti.cpp.
References aerrcg, anicg, booldata, booldatac, booldatar, ccn, cndom, d, e, edofs, ense, errcg, fetiimpl, ff, g, gsize, invgg, lambda, ncbool, ncdofd, ndofcp, ndofmas, ndofmax, nicg, no_impl, noprecond, nrbmdom, ns, nsid, prec, rbmadr, rbmdom, se, skyline_matrix, smdm, smsky, smst, thresh, and zero.
~seqfeti | ( | ) |
seqfeti | ( | ) |
~seqfeti | ( | ) |
seqfeti | ( | ) |
~seqfeti | ( | ) |
void assemble_ff | ( | double * | rhs | ) |
void assemble_ff | ( | double * | rhs | ) |
function assembles the right hand sides for subdomains
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
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
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
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
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
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
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
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.
void feti_projection | ( | double * | v | ) |
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
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
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
out | - output stream |
JK, 16.9.2007
Definition at line 958 of file oseqfeti.cpp.
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
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
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
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
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
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 | |||
) |
Definition at line 1235 of file nseqfeti.cpp.
References boolean_matrices, cpreccn, d, fetiimpl, symcomprow::mxv_scr(), skyline::mxv_sky(), ndofprec, nonredundant, p, redundant, smscr, and smskyprec.
void matrices_assembl | ( | gmatrix * | gm, | |
FILE * | out | |||
) |
function assembles the matrices G, (G^T.G)^{-1}
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
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
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
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
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
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
lhs | - array containing the left hand side |
JK, 29. 7. 2012
function performs modified preconditioned reorthonormalized conjugate gradient method
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
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
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
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.
function reads basic data
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
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
jump | - array of jumps |
JK, 28.11.2007
Definition at line 1181 of file nseqfeti.cpp.
References wscalmat.
function solves system of equations by the FETI method
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
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}
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().
double aerrcg |
attained error
Definition at line 120 of file nseqfeti.h.
long anicg |
the number of performed iterations in conjugate gradient method
Definition at line 115 of file nseqfeti.h.
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 |
double errcg |
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 |
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 |
the number of subdomains
Definition at line 104 of file nseqfeti.h.
Referenced by assemble_ff(), assemble_subdom_unknowns(), det_ndofmax(), evector(), g_matrix(), g_matrixsize(), initiate(), kernel(), lagrmultdispl(), mpcg(), nodalunknowns(), print(), read(), read_booldata(), seqfeti(), solve_system(), subdomain_matrices(), and ~seqfeti().
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 |
long vecassem |
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().