feti1 Class Reference

#include <feti1.h>

List of all members.

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
densematsmdm
 matrix in the dense storage scheme (it contains Schur complements which are dense)
skylinesmsky
long tnbn
long totmaxndofn
double * wscalmat
 M.
double zero

Detailed Description

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.


Constructor & Destructor Documentation

feti1 ( int  np,
int  mr,
long  nd 
)
~feti1 (  ) 

Definition at line 47 of file feti1.cpp.

References edofs, glcor, lcn, lggl, myrank, ncnd, nproc, nrbmdom, and rbmadr.

feti1 ( int  np,
int  mr,
int  nd 
)

Definition at line 6 of file feti1n.cpp.

References aerrcg, anicg, enrbm, errcg, hsize, inc, lcngcn, lithr, myrank, nbn, nbndom, ndof, ndom, ngdof, nicg, nodnum, nproc, nrbm, nrbmdom, rbmadr, and zero.

~feti1 (  ) 
feti1 ( int  np,
int  mr,
int  nd 
)
~feti1 (  ) 

Member Function Documentation

void buff_coarse ( double *  cv,
double *  buff,
long  nd 
)

function assembles contributions to the coarse vector from buffer

Parameters:
cv - coarse vector
buff - buffer
nd - number of subdomain

JK, 31.7.2005

Definition at line 699 of file feti1.cpp.

References ccn, and ncdofd.

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

void buff_local ( double *  lv,
double *  buff 
)

function assembles contributions from buffer to local vector

Parameters:
lv - local vector
buff - buffer

JK, 31.7.2005

Definition at line 736 of file feti1.cpp.

References edofs, and ncdof.

Referenced by lagrmultdispl(), and mpcg().

void buffglob ( double *  buff,
double *  gv,
long  nd 
)

function localizes components from buffer to global vector (belonging to reduced problem)

Parameters:
buff - buffer
gv - global vector
nd - number of subdomain

JK, 10.6.2003

Definition at line 623 of file feti1n.cpp.

References glcor, and lggl.

Referenced by hmatrix(), and mpcg().

void buffloc ( double *  buff,
double *  lv 
)

function localizes components from buffer to local vector (belonging to one subdomain)

Parameters:
buff - buffer
lv - local vector

JK, 10.6.2003

Definition at line 579 of file feti1n.cpp.

References lcn, and nclggl.

Referenced by mpcg().

void coarse_buff ( double *  cv,
double *  buff,
long  nd 
)

function extracts contributions from coarse vector to buffer

Parameters:
cv - coarse vector
buff - buffer
nd - number of subdomain

JK, 31.7.2005

Definition at line 718 of file feti1.cpp.

References ccn, and ncdofd.

Referenced by lagrmultdispl(), and mpcg().

void coarse_dofs ( partop ptop,
FILE *  out 
)

function generates coarse degrees of freedom

Parameters:
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().

void coarse_problem_ordering ( gtopology top,
partop ptop,
long *  domproc,
FILE *  out 
)

function orders unknowns in coarse problem and assembles connection among local and coarse unknowns

Parameters:
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().

void contributing_nodes_dofs ( gtopology top,
partop ptop,
long *  domproc,
FILE *  out 
)

function assembles lists of contributing nodes and unknowns (DOFs) to the coarse problem

Parameters:
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 
)

Definition at line 2051 of file feti1.cpp.

References cnprec, densemat::mxv_dm(), ndofprec, p, and smdm.

Referenced by mpcg().

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

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, 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

Parameters:
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

Parameters:
buff - buffer
gv - global vector
nd - number of subdomain

JK, 10.6.2003

Definition at line 600 of file feti1n.cpp.

References glcor, and lggl.

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)

Parameters:
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

Parameters:
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

Parameters:
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

Parameters:
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

Parameters:
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

Parameters:
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)

Parameters:
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

Parameters:
buff - buffer
lv - local vector

JK, 10.6.2003 function localizes components from global vector (belonging to reduced problem) to the buffer

Parameters:
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

Parameters:
buff - buffer
gv - global vector
nd - number of subdomain

JK, 10.6.2003 function computes size of matrix H

Parameters:
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

Parameters:
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 
)
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

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}
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

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

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 
)

function extracts contributions from local vector to buffer

Parameters:
lv - local vector
buff - buffer

JK, 31.7.2005

Definition at line 673 of file feti1.cpp.

References edofs, and ncdof.

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

void locbuff ( double *  buff,
double *  lv 
)

function localizes components from local vector (belonging to one subdomain) to the buffer (which will be usualy sent to master)

Parameters:
buff - buffer
lv - local vector

JK, 10.6.2003

Definition at line 560 of file feti1n.cpp.

References lcn, and nclggl.

Referenced by hmatrix(), and mpcg().

void locglobfeti ( gtopology top,
double *  gv,
double *  lv 
)

function localizes local vector components to global vector localization process is generated by FETI ordering

Parameters:
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 
)

Definition at line 1968 of file feti1.cpp.

References lwscalmat, and ndofprec.

void lumpedprec ( gtopology top,
double *  v,
double *  pv 
)
void lumpedprec ( gtopology top,
double *  v,
double *  pv 
)

function makes preconditioning by lumped matrix

Parameters:
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 
)

Definition at line 1996 of file feti1.cpp.

References cnprec, skyline::mxv_sky(), ndofprec, p, and smsky.

Referenced by mpcg().

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

Parameters:
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

Parameters:
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

Parameters:
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().

void number_contributing_nodes_dofs ( gtopology top,
partop ptop,
long *  domproc,
FILE *  out 
)

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

Parameters:
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

Parameters:
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

Parameters:
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

Parameters:
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 
)

Definition at line 1944 of file feti1.cpp.

References wscalmat.

Referenced by mpcg().

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 
)

function orders unknowns on subdomains with respect to the FETI method

Parameters:
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().


Member Data Documentation

double aerrcg

Definition at line 130 of file feti1.h.

Referenced by feti1(), and mpcg().

long anicg

Definition at line 126 of file feti1.h.

Referenced by feti1(), and mpcg().

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* cpreccn

Definition at line 264 of file feti1.h.

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().

double errcg

Definition at line 128 of file feti1.h.

Referenced by feti1(), and mpcg().

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 280 of file feti1.h.

Definition at line 134 of file feti1.h.

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* inc

Definition at line 92 of file feti1o.h.

Referenced by feti1().

long * lcn

Definition at line 115 of file feti1.h.

Referenced by buffloc(), feti1(), globcnnum_feti(), globlocfeti(), initiate(), locbuff(), locglobfeti(), and ~feti1().

long** lcngcn

Definition at line 90 of file feti1o.h.

Referenced by 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
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().

int ndom

Definition at line 82 of file feti1n.h.

int ndom

number of subdomain

Definition at line 103 of file feti1.h.

Referenced by feti1().

long ngdof

Definition at line 135 of file feti1n.h.

Referenced by feti1(), hmatrix(), hmatrixsize(), lagrmultdispl(), and mpcg().

long nicg

Definition at line 124 of file feti1.h.

Referenced by feti1(), and mpcg().

long* nodnum

Definition at line 94 of file feti1o.h.

Referenced by feti1(), globlocfeti(), and locglobfeti().

int nproc
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().

Definition at line 87 of file feti1o.h.

double* wscalmat

M.

Definition at line 247 of file feti1.h.

Referenced by feti1(), initiate(), and scaling().

double zero

Definition at line 132 of file feti1.h.

Referenced by feti1(), lagrmultdispl(), mpcg(), and solve_system().


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

Generated by  doxygen 1.6.2