#include <feti1.h>
Public Member Functions | |
void | buff_coarse (double *cv, double *buff, long nd) |
void | buff_local (double *lv, double *buff) |
void | buffglob (double *buff, double *gv, long nd) |
void | buffloc (double *buff, double *lv) |
void | coarse_buff (double *cv, double *buff, long nd) |
void | coarse_dofs (partop *ptop, FILE *out) |
void | coarse_problem_ordering (gtopology *top, partop *ptop, long *domproc, FILE *out) |
void | contributing_nodes_dofs (gtopology *top, partop *ptop, long *domproc, FILE *out) |
void | dirichletprec (double *dd, double *pp, FILE *out) |
feti1 (int np, int mr, int nd) | |
feti1 (int np, int mr, int nd) | |
feti1 (int np, int mr, long nd) | |
void | feti_projection (double *v, double *h, double *h1) |
void | feti_projection (double *v, double *h, double *h1) |
void | feti_projection (double *v, double *h, double *h1) |
void | globbuff (double *buff, double *gv, long nd) |
void | globcnnum_feti (gtopology *top, long *ltg, long *domproc, FILE *out) |
void | globcnnum_feti (gtopology *top, long *ltg, long *domproc, FILE *out) |
void | globlocfeti (gtopology *top, double *gv, double *lv) |
void | hmatrix (gtopology *top, double *h, double *rbm, long maxnrbm, long *domproc) |
void | hmatrix (double *h, double *rbm) |
void | hmatrix (double *h, double *rbm, long *domproc) |
void | hmatrixsize (double *rbm, long &maxnrbm, long *domproc) |
void | hmatrixsize (double *rbm, long *domproc, FILE *out) |
void | hmatrixsize (double *rbm, long *domproc, FILE *out) |
void | initiate (selnodes *selnodfeti, FILE *out) |
void | lagrmultdispl (gtopology *top, gmatrix *gm, long *domproc, double *w, double *d, double *f, double *rbm, long *rbmi, double *h, double *h1) |
void | lagrmultdispl (gtopology *top, gmatrix *gm, long *domproc, double *w, double *d, double *f, double *rbm, long *rbmi, double *h, double *h1) |
void | lagrmultdispl (gtopology *top, gmatrix *gm, long *domproc, double *w, double *d, double *f, double *rbm, long *rbmi, double *h, double *h1, FILE *out) |
void | local_buff (double *lv, double *buff) |
void | locbuff (double *buff, double *lv) |
void | locglobfeti (gtopology *top, double *gv, double *lv) |
void | locscaling (double *invect, double *outvect, FILE *out) |
void | lumpedprec (gtopology *top, double *v, double *pv) |
void | lumpedprec (gtopology *top, double *v, double *pv) |
void | lumpedprec (gmatrix *gm, double *dd, double *pp, FILE *out) |
void | mpcg (gtopology *top, gmatrix *gm, double *w, double *rhs, double *q, double *h, double *h1, long *rbmi, FILE *out) |
void | mpcg (gtopology *top, gmatrix *gm, double *w, double *rhs, double *q, double *h, double *h1, long *rbmi, FILE *out) |
void | mpcg (gtopology *top, gmatrix *gm, long *domproc, double *w, double *rhs, double *q, double *h, double *h1, long *rbmi, FILE *out) |
void | number_contributing_nodes_dofs (gtopology *top, partop *ptop, long *domproc, FILE *out) |
void | qvector (double *q, double *rbm, double *f, long maxnrbm, long *domproc) |
void | qvector (double *q, double *rbm, double *f) |
void | qvector (double *q, double *rbm, double *f, long *domproc) |
void | scaling (double *invect, double *outvect, long n, FILE *out) |
void | solve_system (gtopology *top, gmatrix *gm, long *domproc, double *lhs, double *rhs, FILE *out) |
void | solve_system (gtopology *top, gmatrix *gm, long *domproc, double *lhs, double *rhs, FILE *out) |
void | solve_system (gtopology *top, gmatrix *gm, long *domproc, double *lhs, double *rhs, FILE *out) |
void | subdomain_matrix (gmatrix *gm, long *domproc, FILE *out) |
void | subdomain_ordering (gtopology *top, long *ltg, FILE *out) |
~feti1 () | |
~feti1 () | |
~feti1 () | |
Public Attributes | |
double | aerrcg |
long | anicg |
long ** | ccn |
long *** | cncn |
long * | cnprec |
long * | cpreccn |
long * | edofs |
long | enrbm |
double | errcg |
fetiimplem | fetiimpl |
long | fetiprecond |
long ** | glcor |
long | hsize |
long * | inc |
long * | lcn |
long ** | lcngcn |
long * | lggl |
double | lithr |
double * | lwscalmat |
long | maxlggl |
long | maxncdofd |
maximum number of DOFs contributing to the coarse problem | |
long | maxncnd |
maximum number of nodes contributing to the coarse problem | |
long | maxnrbm |
maximum number of rigid body motions (RBM) | |
int | myrank |
rank of processor | |
long | nbdof |
long | nbn |
long * | nbndom |
long | ncdof |
number of contributions (unknowns) from particular subdomains to the coarse problem | |
long * | ncdofd |
long | nclggl |
long | ncn |
number of nodes contributing to the coarse problem | |
long * | ncnd |
long | ndof |
M. | |
long | ndofcp |
long ** | ndofncn |
long | ndofprec |
int | ndom |
long | ndom |
number of subdomain | |
long | ngdof |
long | nicg |
long * | nodnum |
int | nproc |
number of processors | |
long | nrbm |
number of rigid body motions (RBM) | |
long * | nrbmdom |
long * | rbmadr |
densemat * | smdm |
matrix in the dense storage scheme (it contains Schur complements which are dense) | |
skyline * | smsky |
long | tnbn |
long | totmaxndofn |
double * | wscalmat |
M. | |
double | zero |
FINITE ELEMENT TEARING AND INTERCONNECTING METHOD
nproc, myrank, ndom number of processors, myrank and number of domain are established after constructor execution
ndof total number of local unknowns is established after execution of function schurordering
nbndom (M) array of numbers of boundary nodes on subdomains is established after execution of function globcnnum_feti
maxnbn, totmaxndofn maximum number of boundary nodes and maximum number of degrees of freedom on node are established after execution of globcnnum_feti
maxinc maximum number of incidencies is established after execution of globcnnum_feti
ngdof (M) total number of global unknowns is established after execution of function globcnnum_feti
nodnum array of legth nbn containing global node numbers; components correspond only to boundary nodes, internal nodes are excluded array is established after execution of function globcnnum_feti
inc, lcngcn array of numbers of incidencies of nodes to subdomains and global code numbers in FETI method are established after execution of function globcnnum_feti
class paral contains information about local-global ordering
FINITE ELEMENT TEARING AND INTERCONNECTING METHOD
nproc, myrank, ndom number of processors, myrank and number of domain are established after constructor execution
ndof total number of local unknowns is established after execution of function schurordering
nbndom (M) array of numbers of boundary nodes on subdomains is established after execution of function globcnnum_feti
maxnbn, totmaxndofn maximum number of boundary nodes and maximum number of degrees of freedom on node are established after execution of globcnnum_feti
maxinc maximum number of incidencies is established after execution of globcnnum_feti
ngdof (M) total number of global unknowns is established after execution of function globcnnum_feti
nodnum array of legth nbn containing global node numbers; components correspond only to boundary nodes, internal nodes are excluded array is established after execution of function globcnnum_feti
inc, lcngcn array of numbers of incidencies of nodes to subdomains and global code numbers in FETI method are established after execution of function globcnnum_feti
Definition at line 51 of file feti1.h.
feti1 | ( | int | np, | |
int | mr, | |||
long | nd | |||
) |
~feti1 | ( | ) |
feti1 | ( | int | np, | |
int | mr, | |||
int | nd | |||
) |
~feti1 | ( | ) |
feti1 | ( | int | np, | |
int | mr, | |||
int | nd | |||
) |
~feti1 | ( | ) |
void buff_coarse | ( | double * | cv, | |
double * | buff, | |||
long | nd | |||
) |
void buff_local | ( | double * | lv, | |
double * | buff | |||
) |
void buffglob | ( | double * | buff, | |
double * | gv, | |||
long | nd | |||
) |
void buffloc | ( | double * | buff, | |
double * | lv | |||
) |
function localizes components from buffer to local vector (belonging to one subdomain)
buff | - buffer | |
lv | - local vector |
JK, 10.6.2003
Definition at line 579 of file feti1n.cpp.
Referenced by mpcg().
void coarse_buff | ( | double * | cv, | |
double * | buff, | |||
long | nd | |||
) |
void coarse_dofs | ( | partop * | ptop, | |
FILE * | out | |||
) |
function generates coarse degrees of freedom
ptop | - pointer to parallel topology | |
out | - pointer to output file |
JK, 31.7.2005
Definition at line 134 of file feti1.cpp.
References partop::bnmultip, cncn, partop::lbcn, partop::ldn, partop::llnbn, myrank, partop::nbdofnd, ndofcp, ndofncn, partop::tnbn, and tnbn.
Referenced by coarse_problem_ordering().
function orders unknowns in coarse problem and assembles connection among local and coarse unknowns
top | - pointer to generalized topology of one subdomain | |
ptop | - pointer to parallel topology | |
domproc | - array containing correspondence between processors and subdomains | |
out | - pointer to output file |
JK, 11.7.2005
Definition at line 590 of file feti1.cpp.
References coarse_dofs(), contributing_nodes_dofs(), and number_contributing_nodes_dofs().
function assembles lists of contributing nodes and unknowns (DOFs) to the coarse problem
top | - pointer to generalized topology of one subdomain | |
ptop | - pointer to parallel topology | |
domproc | - array containing correspondence between processors and subdomains | |
out | - pointer to output file |
JK, 31.7.2005
Definition at line 350 of file feti1.cpp.
References partop::bnmultip, ccn, partop::cnbn, cncn, edofs, gtopology::give_dof(), gtopology::give_ndofn(), partop::ldn, partop::llnbn, partop::lnbn, maxncnd, MPI_ANY_SOURCE, MPI_ANY_TAG, MPI_Barrier(), MPI_COMM_WORLD, MPI_LONG, MPI_Recv(), MPI_Send(), myrank, partop::nbnd, ncdof, ncdofd, ncn, ndofncn, nproc, stat, partop::tnbn, and tnbn.
Referenced by coarse_problem_ordering().
void dirichletprec | ( | double * | dd, | |
double * | pp, | |||
FILE * | out | |||
) |
void feti_projection | ( | double * | v, | |
double * | h, | |||
double * | h1 | |||
) |
void feti_projection | ( | double * | v, | |
double * | h, | |||
double * | h1 | |||
) |
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, 7.3.2002
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} | |
ngdof,hsize | - number of rows and columns of matrix H |
ngdof - number of Lagrange multipliers hsize - total number of all rigid body motions
JK, 7.3.2002
Definition at line 1673 of file feti1.cpp.
References hsize, mtxv(), mxv(), ndofcp, and p.
Referenced by mpcg().
void globbuff | ( | double * | buff, | |
double * | gv, | |||
long | nd | |||
) |
function localizes components from global vector (belonging to reduced problem) to the buffer
buff | - buffer | |
gv | - global vector | |
nd | - number of subdomain |
JK, 10.6.2003
Definition at line 600 of file feti1n.cpp.
Referenced by mpcg().
void globcnnum_feti | ( | gtopology * | top, | |
long * | ltg, | |||
long * | domproc, | |||
FILE * | out | |||
) |
void globcnnum_feti | ( | gtopology * | top, | |
long * | ltg, | |||
long * | domproc, | |||
FILE * | out | |||
) |
JK, 10.6.2003
function creates code numbers
maxnbn - maximum number of boundary nodes (each processor) pcor->totmaxndofn - maximum number of DOFs in one node (each processor) maxgnn - maximum node number in the problem (only on master) maxinc - maximum number of node to subdomain incidency (each processor)
pcor->nbndom (nproc) - array containing numbers of boundary nodes on subdomains (only on master) noddom (maxnbn,nproc) - array containing node-subdomain correspondence (only on master) nodinc (maxgnn) - array containing number of node to subdomain incidencies (only on master) gncn (maxgnn,nodinc*pcor->totmaxndofn) - array containing local code numbers (only on master), global code numbers (only on master) pcor->lcngcn (nbn,inc*pcor->totmaxndofn) - array containing (each processor) pcor->nodnum (nbn) - array containing only numbers of boundary nodes (each processor)
top | - topology object pointer | |
out | - output stream |
JK, 15.1.2002
Definition at line 40 of file feti1n.cpp.
References gtopology::give_dof(), gtopology::give_ndofn(), glcor, lcn, lggl, maxlggl, MPI_ANY_SOURCE, MPI_ANY_TAG, MPI_Barrier(), MPI_COMM_WORLD, MPI_LONG, MPI_Recv(), MPI_Send(), MPI_Status::MPI_TAG, myrank, nbdof, nbn, nbndom, nclggl, gtopology::nn, nproc, p, stat, and tnbn.
void globlocfeti | ( | gtopology * | top, | |
double * | gv, | |||
double * | lv | |||
) |
function creates local vector from global vector localization process is generated by FETI ordering
gv | - array containing global vector | |
lv | - array containing local vector |
4.12.2001
Definition at line 547 of file feti1o.cpp.
References gtopology::give_dof(), lcn, and nodnum.
Referenced by lagrmultdispl().
void hmatrix | ( | gtopology * | top, | |
double * | h, | |||
double * | rbm, | |||
long | maxnrbm, | |||
long * | domproc | |||
) |
function assembles matrix H columns are RBM after localization
h | - matrix H | |
rbm | - array containing rigid body motions | |
maxnrbm | - maximum number of rigid body motions | |
ngdof | - number of global DOFs = number of Lagrange multipliers |
2.12.2001
Definition at line 653 of file feti1o.cpp.
References hsize, locglobfeti(), MPI_ANY_SOURCE, MPI_ANY_TAG, MPI_Barrier(), MPI_COMM_WORLD, MPI_DOUBLE, MPI_Recv(), MPI_Send(), MPI_Status::MPI_TAG, myrank, ndof, ngdof, nrbm, nrbmdom, and rbmadr.
void hmatrix | ( | double * | h, | |
double * | rbm | |||
) |
function assembles matrix H columns are RBM after localization
h | - matrix H | |
rbm | - array containing rigid body motions |
2.12.2001 JK, 10.6.2003 - modification
Definition at line 721 of file feti1n.cpp.
References buffglob(), locbuff(), maxlggl, maxnrbm, MPI_ANY_SOURCE, MPI_ANY_TAG, MPI_Barrier(), MPI_COMM_WORLD, MPI_DOUBLE, MPI_Recv(), MPI_Send(), MPI_Status::MPI_TAG, myrank, ndof, ngdof, nrbm, nrbmdom, and rbmadr.
void hmatrix | ( | double * | h, | |
double * | rbm, | |||
long * | domproc | |||
) |
function assembles matrix H columns are RBM after localization
h | - matrix H | |
rbm | - array containing rigid body motions | |
domproc | - domain-processor correspondence |
2.12.2001 JK, 10.6.2003; 31.7.2005 - modification
Definition at line 1550 of file feti1.cpp.
References buff_coarse(), hsize, local_buff(), maxncdofd, maxnrbm, MPI_ANY_SOURCE, MPI_ANY_TAG, MPI_Barrier(), MPI_COMM_WORLD, MPI_DOUBLE, MPI_Recv(), MPI_Send(), MPI_Status::MPI_TAG, myrank, ndof, ndofcp, nproc, nrbm, nrbmdom, nullv(), rbmadr, and stat.
Referenced by solve_system().
void hmatrixsize | ( | double * | rbm, | |
long & | maxnrbm, | |||
long * | domproc | |||
) |
function computes size of matrix H
rbm | - array containing rigid body motions | |
maxnrbm | - maximum number of rigid body motions | |
ngdof | - number of global DOFs = number of Lagrange multipliers |
2.12.2001
Definition at line 588 of file feti1o.cpp.
References hsize, MPI_ANY_SOURCE, MPI_ANY_TAG, MPI_COMM_WORLD, MPI_LONG, MPI_Recv(), MPI_Send(), MPI_Status::MPI_TAG, myrank, ngdof, nrbm, nrbmdom, and rbmadr.
void hmatrixsize | ( | double * | rbm, | |
long * | domproc, | |||
FILE * | out | |||
) |
void hmatrixsize | ( | double * | rbm, | |
long * | domproc, | |||
FILE * | out | |||
) |
JK, 10.6.2003 function localizes components from local vector (belonging to one subdomain) to the buffer (which will be usualy sent to master)
buff | - buffer | |
lv | - local vector |
JK, 10.6.2003 function localizes components from buffer to local vector (belonging to one subdomain) components of local array must be set to zero before application ot this function
buff | - buffer | |
lv | - local vector |
JK, 10.6.2003 function localizes components from global vector (belonging to reduced problem) to the buffer
buff | - buffer | |
gv | - global vector | |
nd | - number of subdomain |
JK, 10.6.2003 function localizes components from buffer to global vector (belonging to reduced problem) components of global array must be set to zero before application of this function
buff | - buffer | |
gv | - global vector | |
nd | - number of subdomain |
JK, 10.6.2003 function computes size of matrix H
rbm | - array containing rigid body motions | |
maxnrbm | - maximum number of rigid body motions |
2.12.2001 - origin JK, 10.6.2003 - modification
function computes size of matrix H
rbm | - array containing rigid body motions | |
maxnrbm | - maximum number of rigid body motions |
2.12.2001 - origin JK, 10.6.2003 - modification
Definition at line 1495 of file feti1.cpp.
References hsize, maxnrbm, MPI_ANY_SOURCE, MPI_ANY_TAG, MPI_COMM_WORLD, MPI_LONG, MPI_Recv(), MPI_Send(), MPI_Status::MPI_TAG, myrank, nproc, nrbm, nrbmdom, rbmadr, and stat.
Referenced by solve_system().
void initiate | ( | selnodes * | selnodfeti, | |
FILE * | out | |||
) |
JK, 7.8.2007
Definition at line 80 of file feti1.cpp.
References ccn, selnodes::cndom, selnodes::dofmultip, edofs, lcn, selnodes::ldof, maxlggl, maxncdofd, selnodes::maxndof, myrank, ncdof, ncdofd, nclggl, selnodes::ndof, ndofcp, selnodes::ndofdom, selnodes::tndof, and wscalmat.
void lagrmultdispl | ( | gtopology * | top, | |
gmatrix * | gm, | |||
long * | domproc, | |||
double * | w, | |||
double * | d, | |||
double * | f, | |||
double * | rbm, | |||
long * | rbmi, | |||
double * | h, | |||
double * | h1 | |||
) |
void lagrmultdispl | ( | gtopology * | top, | |
gmatrix * | gm, | |||
long * | domproc, | |||
double * | w, | |||
double * | d, | |||
double * | f, | |||
double * | rbm, | |||
long * | rbmi, | |||
double * | h, | |||
double * | h1 | |||
) |
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} | |
ngdof | - number of Lagrange multipliers | |
hsize | - number of columns of matrix H |
13.3.2002
Definition at line 1371 of file feti1n.cpp.
References addv(), g, globlocfeti(), hsize, gmatrix::ldl_feti(), locglobfeti(), MPI_ANY_SOURCE, MPI_ANY_TAG, MPI_COMM_WORLD, MPI_DOUBLE, MPI_Recv(), MPI_Send(), myrank, ndof, ngdof, nrbm, nrbmdom, rbmadr, subv(), and zero.
void lagrmultdispl | ( | gtopology * | top, | |
gmatrix * | gm, | |||
long * | domproc, | |||
double * | w, | |||
double * | d, | |||
double * | f, | |||
double * | rbm, | |||
long * | rbmi, | |||
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 |
13.3.2002 - origin JK, 14.6.2003 - modification
Definition at line 2734 of file feti1.cpp.
References buff_coarse(), buff_local(), cmulv(), coarse_buff(), g, hsize, gmatrix::ldl_feti(), local_buff(), maxncdofd, maxnrbm, MPI_ANY_SOURCE, MPI_ANY_TAG, MPI_Barrier(), MPI_COMM_WORLD, MPI_DOUBLE, MPI_Recv(), MPI_Send(), MPI_Status::MPI_TAG, mtxv(), mxv(), myrank, ndof, ndofcp, nproc, nrbm, nrbmdom, nullv(), rbmadr, stat, subv(), and zero.
Referenced by solve_system().
void local_buff | ( | double * | lv, | |
double * | buff | |||
) |
void locbuff | ( | double * | buff, | |
double * | lv | |||
) |
void locglobfeti | ( | gtopology * | top, | |
double * | gv, | |||
double * | lv | |||
) |
function localizes local vector components to global vector localization process is generated by FETI ordering
gv | - array containing global vector | |
lv | - array containing local vector |
4.12.2001
Definition at line 499 of file feti1o.cpp.
References gtopology::give_dof(), lcn, and nodnum.
Referenced by hmatrix(), and lagrmultdispl().
void locscaling | ( | double * | invect, | |
double * | outvect, | |||
FILE * | out | |||
) |
void lumpedprec | ( | gtopology * | top, | |
double * | v, | |||
double * | pv | |||
) |
void lumpedprec | ( | gtopology * | top, | |
double * | v, | |||
double * | pv | |||
) |
function makes preconditioning by lumped matrix
v | - input vector | |
pv | - preconditioned vector |
8.4.2002
Definition at line 1539 of file feti1n.cpp.
void lumpedprec | ( | gmatrix * | gm, | |
double * | dd, | |||
double * | pp, | |||
FILE * | out | |||
) |
void mpcg | ( | gtopology * | top, | |
gmatrix * | gm, | |||
double * | w, | |||
double * | rhs, | |||
double * | q, | |||
double * | h, | |||
double * | h1, | |||
long * | rbmi, | |||
FILE * | out | |||
) |
void mpcg | ( | gtopology * | top, | |
gmatrix * | gm, | |||
double * | w, | |||
double * | rhs, | |||
double * | q, | |||
double * | h, | |||
double * | h1, | |||
long * | rbmi, | |||
FILE * | out | |||
) |
function performs modified conjugate gradient method
w | - vector of Lagrange multipliers | |
h | - matrix H | |
h1 | - matrix (H^T.H)^{-1} | |
ngdof,hsize | - number of rows and columns of matrix H |
ngdof - number of Lagrange multipliers hsize - total number of all rigid body motions
JK, 7.3.2002 10.6.2003 - modification
function performs modified conjugate gradient method
w | - vector of Lagrange multipliers | |
h | - matrix H | |
h1 | - matrix (H^T.H)^{-1} | |
ngdof,hsize | - number of rows and columns of matrix H |
ngdof - number of Lagrange multipliers hsize - total number of all rigid body motions
JK, 7.3.2002
Definition at line 923 of file feti1n.cpp.
References aerrcg, anicg, buffglob(), buffloc(), errcg, feti_projection(), g, globbuff(), hsize, gmatrix::ldl_feti(), locbuff(), maxlggl, MPI_ANY_SOURCE, MPI_ANY_TAG, MPI_COMM_WORLD, MPI_DOUBLE, MPI_Recv(), MPI_Send(), MPI_Status::MPI_TAG, myrank, ndof, ngdof, nicg, nrbm, ss(), subv(), and zero.
void mpcg | ( | gtopology * | top, | |
gmatrix * | gm, | |||
long * | domproc, | |||
double * | w, | |||
double * | rhs, | |||
double * | q, | |||
double * | h, | |||
double * | h1, | |||
long * | rbmi, | |||
FILE * | out | |||
) |
function performs modified conjugate gradient method
w | - vector of Lagrange multipliers | |
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, 7.3.2002 10.6.2003 - modification
Definition at line 2102 of file feti1.cpp.
References aerrcg, anicg, buff_coarse(), buff_local(), coarse_buff(), copyv(), dirichlet, dirichletprec(), errcg, feti_projection(), g, hsize, gmatrix::ldl_feti(), local_buff(), lumped, lumpedprec(), maxncdofd, MPI_ANY_SOURCE, MPI_ANY_TAG, MPI_Barrier(), MPI_COMM_WORLD, MPI_DOUBLE, MPI_Recv(), MPI_Send(), MPI_Status::MPI_TAG, mxv(), myrank, ndof, ndofcp, nicg, nofetiprecond, nproc, nrbm, nullv(), p, scaling(), ss(), stat, subv(), and zero.
Referenced by solve_system().
function determines number of nodes and unknowns (DOFs) contributing to the coarse problem
function determines
maxncnd - maximum number of nodes contributing to the coarse problem maxncdofd - maximum number of DOFs contributing to the coarse problem ncn - number of nodes contributing to the coarse problem
ncnd - array of numbers of nodes contributing to coarse problem ncdofd - array of numbers of unknowns (DOFs) contributing to the coarse problem
top | - pointer to generalized topology of one subdomain | |
ptop | - pointer to parallel topology | |
domproc | - array containing correspondence between processors and subdomains | |
out | - pointer to output file |
JK, 31.7.2005
Definition at line 231 of file feti1.cpp.
References partop::bnmultip, partop::cnbn, cncn, partop::ldn, partop::lnbn, maxncdofd, maxncnd, MPI_ANY_SOURCE, MPI_ANY_TAG, MPI_Barrier(), MPI_COMM_WORLD, MPI_LONG, MPI_Recv(), MPI_Send(), myrank, partop::nbnd, ncdofd, ncn, ncnd, ndofncn, nproc, and stat.
Referenced by coarse_problem_ordering().
void qvector | ( | double * | q, | |
double * | rbm, | |||
double * | f, | |||
long | maxnrbm, | |||
long * | domproc | |||
) |
function assembles vector q
q | - vector q | |
rbm | - array containing rigid body motions | |
f | - right hand side | |
maxnrbm | - maximum number of rigid body motions |
6.3.2002
Definition at line 749 of file feti1o.cpp.
References MPI_ANY_SOURCE, MPI_ANY_TAG, MPI_COMM_WORLD, MPI_DOUBLE, MPI_Recv(), MPI_Send(), MPI_Status::MPI_TAG, myrank, ndof, nrbm, nrbmdom, rbmadr, and ss().
void qvector | ( | double * | q, | |
double * | rbm, | |||
double * | f | |||
) |
function assembles vector q
q | - vector q | |
rbm | - array containing rigid body motions | |
f | - right hand side |
6.3.2002 - origin JK, 10.6.2003 - modification
Definition at line 801 of file feti1n.cpp.
References maxnrbm, MPI_ANY_SOURCE, MPI_ANY_TAG, MPI_COMM_WORLD, MPI_DOUBLE, MPI_Recv(), MPI_Send(), MPI_Status::MPI_TAG, myrank, ndof, nrbm, nrbmdom, rbmadr, and ss().
void qvector | ( | double * | q, | |
double * | rbm, | |||
double * | f, | |||
long * | domproc | |||
) |
function assembles vector q
q | - vector q | |
rbm | - array containing rigid body motions | |
f | - right hand side |
6.3.2002 - origin JK, 10.6.2003 - modification
Definition at line 1621 of file feti1.cpp.
References maxnrbm, MPI_ANY_SOURCE, MPI_ANY_TAG, MPI_COMM_WORLD, MPI_DOUBLE, MPI_Recv(), MPI_Send(), MPI_Status::MPI_TAG, myrank, ndof, nproc, nrbm, nrbmdom, rbmadr, ss(), and stat.
Referenced by solve_system().
void scaling | ( | double * | invect, | |
double * | outvect, | |||
long | n, | |||
FILE * | out | |||
) |
void solve_system | ( | gtopology * | top, | |
gmatrix * | gm, | |||
long * | domproc, | |||
double * | lhs, | |||
double * | rhs, | |||
FILE * | out | |||
) |
void solve_system | ( | gtopology * | top, | |
gmatrix * | gm, | |||
long * | domproc, | |||
double * | lhs, | |||
double * | rhs, | |||
FILE * | out | |||
) |
void solve_system | ( | gtopology * | top, | |
gmatrix * | gm, | |||
long * | domproc, | |||
double * | lhs, | |||
double * | rhs, | |||
FILE * | out | |||
) |
Definition at line 2862 of file feti1.cpp.
References dirichlet, enrbm, gemp(), h(), hmatrix(), hmatrixsize(), hsize, gmatrix::kernel(), lagrmultdispl(), lithr, lumped, memset(), mpcg(), MPI_ANY_SOURCE, MPI_ANY_TAG, MPI_Barrier(), MPI_COMM_WORLD, MPI_LONG, MPI_Recv(), MPI_Send(), MPI_Status::MPI_TAG, mtxm(), myrank, ndof, ndofcp, nofetiprecond, nproc, nrbm, qvector(), rbmadr, stat, subdomain_matrix(), time, and zero.
void subdomain_matrix | ( | gmatrix * | gm, | |
long * | domproc, | |||
FILE * | out | |||
) |
Definition at line 1729 of file feti1.cpp.
References densemat::a, skyline::a, skyline::adr, cnprec, dirichlet, edofs, skyline::ldlkon_sky(), lumped, densemat::n, skyline::n, ncdof, ndof, ndofprec, densemat::negm, skyline::negm, skyline::select_submatrix(), gmatrix::sky, smdm, smsky, stat, and skyline::~skyline().
Referenced by solve_system().
void subdomain_ordering | ( | gtopology * | top, | |
long * | ltg, | |||
FILE * | out | |||
) |
function orders unknowns on subdomains with respect to the FETI method
top | - pointer to domain topology |
JK, 31.7.2005
Definition at line 611 of file feti1.cpp.
References gtopology::codenum_generation(), dirichlet, gtopology::give_dof(), gtopology::give_ndofn(), ndof, gtopology::nn, and gtopology::save_dof().
long** ccn |
M 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 array is allocated in function contributing_nodes_dofs
Definition at line 244 of file feti1.h.
Referenced by buff_coarse(), coarse_buff(), contributing_nodes_dofs(), and initiate().
long*** cncn |
M array of code numbers at coarse nodes it contains tnbn components, each contains bnmultip[i] subcomponents and each subcomponents contains ndofncn[i][j] subsubcomponents cncn[i][j][k]=m - the k-th DOF at the j-th node shared by the i-th coarse node has number m array is allocated in function coarse_dofs
Definition at line 217 of file feti1.h.
Referenced by coarse_dofs(), contributing_nodes_dofs(), feti1(), and number_contributing_nodes_dofs().
long* cnprec |
Definition at line 261 of file feti1.h.
Referenced by dirichletprec(), lumpedprec(), and subdomain_matrix().
long* edofs |
array containing code numbers contributing to the coarse problem extracted values from subdomains to the coarse problem edofs[i]=j - the i-th components contributing to the coarse problem has number j array is allocated in function contributing_nodes_dofs
Definition at line 237 of file feti1.h.
Referenced by buff_local(), contributing_nodes_dofs(), feti1(), initiate(), local_buff(), subdomain_matrix(), and ~feti1().
long enrbm |
Definition at line 119 of file feti1.h.
Referenced by feti1(), and solve_system().
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
long fetiprecond |
long** glcor |
Definition at line 147 of file feti1.h.
Referenced by buffglob(), feti1(), globbuff(), globcnnum_feti(), and ~feti1().
long hsize |
M size of matrix H
Definition at line 203 of file feti1.h.
Referenced by feti1(), feti_projection(), hmatrix(), hmatrixsize(), lagrmultdispl(), mpcg(), and solve_system().
long * lcn |
Definition at line 115 of file feti1.h.
Referenced by buffloc(), feti1(), globcnnum_feti(), globlocfeti(), initiate(), locbuff(), locglobfeti(), and ~feti1().
long* lggl |
Definition at line 145 of file feti1.h.
Referenced by buffglob(), feti1(), globbuff(), globcnnum_feti(), and ~feti1().
double lithr |
Definition at line 121 of file feti1.h.
Referenced by feti1(), and solve_system().
double* lwscalmat |
Definition at line 250 of file feti1.h.
Referenced by feti1(), and locscaling().
long maxlggl |
Definition at line 109 of file feti1.h.
Referenced by feti1(), globcnnum_feti(), hmatrix(), initiate(), and mpcg().
long maxncdofd |
maximum number of DOFs contributing to the coarse problem
Definition at line 187 of file feti1.h.
Referenced by hmatrix(), initiate(), lagrmultdispl(), mpcg(), and number_contributing_nodes_dofs().
long maxncnd |
maximum number of nodes contributing to the coarse problem
Definition at line 184 of file feti1.h.
Referenced by contributing_nodes_dofs(), and number_contributing_nodes_dofs().
long maxnrbm |
maximum number of rigid body motions (RBM)
Definition at line 199 of file feti1.h.
Referenced by feti1(), hmatrix(), hmatrixsize(), lagrmultdispl(), and qvector().
int myrank |
rank of processor
Definition at line 101 of file feti1.h.
Referenced by coarse_dofs(), contributing_nodes_dofs(), feti1(), globcnnum_feti(), hmatrix(), hmatrixsize(), initiate(), lagrmultdispl(), mpcg(), number_contributing_nodes_dofs(), qvector(), solve_system(), and ~feti1().
long nbdof |
Definition at line 91 of file feti1n.h.
Referenced by globcnnum_feti().
long nbn |
Definition at line 87 of file feti1n.h.
Referenced by feti1(), and globcnnum_feti().
long * nbndom |
Definition at line 138 of file feti1n.h.
Referenced by feti1(), and globcnnum_feti().
long ncdof |
number of contributions (unknowns) from particular subdomains to the coarse problem
Definition at line 193 of file feti1.h.
Referenced by buff_local(), contributing_nodes_dofs(), initiate(), local_buff(), and subdomain_matrix().
long* ncdofd |
M 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 defined on the master processor, array is allocated in function number_contributing_nodes_dofs
Definition at line 231 of file feti1.h.
Referenced by buff_coarse(), coarse_buff(), contributing_nodes_dofs(), initiate(), and number_contributing_nodes_dofs().
long nclggl |
Definition at line 111 of file feti1.h.
Referenced by buffloc(), feti1(), globcnnum_feti(), initiate(), and locbuff().
long ncn |
number of nodes contributing to the coarse problem
Definition at line 190 of file feti1.h.
Referenced by contributing_nodes_dofs(), and number_contributing_nodes_dofs().
long* ncnd |
M array of numbers of nodes contributing to coarse problem ncnd contains nproc components ncnd[i]=j - the i-th subdomains contributes to coarse problem by j nodes defined on the master processor, array is allocated in function number_contributing_nodes_dofs
Definition at line 224 of file feti1.h.
Referenced by feti1(), number_contributing_nodes_dofs(), and ~feti1().
long ndof |
M.
number of degrees of freedom on subdomain
Definition at line 177 of file feti1.h.
Referenced by feti1(), hmatrix(), lagrmultdispl(), mpcg(), qvector(), solve_system(), subdomain_matrix(), and subdomain_ordering().
long ndofcp |
M number of DOFs (unknowns) in coarse problem = total number of boundary DOFs
Definition at line 181 of file feti1.h.
Referenced by coarse_dofs(), feti1(), feti_projection(), hmatrix(), initiate(), lagrmultdispl(), mpcg(), and solve_system().
long** ndofncn |
M array containing numbers of DOFs at corner nodes it contains tnbn rows and bnmultip[i] columns ndofncn[i][j]=k - the j-th node shared by the i-th coarse node contains k DOFs array is allocated in function coarse_dofs
Definition at line 210 of file feti1.h.
Referenced by coarse_dofs(), contributing_nodes_dofs(), feti1(), and number_contributing_nodes_dofs().
long ndofprec |
Definition at line 258 of file feti1.h.
Referenced by dirichletprec(), locscaling(), lumpedprec(), and subdomain_matrix().
long ngdof |
Definition at line 135 of file feti1n.h.
Referenced by feti1(), hmatrix(), hmatrixsize(), lagrmultdispl(), and mpcg().
long* nodnum |
Definition at line 94 of file feti1o.h.
Referenced by feti1(), globlocfeti(), and locglobfeti().
int nproc |
number of processors
Definition at line 99 of file feti1.h.
Referenced by contributing_nodes_dofs(), feti1(), globcnnum_feti(), hmatrix(), hmatrixsize(), lagrmultdispl(), mpcg(), number_contributing_nodes_dofs(), qvector(), solve_system(), and ~feti1().
long nrbm |
number of rigid body motions (RBM)
Definition at line 196 of file feti1.h.
Referenced by feti1(), hmatrix(), hmatrixsize(), lagrmultdispl(), mpcg(), qvector(), and solve_system().
long * nrbmdom |
Definition at line 150 of file feti1.h.
Referenced by feti1(), hmatrix(), hmatrixsize(), lagrmultdispl(), qvector(), and ~feti1().
long * rbmadr |
Definition at line 152 of file feti1.h.
Referenced by feti1(), hmatrix(), hmatrixsize(), lagrmultdispl(), qvector(), solve_system(), and ~feti1().
matrix in the dense storage scheme (it contains Schur complements which are dense)
Definition at line 256 of file feti1.h.
Referenced by dirichletprec(), and subdomain_matrix().
each processor subdomain matrix for preconditioning
Definition at line 254 of file feti1.h.
Referenced by feti1(), lumpedprec(), and subdomain_matrix().
long tnbn |
Definition at line 89 of file feti1n.h.
Referenced by coarse_dofs(), contributing_nodes_dofs(), and globcnnum_feti().
long totmaxndofn |
double* wscalmat |
double zero |
Definition at line 132 of file feti1.h.
Referenced by feti1(), lagrmultdispl(), mpcg(), and solve_system().