#include <seqselnodes.h>
Public Member Functions | |
void | contrib_dofs_cn (FILE *out) |
void | contrib_dofs_ln (gtopology *top, FILE *out) |
void | define_feti_implementation (fetiimplem fi) |
function defines the type of implementation of the FETI method | |
void | dof_feti (gtopology *top, FILE *out) |
function assembles array snndofmas | |
void | dof_indicators (gtopology *top, FILE *out) |
void | ndofn_on_master (gtopology *top, FILE *out) |
void | node_coarse_numbers (FILE *out) |
void | number_all_dofs (gtopology *top, FILE *out) |
void | number_contrib_dofs (gtopology *top, FILE *out) |
variable fetiimpl is determined | |
long | prepare_feti (fetiimplem fi, gtopology *top, FILE *out) |
void | prepare_schur (gtopology *top, FILE *out) |
void | schur_ordering (long **dofind, FILE *out) |
seqselnodes (long nd, long *nnsd, long **jj, long **nodmultip, long **ggnbn, long **icnbnmas, long itnbn, long *iicmultip, long **ilnbncn, long **iggnbncn, long **isid, meshdescription d, FILE *out, long mespr) | |
~seqselnodes () | |
Public Attributes | |
long ** | cndofmas |
long ** | cnsnmas |
long ** | codensn |
long **** | doffeti |
fetiimplem | fetiimpl |
long ** | ggnbncn |
long ** | ggnsn |
long * | icmultip |
long ** | lnbncn |
long ** | lndofmas |
long ** | lnsn |
meshdescription | md |
long * | ndofnsn |
long | ns |
long * | nsnmas |
long ** | sid |
long *** | sndofmas |
long ** | snggnbncn |
long * | snicmultip |
long ** | snlnbncn |
long * | snndofmas |
long ** | snndofnmas |
long ** | snsid |
long | tnbn |
long | tndofsn |
long | tnsn |
class deals with selected nodes on subdomains the class is sequential version of the class selnodes nodes could be selected for Schur complement method, FETI method, etc.
JK, 14.9.2007
Definition at line 16 of file seqselnodes.h.
seqselnodes | ( | long | nd, | |
long * | nnsd, | |||
long ** | jj, | |||
long ** | nodmultip, | |||
long ** | ggnbn, | |||
long ** | icnbnmas, | |||
long | itnbn, | |||
long * | iicmultip, | |||
long ** | ilnbncn, | |||
long ** | iggnbncn, | |||
long ** | isid, | |||
meshdescription | d, | |||
FILE * | out, | |||
long | mespr | |||
) |
constructor
nd | - number of subdomains | |
nnsd | - number of all nodes on subdomains | |
jj | - array containing list of selected nodes it contains nd,innsd[i] components | |
nodmultip | - array containing number of subdomains which share the nodes | |
ggnbn | - array containing global glued numbers of boundary/interface nodes | |
icnbnmas | - array containing coarse numbers of interface/boundary nodes it contains nd,nbnd[i] components | |
itnbn | - total number of boundary/interface nodes | |
iicmultip | - array containing node multiplicity of boundary/interface nodes | |
ilnbncn | - local numbers of boundary/interface nodes appropriate to coarse node | |
iggnbncn | - global glued numbers of boundary/interface nodes appropriate to coarse node | |
isid | - subdomain id of interface/boundary nodes of the coarse node | |
d | - type of mesh description | |
out | - output stream | |
mespr | - message printing indicator |
jj[i][k]>-1 - the k-th node on the i-th subdomain is selected
ns - number of subdomains is determined tnbn - total number of boundary nodes is determined md - mesh description is determined nsnmas - array of numbers of selected nodes on subdomains is assembled ggnsn - array of global glued numbers of selected nodes is assembled cnsnmas - array of coarse numbers of selected boundary/interface nodes is assembled icmultip - array of multiplicity of all boundary/interface nodes is assembled ggnbncn - local numbers of boundary/interface nodes appropriate to coarse node sid - subdomain id of interface/boundary nodes appropriate to coarse node
JK, 14.9.2007, 5.7.2009
Definition at line 45 of file seqselnodes.cpp.
References cndofmas, cnsnmas, codensn, doffeti, fetiimpl, ggnbncn, ggnsn, icmultip, lnbncn, lnsn, md, ndofnsn, no_impl, ns, nsnmas, print_err(), sid, sndofmas, snggnbncn, snicmultip, snlnbncn, snndofmas, snndofnmas, snsid, tnbn, tndofsn, and tnsn.
~seqselnodes | ( | ) |
void contrib_dofs_cn | ( | FILE * | out | ) |
function assembles coarse code numbers of DOFs contributing to the coarse proble in the FETI method
out | - output file |
JK, 14.9.2007, revised 5.10.2009
Definition at line 2574 of file seqselnodes.cpp.
References boolean_matrices, cndofmas, doffeti, fetiimpl, ndofnsn, nonredundant, ns, print_err(), redundant, snicmultip, snndofmas, snsid, and tnsn.
Referenced by prepare_feti().
void contrib_dofs_ln | ( | gtopology * | top, | |
FILE * | out | |||
) |
function assembles local number of DOFs contributing to the coarse problem in the FETI method
top | - pointer to the topology | |
out | - output file |
JK, 14.9.2007, revised 2.10.2009
Definition at line 2362 of file seqselnodes.cpp.
References boolean_matrices, doffeti, fetiimpl, gtopology::give_dof(), gtopology::give_ndofn(), lndofmas, ndofnsn, nonredundant, ns, print_err(), redundant, snggnbncn, snicmultip, snndofmas, snsid, and tnsn.
Referenced by prepare_feti().
void define_feti_implementation | ( | fetiimplem | fi | ) |
function defines the type of implementation of the FETI method
function computes multiplicity of selected nodes
function assembles array nodmultip
JK, 14.9.2007 function assembles lists of connected nodes to coarse nodes and numbers of subdomains which contain connected nodes
arrays ljn and lsn are assembled
JK, 14.9.2007 function assembles indicators of code numbers and then generates code numbers
JK, 14.9.2007 function determines the multiplicity of unknowns the multiplicity of unknown is obtained from the multiplicity of nodes
array dofmultip is allocated and assembled
out | - output file |
JB function determines number of contributions to coarse problem from particular subdomains
maxndof is rewritten ndofdom is rewritten
array ncn is assembled
JK, 14.9.2007 function assmebles nodes contributing to the coarse proble in the FETI method
JK, 14.9.2007 function defines type of implementation of the FETI method possible types can be found in the file galias.h
fi | - type of the FETI implementation |
JK, 29.9.2009
Definition at line 1979 of file seqselnodes.cpp.
References fetiimpl.
Referenced by prepare_feti().
void dof_feti | ( | gtopology * | top, | |
FILE * | out | |||
) |
function assembles array snndofmas
function assembles indicators of code numbers and then generates code numbers
top | - pointer to the general topology | |
out | - output file |
JK, 14.9.2007, revised 29.9.2009
Definition at line 2108 of file seqselnodes.cpp.
References boolean_matrices, doffeti, fetiimpl, gtopology::give_dof(), gtopology::give_ndofn(), ndofnsn, nonredundant, print_err(), redundant, snggnbncn, snicmultip, tndofsn, and tnsn.
Referenced by prepare_feti().
void dof_indicators | ( | gtopology * | top, | |
FILE * | out | |||
) |
function assembles DOFs indicators at selected nodes
function assembles the array sndofmas - array of DOFs or indicators at selected nodes
top | - pointer to the general topology | |
out | - output file |
JK, 14.9.2007
Definition at line 619 of file seqselnodes.cpp.
References ggnsn, gtopology::give_dof(), ns, nsnmas, sndofmas, and snndofnmas.
Referenced by prepare_schur().
void ndofn_on_master | ( | gtopology * | top, | |
FILE * | out | |||
) |
function collects numbers of DOFs on selected nodes numbers are stored on master in the array snndofnmas
array snndofnmas is assembled
top | - pointer to the general topology | |
out | - output file |
JK, 31.7.2007
Definition at line 571 of file seqselnodes.cpp.
References ggnsn, gtopology::give_ndofn(), ns, nsnmas, and snndofnmas.
Referenced by prepare_schur().
void node_coarse_numbers | ( | FILE * | out | ) |
function collects node numbers on master
function assembles arrays:
snicmultip - number of multiplicity of selected boundary/interface nodes snggnbncn - global glued numbers of selected boundary/interface nodes appropriate to coarse node snsid - subdomain id of selected interface/boundary nodes of the coarse node
tnsn - total number of selected nodes
out | - output file |
5.7.2009, JK
Definition at line 364 of file seqselnodes.cpp.
References cnsnmas, ggnbncn, icmultip, lnbncn, ns, nsnmas, sid, snggnbncn, snicmultip, snlnbncn, snsid, tnbn, and tnsn.
Referenced by prepare_feti(), and prepare_schur().
void number_all_dofs | ( | gtopology * | top, | |
FILE * | out | |||
) |
function searches for all possible DOFs in selected nodes prescribed DOFs are included
function assembles the following array: snndofmas - array of numbers of DOFs on subdomains at selected nodes
top | - pointer to the general topology | |
out | - output file |
JK, 31.7.2007
Definition at line 533 of file seqselnodes.cpp.
References ggnsn, gtopology::give_ndofn(), ns, nsnmas, and snndofmas.
Referenced by prepare_schur().
void number_contrib_dofs | ( | gtopology * | top, | |
FILE * | out | |||
) |
variable fetiimpl is determined
function determines the number of contributions to the coarse problem from particular subdomains
function searches for all possible contributing DOFs in selected nodes prescribed DOFs are included
if a node is shared by n subdomains, it may contribute n-1 times this strategy is used in the FETI method in the case of the Schur complement method, each node contributes only once
function assembles the following array: snndofmas - array of numbers of contributing DOFs on subdomains in selected nodes
top | - pointer to the general topology | |
out | - output file |
JK, 29.9.2009
Definition at line 2000 of file seqselnodes.cpp.
References boolean_matrices, cnsnmas, fetiimpl, ggnsn, gtopology::give_ndofn(), nonredundant, ns, nsnmas, print_err(), redundant, snggnbncn, snicmultip, snndofmas, snsid, and tnsn.
Referenced by prepare_feti().
long prepare_feti | ( | fetiimplem | fi, | |
gtopology * | top, | |||
FILE * | out | |||
) |
function prepares all data for the FETI method
fi | - type of FETI implementation, possibilities are in the file galias.h | |
gt | - pointer to the general topology | |
out | - output file |
JK, 18.11.2007
Definition at line 2690 of file seqselnodes.cpp.
References gtopology::cngen, gtopology::codenum_generation(), contrib_dofs_cn(), contrib_dofs_ln(), define_feti_implementation(), dof_feti(), node_coarse_numbers(), and number_contrib_dofs().
Referenced by slesolv::prepare_data().
void prepare_schur | ( | gtopology * | top, | |
FILE * | out | |||
) |
function generates the Schur complement ordering
array codensn and ndofnsn are assembled
out | - output file |
JK, 10.7.2009 function generates the Schur complement ordering
array codensn and ndofnsn are assembled
out | - output file |
JK, 10.7.2009 function prepares all data for the Schur complement method
gt | - pointer to the general topology | |
out | - output file |
JK, 21.5.2009
Definition at line 1411 of file seqselnodes.cpp.
References dof_indicators(), seqtop::dofind, ndofn_on_master(), node_coarse_numbers(), number_all_dofs(), schur_ordering(), and gtopology::stop.
Referenced by slesolv::prepare_data().
void schur_ordering | ( | long ** | dofind, | |
FILE * | out | |||
) |
function generates the Schur complement ordering
array codensn and ndofnsn are assembled
out | - output file |
JK, 10.7.2009
Definition at line 677 of file seqselnodes.cpp.
References cndofmas, cnsnmas, codensn, g, ggnsn, ndofnsn, ns, nsnmas, sndofmas, snndofmas, snndofnmas, tndofsn, and tnsn.
Referenced by prepare_schur().
long** cndofmas |
coarse code numbers of subdomains considered as superelements it contains ns, snndofmas[i] components cndofmas[i][j]=k - the j-th DOF on the i-th subdomain has coarse code number k array is allocated in the function schur_ordering or contrib_dofs_cn
Definition at line 218 of file seqselnodes.h.
Referenced by contrib_dofs_cn(), seqschur::initiate(), seqfeti::initiate(), schur_ordering(), seqselnodes(), and ~seqselnodes().
long** cnsnmas |
coarse numbers of selected nodes cnsnmas contains ns, nsnmas[i] components cnsnmas[i][j]=k - the j-th selected node on the i-th subdomain has coarse number k array is allocated in the constructor
Definition at line 114 of file seqselnodes.h.
Referenced by node_coarse_numbers(), number_contrib_dofs(), schur_ordering(), seqselnodes(), and ~seqselnodes().
long** codensn |
code numbers at selected nodes on master it contains tnsn, ndofnsn[i] components cnm[i][j]=k - the j-th DOF at the i-th selected node has code number / indicator k array is allocated in the function schur_ordering
Definition at line 202 of file seqselnodes.h.
Referenced by schur_ordering(), seqselnodes(), and ~seqselnodes().
long**** doffeti |
code numbers / indicators for FETI method it contains tnsn, snicmultip[i], snicmultip[i], ndofnsn[i] components doffeti[i][j][k][l]=m - the l-th DOF in the couple j-th, k-th node shared by the i-th coarse node has code number / indicator m array is allocated in the function dof_feti
Definition at line 212 of file seqselnodes.h.
Referenced by contrib_dofs_cn(), contrib_dofs_ln(), dof_feti(), and seqselnodes().
type of FETI implementation defined in the function define_feti_implementation
Definition at line 77 of file seqselnodes.h.
Referenced by contrib_dofs_cn(), contrib_dofs_ln(), define_feti_implementation(), dof_feti(), number_contrib_dofs(), and seqselnodes().
long** ggnbncn |
global glued numbers of boundary/interface nodes appropriate to all coarse nodes it contains global glued numbers of boundary/interafce nodes of each coarse node it contains tnbn rows and icmultip[i] columns ggnbncn[i][j]=k - the j-th node shared by the i-th coarse node has global glued number k aray is allocated in the constructor
Definition at line 134 of file seqselnodes.h.
Referenced by node_coarse_numbers(), seqselnodes(), and ~seqselnodes().
long** ggnsn |
global glued numbers of selected nodes ggnsn contains ns,nsnmas[i] components ggnsn[i][j]=k - the j-th selected node on the i-th subdomain has global glued number k array is allocated in the constructor
Definition at line 108 of file seqselnodes.h.
Referenced by dof_indicators(), ndofn_on_master(), number_all_dofs(), number_contrib_dofs(), schur_ordering(), seqselnodes(), and ~seqselnodes().
long* icmultip |
number of multiplicity of all boundary/interface nodes it contains tnbn components icmultip[i]=j - the i-th boundary/interface node shares j nodes (it belongs to j subdomains) array is allocated in the constructor
Definition at line 120 of file seqselnodes.h.
Referenced by node_coarse_numbers(), seqselnodes(), and ~seqselnodes().
long** lnbncn |
local numbers of boundary/interface nodes appropriate to all coarse nodes it contains local numbers of boundary/interafce nodes of each coarse node it contains tnbn rows and icmultip[i] columns lnbncn[i][j]=k - the j-th node shared by the i-th coarse node has local number k aray is allocated in the constructor
Definition at line 127 of file seqselnodes.h.
Referenced by node_coarse_numbers(), and seqselnodes().
long** lndofmas |
list of local code numbers which contribute to the coarse problem it contains ns, snndofmas[i] components lndofmas[i][j]=k - the j-th DOF which contributes to the coarse problem on the i-th subdomain has local code number k array is allocated in the function contrib_dofs_ln
Definition at line 224 of file seqselnodes.h.
Referenced by contrib_dofs_ln(), and seqfeti::initiate().
long** lnsn |
local numbers of selected nodes lnsn contains ns,nsnmas[i] components lnsn[i][j]=k - the j-th selected node on the i-th subdomain has local number k array is allocated in the constructor
Definition at line 102 of file seqselnodes.h.
Referenced by seqselnodes().
type of mesh description defined in the constructor
Definition at line 73 of file seqselnodes.h.
Referenced by seqselnodes().
long* ndofnsn |
array of numbers of DOFs for selected nodes it contains tnsn components ndofnsn[i]=j - the i-th selected node (in group ordering) has j DOFs array is allocated in the function schur_ordering or in the function dof_feti in the case of Schur complement method, it contains ndofn for each boundary/interface node in the case of FETI, it contains (nmultip-1)*ndofn
Definition at line 196 of file seqselnodes.h.
Referenced by contrib_dofs_cn(), contrib_dofs_ln(), dof_feti(), schur_ordering(), seqselnodes(), and ~seqselnodes().
long ns |
number of subdomains defined in the constructor
Definition at line 81 of file seqselnodes.h.
Referenced by contrib_dofs_cn(), contrib_dofs_ln(), dof_indicators(), ndofn_on_master(), node_coarse_numbers(), number_all_dofs(), number_contrib_dofs(), schur_ordering(), seqselnodes(), and ~seqselnodes().
long* nsnmas |
numbers of selected nodes on subdomains it contains ns components nsnmas[i]=j - there are j selected nodes on the i-th subdomain array is assembled in the constructor
Definition at line 96 of file seqselnodes.h.
Referenced by dof_indicators(), ndofn_on_master(), node_coarse_numbers(), number_all_dofs(), number_contrib_dofs(), schur_ordering(), seqselnodes(), and ~seqselnodes().
long** sid |
subdomain id of interface/boundary nodes appropriate to all coarse nodes it contains tnbn rows and icmultip[i] columns sid[i][j]=k - the j-th node shared by the i-th coarse node belongs to the k-th subdomain array is allocated in the constructor
Definition at line 140 of file seqselnodes.h.
Referenced by node_coarse_numbers(), seqselnodes(), and ~seqselnodes().
long*** sndofmas |
array of DOFs or indicators at selected nodes it contains ns, nsnmas[i], snndofnmas[i][j] components sndofmas[i][j][k]=l - the k-th DOF at the j-th selected node on the i-th subdomain has value l array is allocated in the function dof_indicators
Definition at line 186 of file seqselnodes.h.
Referenced by dof_indicators(), schur_ordering(), seqselnodes(), and ~seqselnodes().
long** snggnbncn |
global glued numbers of selected boundary/interface nodes appropriate to coarse node it contains tnsn rows and snicmultip[i] columns snggnbncn[i][j]=k - the j-th node shared by the i-th coarse node has global glued number k aray is allocated in the function node_coarse_numbers
Definition at line 154 of file seqselnodes.h.
Referenced by contrib_dofs_ln(), dof_feti(), node_coarse_numbers(), number_contrib_dofs(), seqselnodes(), and ~seqselnodes().
long* snicmultip |
number of multiplicity of selected boundary/interface nodes it contains tnsn components snicmultip[i]=j - the i-th selected boundary/interface node shares j nodes (it belongs to j subdomains) array is alloctaed in the function node_coarse_numbers
Definition at line 148 of file seqselnodes.h.
Referenced by contrib_dofs_cn(), contrib_dofs_ln(), dof_feti(), node_coarse_numbers(), number_contrib_dofs(), seqselnodes(), and ~seqselnodes().
long** snlnbncn |
local numbers of selected boundary/interface nodes appropriate to coarse node it contains tnsn rows and snicmultip[i] columns snlnbncn[i][j]=k - the j-th node shared by the i-th coarse node has local number k aray is allocated in the function coarse_local_nodes
Definition at line 160 of file seqselnodes.h.
Referenced by node_coarse_numbers(), and seqselnodes().
long* snndofmas |
array of numbers of DOFs on subdomains at selected nodes it contains prescribed values before code number generation it contains ns components after code number generation, only unknown (unconstrained DOFs) are taken into account snndofmas[i]=j - selected nodes on the i-th subdomain contain j DOFs array is allocated in the function number_all_dofs
Definition at line 174 of file seqselnodes.h.
Referenced by contrib_dofs_cn(), contrib_dofs_ln(), seqschur::initiate(), seqfeti::initiate(), number_all_dofs(), number_contrib_dofs(), schur_ordering(), seqselnodes(), and ~seqselnodes().
long** snndofnmas |
array of numbers of DOF at selected nodes it contains ns, nsnmas[i] components snndofnmas[i][j]=k - the selected j-th node on the i-th subdomain contains k DOFs array is allocated in the function ndofn_on_master
Definition at line 180 of file seqselnodes.h.
Referenced by dof_indicators(), ndofn_on_master(), schur_ordering(), seqselnodes(), and ~seqselnodes().
long** snsid |
subdomain id of selected interface/boundary nodes of the coarse node it contains tnsn rows and snicmultip[i] columns snsid[i][j]=k - the j-th node shared by the i-th coarse node belongs to the k-th subdomain array is allocated in the function node_coarse_numbers
Definition at line 166 of file seqselnodes.h.
Referenced by contrib_dofs_cn(), contrib_dofs_ln(), node_coarse_numbers(), number_contrib_dofs(), seqselnodes(), and ~seqselnodes().
long tnbn |
total number of boundary/interface nodes defined in the constructor
Definition at line 85 of file seqselnodes.h.
Referenced by node_coarse_numbers(), seqselnodes(), and ~seqselnodes().
long tndofsn |
total number of DOFs on selected nodes defined in the function schur_ordering
Definition at line 206 of file seqselnodes.h.
Referenced by dof_feti(), seqschur::initiate(), seqfeti::initiate(), schur_ordering(), and seqselnodes().
long tnsn |
total number of selected nodes defined in the function node_coarse_numbers
Definition at line 89 of file seqselnodes.h.
Referenced by contrib_dofs_cn(), contrib_dofs_ln(), dof_feti(), node_coarse_numbers(), number_contrib_dofs(), schur_ordering(), seqselnodes(), and ~seqselnodes().