partopjk Class Reference

#include <partopjk.h>

List of all members.

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

Detailed Description

JK, huge revision 22.8.2011

Definition at line 14 of file partopjk.h.


Constructor & Destructor Documentation

partopjk ( int  np,
int  mr,
meshdescription  meshd,
char *  nameproc,
int  nl 
)

constructor

constructor

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

destructor

destructor

JK, 22.8.2011

Definition at line 104 of file partopjk.cpp.

References bdofd, bnid, dofm, fullnoddom, inid, lagrmultip, mltg, myrank, nbdofd, nbnd, ndofnm, nind, nnsd, noddom, nodmultip, nproc, and tnnp.


Member Function Documentation

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

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

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

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

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

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

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

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

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

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

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

function assembles array noddom

function assembles array noddom

Parameters:
out - output file

JK, 1.7.2005, revision 22.8.2011

Definition at line 445 of file partopjk.cpp.

References mltg, myrank, nnsd, noddom, nproc, and tnnp.

Referenced by vse().

void node_multiplicity ( FILE *  out  ) 

function assembles array nodmultip which contains nodal multiplicity

function assembles array nodmultip

Parameters:
out - output file

JK, 1.7.2005, revision 22.8.2011

Definition at line 411 of file partopjk.cpp.

References mltg, myrank, nnsd, nodmultip, nproc, and tnnp.

Referenced by vse().

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

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

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

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

Member Data Documentation

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

length of the processor name

Definition at line 93 of file partopjk.h.

Referenced by partopjk().

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
char procName[MPI_MAX_PROCESSOR_NAME]

name of processor

Definition at line 91 of file partopjk.h.

Referenced by partopjk().

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


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

Generated by  doxygen 1.6.2