#include <partopjk.h>
Public Member Functions | |
void | coarse_code_numbers (FILE *out) |
function assembles coarse code numbers for particular subdomains | |
void | coarse_code_numbers_feti (psolver ps, FILE *out) |
void | coupled_dofs_detection (FILE *out) |
function detects coupled DOFs in the problem | |
void | dof_on_master (gtopology *top, long *domproc, FILE *out) |
function assembles array dofm which contains DOF indicators on each node | |
void | full_node_domain (FILE *out) |
void | internal_boundary_nodes_detection (FILE *out) |
function detects internal and boundary/interface nodes | |
void | lagrange_multipliers (psolver ps, FILE *out) |
void | ltg_conversion (long *ltg, long *domproc, FILE *out, char *proc_name) |
function converts any mesh description to the all_nodes mesh description | |
void | ltg_on_master (long *ltg, long *domproc, FILE *out) |
function assembles the array mltg on the master which stores all ltg arrays from processors | |
void | ndofn_on_master (gtopology *top, long *domproc, FILE *out) |
function assembles array ndofnm which contains the number of DOFs for each node | |
void | node_domain (FILE *out) |
function assembles array noddom | |
void | node_multiplicity (FILE *out) |
function assembles array nodmultip which contains nodal multiplicity | |
void | numbers_of_nodes_on_subdomains (gtopology *top, long *domproc, FILE *out) |
function assembles the array nnsd which contains the numbers of nodes on subdomains | |
partopjk (int np, int mr, meshdescription meshd, char *nameproc, int nl) | |
constructor | |
void | schur_coarse_ordering (FILE *out) |
function assembles ordering of the coarse problem with respect to the Schur complement method | |
long | schur_local_ordering (gtopology *top, FILE *out) |
function assembles ordering of unknowns on subdomains | |
long | vse (long *ltg, gtopology *top, long *domproc, FILE *out, char *proc_name) |
~partopjk () | |
destructor | |
Public Attributes | |
long * | bdof |
long ** | bdofd |
long * | bnid |
long ** | dofm |
long ** | fullnoddom |
long * | inid |
long ** | lagrmultip |
long | maxnbdofd |
long | maxndofd |
long | maxnn |
meshdescription | md |
long ** | mltg |
int | myrank |
int | nameLength |
length of the processor name | |
long | nbdof |
long * | nbdofd |
long | nbn |
long * | nbnd |
long | ndof |
long | ndofc |
long * | ndofnm |
long | nidof |
long | nin |
long * | nind |
long | nn |
long * | nnsd |
long * | noddom |
long * | nodmultip |
int | nproc |
char | procName [MPI_MAX_PROCESSOR_NAME] |
name of processor | |
long | tnnp |
JK, huge revision 22.8.2011
Definition at line 14 of file partopjk.h.
partopjk | ( | int | np, | |
int | mr, | |||
meshdescription | meshd, | |||
char * | nameproc, | |||
int | nl | |||
) |
constructor
constructor
np | - the number of processors | |
mr | - my rank (process id) | |
meshd | - type of mesh description | |
*nameproc | - name of processor | |
nl | - length of processor name |
JK, 22.8.2011
Definition at line 17 of file partopjk.cpp.
References bdofd, bnid, dofm, fullnoddom, inid, lagrmultip, maxnbdofd, maxndofd, maxnn, md, mltg, myrank, nameLength, nbdof, nbdofd, nbn, nbnd, ndof, ndofc, ndofnm, nidof, nin, nind, nn, nnsd, noddom, nodmultip, nproc, procName, and tnnp.
~partopjk | ( | ) |
void coarse_code_numbers | ( | FILE * | out | ) |
function assembles coarse code numbers for particular subdomains
function assembles coarse code numbers for particular subdomains
only nodes on boundary/interface or nodes with coupled DOFs across subdomains are taken into account
out | - output file |
JK, 24.8.2011
Definition at line 1220 of file partopjk.cpp.
References bdof, bdofd, dofm, maxnbdofd, mltg, MPI_ANY_SOURCE, MPI_ANY_TAG, MPI_Barrier(), MPI_COMM_WORLD, MPI_LONG, MPI_Recv(), MPI_Send(), myrank, nbdof, nbdofd, nbnd, ndofc, ndofnm, nnsd, nodmultip, nproc, and stat.
Referenced by vse().
void coarse_code_numbers_feti | ( | psolver | ps, | |
FILE * | out | |||
) |
FETI function assembles coarse code numbers for particular subdomains
function assembles coarse code numbers for particular subdomains
only nodes on boundary/interface or nodes with coupled DOFs across subdomains are taken into account
ps | - parallel solver | |
out | - output file |
JK, 16.10.2011
Definition at line 1633 of file partopjk.cpp.
References dofm, fullnoddom, lagrmultip, maxnbdofd, mltg, MPI_ANY_SOURCE, MPI_ANY_TAG, MPI_Barrier(), MPI_COMM_WORLD, MPI_LONG, MPI_Recv(), MPI_Send(), myrank, ndofnm, nnsd, nodmultip, nonredundant, nproc, redundant, and stat.
void coupled_dofs_detection | ( | FILE * | out | ) |
function detects coupled DOFs in the problem
function detects coupled DOFs in the problem coupled DOFs within one subdomain are not important the coupled DOFs on two or more subdomains have to be detected also DOFs coupled with any boundary/interface DOF have to be found such coupled DOFs have to be denoted as the boundary/interface DOFs
DOF indicators dofm[i][j]<0 - nonzero prescribed value of the DOF dofm[i][j]=0 - zero prescribed value of the DOF dofm[i][j]=1 - unknown degree of freedom dofm[i][j]>1 - coupled DOF
out | - output file |
JK, 1.7.2005, revision 23.8.2011
Definition at line 656 of file partopjk.cpp.
References dofm, myrank, ndofnm, noddom, nodmultip, and tnnp.
Referenced by vse().
void dof_on_master | ( | gtopology * | top, | |
long * | domproc, | |||
FILE * | out | |||
) |
function assembles array dofm which contains DOF indicators on each node
function assembles array dofm
top | - pointer to general topology | |
domproc | - domain-processor correspondence | |
out | - output file |
JK, 1.7.2005, revision 22.8.2011
Definition at line 564 of file partopjk.cpp.
References dofm, gtopology::give_dof(), gtopology::give_ndofn(), maxndofd, mltg, MPI_ANY_SOURCE, MPI_ANY_TAG, MPI_Barrier(), MPI_COMM_WORLD, MPI_LONG, MPI_Recv(), MPI_Send(), MPI_Status::MPI_TAG, myrank, ndofnm, nn, nnsd, nproc, stat, and tnnp.
Referenced by vse().
void full_node_domain | ( | FILE * | out | ) |
FETI function assembles array fullnoddom
function assembles array fullnoddom FETI
out | - output file |
JK, 15.10.2011
Definition at line 1451 of file partopjk.cpp.
References fullnoddom, mltg, myrank, nnsd, nodmultip, nproc, and tnnp.
void internal_boundary_nodes_detection | ( | FILE * | out | ) |
function detects internal and boundary/interface nodes
function detects internal and boundary/interface nodes
out | - output file |
JK, 24.8.2011
Definition at line 811 of file partopjk.cpp.
References bnid, inid, maxnn, mltg, MPI_ANY_SOURCE, MPI_ANY_TAG, MPI_Barrier(), MPI_COMM_WORLD, MPI_LONG, MPI_Recv(), MPI_Send(), myrank, nbn, nbnd, nin, nind, nn, nnsd, nodmultip, nproc, and stat.
Referenced by vse().
void lagrange_multipliers | ( | psolver | ps, | |
FILE * | out | |||
) |
FETI function generates Lagrange multipliers
function generates Lagrange multipliers FETI
ps | - parallel solver | |
out | - output file |
JK, 16.10.2011
Definition at line 1527 of file partopjk.cpp.
References dofm, lagrmultip, myrank, ndofc, ndofnm, nodmultip, nonredundant, redundant, and tnnp.
void ltg_conversion | ( | long * | ltg, | |
long * | domproc, | |||
FILE * | out, | |||
char * | proc_name | |||
) |
function converts any mesh description to the all_nodes mesh description
function converts any mesh description to the all_nodes mesh description
ltg | - local to global correspondence | |
domproc | - domain-processor correspondence | |
out | - output file | |
proc_name | - processor name |
JK, 1.7.2005, revision 22.8.2011
Definition at line 303 of file partopjk.cpp.
References all_nodes, bound_nodes, md, mltg, myrank, neg_bound_nodes, nnsd, nproc, par_print_err(), and tnnp.
Referenced by vse().
void ltg_on_master | ( | long * | ltg, | |
long * | domproc, | |||
FILE * | out | |||
) |
function assembles the array mltg on the master which stores all ltg arrays from processors
function assembles the array mltg on the master processor
ltg | - local to global correspondence | |
domproc | - domain-processor correspondence | |
out | - output file |
JK, 1.7.2005, revision 22.8.2011
Definition at line 239 of file partopjk.cpp.
References maxnn, mltg, MPI_ANY_SOURCE, MPI_ANY_TAG, MPI_Barrier(), MPI_COMM_WORLD, MPI_LONG, MPI_Recv(), MPI_Send(), MPI_Status::MPI_TAG, myrank, nn, nnsd, nproc, and stat.
Referenced by vse().
void ndofn_on_master | ( | gtopology * | top, | |
long * | domproc, | |||
FILE * | out | |||
) |
function assembles array ndofnm which contains the number of DOFs for each node
function assembles array ndofnm function determines the variable maxndofd
top | - pointer to general topology | |
domproc | - domain-processor correspondence | |
out | - output file |
JK, 1.7.2005, revision 22.8.2011
Definition at line 484 of file partopjk.cpp.
References gtopology::give_ndofn(), maxndofd, maxnn, mltg, MPI_ANY_SOURCE, MPI_ANY_TAG, MPI_Barrier(), MPI_COMM_WORLD, MPI_LONG, MPI_Recv(), MPI_Send(), MPI_Status::MPI_TAG, myrank, ndofnm, nn, nnsd, nproc, stat, and tnnp.
Referenced by vse().
void node_domain | ( | FILE * | out | ) |
void node_multiplicity | ( | FILE * | out | ) |
void numbers_of_nodes_on_subdomains | ( | gtopology * | top, | |
long * | domproc, | |||
FILE * | out | |||
) |
function assembles the array nnsd which contains the numbers of nodes on subdomains
function assembles the array nnsd on the master processor variable nn (the number of particular subdomain) is assigned
top | - pointer to general topology | |
domproc | - domain-processor correspondence | |
out | - output file |
JK, 1.7.2005, revision 22.8.2011
Definition at line 177 of file partopjk.cpp.
References maxnn, MPI_ANY_SOURCE, MPI_ANY_TAG, MPI_Barrier(), MPI_COMM_WORLD, MPI_LONG, MPI_Recv(), MPI_Send(), MPI_Status::MPI_TAG, myrank, gtopology::nn, nn, nnsd, nproc, and stat.
Referenced by vse().
void schur_coarse_ordering | ( | FILE * | out | ) |
function assembles ordering of the coarse problem with respect to the Schur complement method
function assembles ordering of the coarse problem with respect to the Schur complement method
only nodes on boundary/interface or nodes with coupled DOFs across subdomains are taken into account
out | - output file |
JK, 24.8.2011
Definition at line 1105 of file partopjk.cpp.
References dofm, myrank, ndofc, ndofnm, nodmultip, and tnnp.
Referenced by vse().
long schur_local_ordering | ( | gtopology * | top, | |
FILE * | out | |||
) |
function assembles ordering of unknowns on subdomains
function assembles ordering of unknowns on subdomains
top | - pointer to general topology | |
out | - output file |
JK, 25.8.2011
Definition at line 944 of file partopjk.cpp.
References bnid, gtopology::cnstate, gtopology::give_dof(), gtopology::give_ndofn(), inid, nbdof, nbn, ndof, nidof, nin, nn, and gtopology::save_dof().
Referenced by vse().
long vse | ( | long * | ltg, | |
gtopology * | top, | |||
long * | domproc, | |||
FILE * | out, | |||
char * | proc_name | |||
) |
Definition at line 1391 of file partopjk.cpp.
References coarse_code_numbers(), coupled_dofs_detection(), dof_on_master(), internal_boundary_nodes_detection(), ltg_conversion(), ltg_on_master(), ndof, ndofn_on_master(), node_domain(), node_multiplicity(), numbers_of_nodes_on_subdomains(), schur_coarse_ordering(), and schur_local_ordering().
long* bdof |
array containing coarse code numbers of boundary/interface DOFs on subdomain it contains nbdof components bdof[i]=j - the i-th boundary/interface DOF has the coarse code number j it is allocated and assembled in the function coarse_code_numbers
Definition at line 149 of file partopjk.h.
Referenced by coarse_code_numbers().
long** bdofd |
array containing coarse code numbers of boundary/interface DOFs on subdomains it contains nproc rows and nbdofd[i] columns bdofd[i][j]=k - the j-th boundary/interface DOF on the i-th subdomain has the coarse code number k it is allocated and assembled in the function coarse_code_numbers
Definition at line 226 of file partopjk.h.
Referenced by coarse_code_numbers(), schurcompl::initiate(), partopjk(), and ~partopjk().
long* bnid |
array containing boundary/interface nodes on subdomains it contains nbn components bnid[i]=j - the i-th boundary/interface node is the j-th in gtopology list array is allocated in function internal_boundary_nodes_detection
Definition at line 137 of file partopjk.h.
Referenced by internal_boundary_nodes_detection(), partopjk(), schur_local_ordering(), schurcompl::selected_norm_calculation(), and ~partopjk().
long** dofm |
array of DOF indicators on nodes it contains tnnp rows and ndofnm[i] columns dofm[i][j]=k - the j-th DOF on the i-th node has id equal to k it is assembled in the function dof_on_master
Definition at line 202 of file partopjk.h.
Referenced by coarse_code_numbers(), coarse_code_numbers_feti(), coupled_dofs_detection(), dof_on_master(), lagrange_multipliers(), partopjk(), schur_coarse_ordering(), and ~partopjk().
long** fullnoddom |
FETI array of full node-domain correspondence it contains tnnp rows and nodmultip[i] columns fullnoddom[i][j]=k - the j-th subdomain which shares the i-th node has number (id) k it is assembled in the function full_node_domain
Definition at line 234 of file partopjk.h.
Referenced by coarse_code_numbers_feti(), full_node_domain(), partopjk(), and ~partopjk().
long* inid |
array containing internal nodes on subdomains it contains nin components inid[i]=j - the i-th internal node is the j-th in gtopology list array is allocated in function internal_boundary_nodes_detection
Definition at line 143 of file partopjk.h.
Referenced by internal_boundary_nodes_detection(), partopjk(), schur_local_ordering(), schurcompl::selected_norm_calculation(), and ~partopjk().
long** lagrmultip |
FETI array of Lagrange multipliers, it contains coarse code numbers it contains tnnp rows and nc columns nc is either (nodmultip[i]-1)*ndofnm[i] or nodmultip[i]*(nodmultip[i]-1)/2*ndofnm[i] lagrmultip[i][j]=k - the j-th Lagrange multiplier in the i-th node has coarse number k
Definition at line 241 of file partopjk.h.
Referenced by coarse_code_numbers_feti(), lagrange_multipliers(), partopjk(), and ~partopjk().
long maxnbdofd |
the maximum number of boundary/interface DOFs on subdomain the variable is determined in the function internal_boundary_nodes_detection
Definition at line 130 of file partopjk.h.
Referenced by coarse_code_numbers(), coarse_code_numbers_feti(), schurcompl::initiate(), and partopjk().
long maxndofd |
the maximum number of DOFs on subdomains at the beginning, it contains the maximum number of possible DOFs later on, it may be reduced due to coupled DOFs, constraints, etc. it is determined in the function ndofn_on_master
Definition at line 106 of file partopjk.h.
Referenced by dof_on_master(), ndofn_on_master(), and partopjk().
long maxnn |
the maximum number of nodes on subdomain determined in the function numbers_of_nodes_on_subdomains
Definition at line 100 of file partopjk.h.
Referenced by internal_boundary_nodes_detection(), ltg_on_master(), ndofn_on_master(), numbers_of_nodes_on_subdomains(), and partopjk().
mesh description md = 1 - all nodes have their global node number md = 2 - only boundary nodes have coarse number, internal nodes are denoted by -1 md = 3 - all nodes have their global node number, boundary nodes have their global number multiplied by -1 determined in the constructor
Definition at line 89 of file partopjk.h.
Referenced by ltg_conversion(), and partopjk().
long** mltg |
array of local to global correspondence on the master it contains nproc rows and nnsd[i] columns mltg[i][j]=k - the j-th node on the i-th subdomain has global number k it is allocated and assembled in the function ltg_on_master
Definition at line 174 of file partopjk.h.
Referenced by coarse_code_numbers(), coarse_code_numbers_feti(), dof_on_master(), full_node_domain(), internal_boundary_nodes_detection(), ltg_conversion(), ltg_on_master(), ndofn_on_master(), node_domain(), node_multiplicity(), partopjk(), and ~partopjk().
int myrank |
rank of processor (processor id) determined in the constructor
Definition at line 83 of file partopjk.h.
Referenced by coarse_code_numbers(), coarse_code_numbers_feti(), coupled_dofs_detection(), dof_on_master(), full_node_domain(), internal_boundary_nodes_detection(), lagrange_multipliers(), ltg_conversion(), ltg_on_master(), ndofn_on_master(), node_domain(), node_multiplicity(), numbers_of_nodes_on_subdomains(), partopjk(), schur_coarse_ordering(), and ~partopjk().
int nameLength |
long nbdof |
the number of boundary/interface DOFs on subdomain the variable is determined in the function schur_local_ordering
Definition at line 122 of file partopjk.h.
Referenced by coarse_code_numbers(), schurcompl::initiate(), partopjk(), and schur_local_ordering().
long* nbdofd |
array containing the numbers of boundary/interface DOFs on subdomains it contains nproc components nbdofd[i]=j - the i-th subdomain contains j boundary/interface DOFs array is allocated in the function coarse_code_numbers
Definition at line 220 of file partopjk.h.
Referenced by coarse_code_numbers(), schurcompl::initiate(), partopjk(), and ~partopjk().
long nbn |
the number of boundary/interface nodes on subdomain variable is determined in function internal_boundary_nodes_detection
Definition at line 114 of file partopjk.h.
Referenced by internal_boundary_nodes_detection(), partopjk(), schur_local_ordering(), and schurcompl::selected_norm_calculation().
long* nbnd |
array containing the numbers of boundary/interface nodes on subdomains it contains nproc components nbnd[i]=j - the i-th domain contains j boundary/interface nodes array is allocated in function internal_boundary_nodes_detection
Definition at line 208 of file partopjk.h.
Referenced by coarse_code_numbers(), internal_boundary_nodes_detection(), partopjk(), and ~partopjk().
long ndof |
the number of DOFs on subdomain the variable is determined in the function schur_local_ordering
Definition at line 126 of file partopjk.h.
Referenced by schurcompl::initiate(), partopjk(), schur_local_ordering(), and vse().
long ndofc |
the number of DOFs in the coarse problem it is determined in the function schur_coarse_ordering for the Schur complement method it is determined in the function lagrange_multipliers for the FETI method
Definition at line 162 of file partopjk.h.
Referenced by coarse_code_numbers(), schurcompl::initiate(), lagrange_multipliers(), partopjk(), and schur_coarse_ordering().
long* ndofnm |
array of numbers of DOFs on nodes it contains tnnp components ndofnm[i]=j - the i-th node contains j DOFs it is assembled in the function ndofn_on_master
Definition at line 196 of file partopjk.h.
Referenced by coarse_code_numbers(), coarse_code_numbers_feti(), coupled_dofs_detection(), dof_on_master(), lagrange_multipliers(), ndofn_on_master(), partopjk(), schur_coarse_ordering(), and ~partopjk().
long nidof |
the number of internal DOFs on subdomain the variable is determined in the function schur_local_ordering
Definition at line 118 of file partopjk.h.
Referenced by schurcompl::initiate(), partopjk(), and schur_local_ordering().
long nin |
the number of internal nodes variable is defined in function internal_boundary_nodes_detection
Definition at line 110 of file partopjk.h.
Referenced by internal_boundary_nodes_detection(), partopjk(), schur_local_ordering(), and schurcompl::selected_norm_calculation().
long* nind |
array containing the numbers of internal nodes on subdomains it contains nproc components nind[i]=j - the i-th domain contains j internal nodes array is allocated in function internal_boundary_nodes_detection
Definition at line 214 of file partopjk.h.
Referenced by internal_boundary_nodes_detection(), partopjk(), and ~partopjk().
long nn |
the number of nodes on subdomain determined in the function numbers_of_nodes_on_subdomains
Definition at line 97 of file partopjk.h.
Referenced by dof_on_master(), internal_boundary_nodes_detection(), ltg_on_master(), ndofn_on_master(), numbers_of_nodes_on_subdomains(), partopjk(), and schur_local_ordering().
long* nnsd |
array containing the numbers of nodes on subdomains it contains nproc components nnsd[i]=j - the i-th subdomain contains j nodes it is allocated and assembled in the function numbers_of_nodes_on_subdomains
Definition at line 168 of file partopjk.h.
Referenced by coarse_code_numbers(), coarse_code_numbers_feti(), dof_on_master(), full_node_domain(), internal_boundary_nodes_detection(), ltg_conversion(), ltg_on_master(), ndofn_on_master(), node_domain(), node_multiplicity(), numbers_of_nodes_on_subdomains(), partopjk(), and ~partopjk().
long* noddom |
array of node-domain correspondence it contains tnnp components noddom[i]=j - the i-th node belongs to the j-th subdomain it is assembled in the function node_domain it is used for detection of coupled DOFs in the Schur complement method only nodes on different subdomains are taken into account, therefore it is enough to allocate only one number for each node
Definition at line 190 of file partopjk.h.
Referenced by coupled_dofs_detection(), node_domain(), partopjk(), and ~partopjk().
long* nodmultip |
array of nodal multiplicity, the multiplicity is the number of subdomains which share the node it contains tnnp components nodmultip[i]=j - the i-th node (in global ordering) is shared by j subdomains it is assembled in the function node_multiplicity
Definition at line 181 of file partopjk.h.
Referenced by coarse_code_numbers(), coarse_code_numbers_feti(), coupled_dofs_detection(), full_node_domain(), internal_boundary_nodes_detection(), lagrange_multipliers(), node_multiplicity(), partopjk(), schur_coarse_ordering(), and ~partopjk().
int nproc |
the number of processors determined in the constructor
Definition at line 80 of file partopjk.h.
Referenced by coarse_code_numbers(), coarse_code_numbers_feti(), dof_on_master(), full_node_domain(), internal_boundary_nodes_detection(), ltg_conversion(), ltg_on_master(), ndofn_on_master(), node_domain(), node_multiplicity(), numbers_of_nodes_on_subdomains(), partopjk(), and ~partopjk().
char procName[MPI_MAX_PROCESSOR_NAME] |
long tnnp |
the total number of nodes in the whole problem it is determined in the function ltg_conversion
Definition at line 157 of file partopjk.h.
Referenced by coupled_dofs_detection(), dof_on_master(), full_node_domain(), lagrange_multipliers(), ltg_conversion(), ndofn_on_master(), node_domain(), node_multiplicity(), partopjk(), schur_coarse_ordering(), and ~partopjk().