38 #ifndef __H__UG__LIB_DISC__OPERATOR__LINEAR_OPERATOR__FETI__
39 #define __H__UG__LIB_DISC__OPERATOR__LINEAR_OPERATOR__FETI__
91 template <
typename TAlgebra>
114 if(numIndices == 0)
return;
127 stdLayouts->master(), stdLayouts->slave(),
128 (
int)(numIndices - 1), DDInfo);
129 UG_LOG(
"[BuildDomainDecompositionLayouts done]");
135 if(localSubdomID == i)
140 UG_LOG(
"[intra feti sd comms created]");
155 UG_LOG(
"[CollectElements for duals done]");
162 UG_LOG(
"[union of duals created]");
174 UG_LOG(
"[CollectElements for primals done] ");
180 UG_LOG(
"STANDARD LAYOUTS:\n");
182 UG_LOG(
"INNER LAYOUTS:\n");
184 UG_LOG(
"PRIMAL LAYOUTS:\n");
186 UG_LOG(
"DUAL LAYOUTS:\n");
188 UG_LOG(
"DUAL NBR LAYOUTS:\n");
197 UG_LOG(
"LAYOUTS not yet created!\n");
202 UG_LOG(
"TEST STANDARD LAYOUTS:\n");
204 UG_LOG(
"STANDARD LAYOUTS inconsistent!\n");
206 UG_LOG(
"STANDARD LAYOUTS are consistent!\n");
209 UG_LOG(
"TEST INNER LAYOUTS:\n");
211 UG_LOG(
"INNER LAYOUTS inconsistent!\n");
213 UG_LOG(
"INNER LAYOUTS are consistent!\n");
216 UG_LOG(
"TEST PRIMAL LAYOUTS:\n");
218 UG_LOG(
"PRIMAL LAYOUTS inconsistent!\n");
220 UG_LOG(
"PRIMAL LAYOUTS are consistent!\n");
223 UG_LOG(
"TEST DUAL LAYOUTS:\n");
225 UG_LOG(
"DUAL LAYOUTS inconsistent!\n");
227 UG_LOG(
"DUAL LAYOUTS are consistent!\n");
230 UG_LOG(
"TEST DUAL NBR LAYOUTS:\n");
232 UG_LOG(
"DUAL NBR LAYOUTS inconsistent!\n");
234 UG_LOG(
"DUAL NBR LAYOUTS are consistent!\n");
355 m_spStdLayouts->proc_comm().allreduce(&tProdLocal, &tProdGlobal, 1,
391 std::sort(vIndex.begin(), vIndex.end());
394 vIndex.erase(std::unique(vIndex.begin(), vIndex.end()),
399 const std::vector<IndexLayout::Element>& v)
404 size_t mid = vOut.size();
407 vOut.insert(vOut.end(), v.begin(), v.end() );
410 std::inplace_merge(vOut.begin(), vOut.begin()+mid, vOut.end());
413 vOut.erase(std::unique(vOut.begin(), vOut.end()),
466 template <
typename TVector>
482 VecCopy(&diff, dualMasterLayoutIn, dualSlaveLayoutIn);
485 VecCopy(&diff, dualNbrMasterLayoutIn, dualNbrSlaveLayoutIn);
506 template <
typename TVector>
508 const std::vector<IndexLayout::Element>& vDualMasterIndex,
509 const std::vector<IndexLayout::Element>& vDualSlaveIndex,
510 const std::vector<IndexLayout::Element>& vDualNbrSlaveIndex)
536 template <
typename TAlgebra>
539 typename TAlgebra::vector_type>,
561 virtual const char*
name()
const {
return "Local Schur Complement Solver";}
683 template <
typename TAlgebra>
686 typename TAlgebra::vector_type>,
712 virtual const char*
name()
const {
return "Schur Complement Inverse";}
842 template <
typename TAlgebra>
844 typename TAlgebra::vector_type>,
870 virtual const char*
name()
const {
return "FETI Solver";}
1008 UG_LOG(
"Total number of calls of sub problem solvers: " << totalIterCntOfInnerSolvers);
1011 << std::fixed << (
double)totalIterCntOfInnerSolvers/
m_iterCnt
1012 << std::scientific <<
" per FETI iteration, "
1014 << std::scientific <<
" per FETI subdomain.\n");
1029 std::stringstream ss;
1030 ss <<
" (Inherent Preconditioner) ";
1038 std::string
name(filename);
1039 char ext[20]; snprintf(ext, 20,
"_iter%03d.vec",
m_iterCnt);
Definition: smart_pointer.h:296
Definition: smart_pointer.h:108
Definition: pcl_domain_decomposition.h:43
virtual int get_num_subdomains() const =0
virtual int map_proc_id_to_subdomain_id(int procID) const =0
mapping method "proc-id" ==> "subdomain-id"
Performs communication between interfaces on different processes.
Definition: pcl_interface_communicator.h:68
Definition: pcl_process_communicator.h:70
ProcessCommunicator create_sub_communicator(bool participate) const
creates a new communicator containing a subset of the current communicator
Definition: pcl_process_communicator.cpp:122
Extends the HorizontalAlgebraLayouts by vertical layouts.
Definition: algebra_layouts.h:121
Definition: debug_writer.h:354
virtual void set_debug(SmartPtr< IDebugWriter< algebra_type > > spDebugWriter)
set debug writer
Definition: debug_writer.h:384
TAlgebra::vector_type vector_type
type of vector
Definition: debug_writer.h:360
SmartPtr< IDebugWriter< algebra_type > > debug_writer()
returns the debug writer
Definition: debug_writer.h:391
operator implementation of the FETI-DP solver
Definition: feti.h:846
ConstSmartPtr< IConvergenceCheck< X > > convergence_check() const
returns the convergence check
Definition: linear_operator_inverse.h:202
virtual ~FETISolver()
Definition: feti.h:1019
ILinearOperatorInverse< vector_type > base_type
Base type.
Definition: feti.h:858
virtual const char * name() const
name of solver
Definition: feti.h:870
virtual bool apply(vector_type &x, const vector_type &b)
solves the system
Definition: feti.h:984
virtual bool init(SmartPtr< MatrixOperator< matrix_type, vector_type > > A)
initializes the solver for operator A
Definition: feti.cpp:1374
TAlgebra::vector_type vector_type
Definition: feti.h:852
virtual bool apply_return_defect(vector_type &lambda, vector_type &d)
Definition: feti.cpp:1501
void prepare_conv_check()
Definition: feti.h:1023
LocalSchurComplement< algebra_type > m_LocalSchurComplement
Definition: feti.h:1062
bool apply_scaling_matrix(vector_type &s, const vector_type &v)
function which applies diagonal scaling matrix to a vector
Definition: feti.h:944
FETISolver()
constructor
Definition: feti.cpp:1363
virtual void write_debug(const vector_type &vec, const char *filename)
Definition: feti.h:1035
SmartPtr< ILinearOperatorInverse< vector_type > > m_spCoarseProblemSolver
Definition: feti.h:1076
void set_dirichlet_solver(SmartPtr< ILinearOperatorInverse< vector_type > > dirichletSolver)
sets the Dirichlet solver
Definition: feti.h:888
void set_debug(SmartPtr< IDebugWriter< algebra_type > > spDebugWriter)
set debug writer
Definition: feti.h:909
int m_iterCnt
Definition: feti.h:1049
PrimalSubassembledMatrixInverse< algebra_type > m_PrimalSubassembledMatrixInverse
Definition: feti.h:1068
void print_statistic_of_inner_solver(bool bPrintOnlyAverages)
prints some convergence statistic of inner solvers
Definition: feti.h:995
void set_domain_decomp_info(pcl::IDomainDecompositionInfo &ddInfo)
Definition: feti.h:1079
void set_test_one_to_many_layouts(bool bTest)
Definition: feti.h:972
bool apply_M_inverse(vector_type &z, const vector_type &r)
function which applies matrix to a vector
Definition: feti.cpp:1820
TAlgebra::matrix_type matrix_type
Definition: feti.h:855
virtual bool supports_parallel() const
returns if parallel solving is supported
Definition: feti.h:873
bool apply_F(vector_type &f, const vector_type &v)
function which applies matrix of the reduced system ("Delta system") to a vector
Definition: feti.cpp:1742
SmartPtr< ILinearOperatorInverse< vector_type > > m_spDirichletSolver
Definition: feti.h:1065
SmartPtr< ILinearOperatorInverse< vector_type > > m_spNeumannSolver
Definition: feti.h:1072
void test_layouts(bool bPrint)
Definition: feti.cpp:1874
SmartPtr< MatrixOperator< matrix_type, vector_type > > m_spOperator
Definition: feti.h:1053
void set_neumann_solver(SmartPtr< ILinearOperatorInverse< vector_type > > neumannSolver)
sets the Neumann solver
Definition: feti.h:895
bool compute_d(vector_type &d, const vector_type &f)
function which computes right hand side vector 'd' of the dual unknowns
Definition: feti.cpp:1783
FetiLayouts< algebra_type > m_fetiLayouts
Definition: feti.h:1059
TAlgebra algebra_type
Definition: feti.h:849
pcl::IDomainDecompositionInfo * m_pDDInfo
Definition: feti.h:1086
void set_coarse_problem_solver(SmartPtr< ILinearOperatorInverse< vector_type > > coarseProblemSolver)
sets the coarse problem solver
Definition: feti.h:902
matrix_type * m_pMatrix
Definition: feti.h:1056
Auxiliary class for handling of "FETI layouts".
Definition: feti.h:93
void vec_use_intra_sd_communication(vector_type &vec)
Definition: feti.h:279
void vec_set_on_dual(vector_type &vecDest, number alpha)
sets vecDest = alpha on dual
Definition: feti.h:316
IndexLayout & get_intra_sd_master_layout()
Definition: feti.h:244
void vec_scale_assign_on_primal(vector_type &vecDest, const vector_type &vecSrc, number alpha)
calculates vecDest = alpha*vecSrc on primal
Definition: feti.h:334
IndexLayout & get_dual_master_layout()
Definition: feti.h:249
IndexLayout & get_intra_sd_slave_layout()
Definition: feti.h:245
IndexLayout & get_primal_slave_layout()
Definition: feti.h:262
IndexLayout m_masterDualNbrLayout
Definition: feti.h:431
void mat_use_intra_sd_communication(matrix_type &mat)
Definition: feti.h:382
void vec_scale_add_on_primal(vector_type &vecDest, number alpha1, const vector_type &vecSrc1, number alpha2, const vector_type &vecSrc2)
calculates vecDest = alpha1*vecSource1 + alpha2*vecSource2 on primal
Definition: feti.h:294
void mat_set_dirichlet_on_dual(matrix_type &mat)
Definition: feti.h:363
std::vector< IndexLayout::Element > m_vUniqueSlaveDualIndex
Definition: feti.h:428
void vec_set_on_primal(vector_type &vecDest, number alpha)
sets vecDest = alpha on primal
Definition: feti.h:322
void test_layouts(bool bPrint)
Definition: feti.h:194
IndexLayout & get_dual_slave_layout()
Definition: feti.h:250
IndexLayout & get_dual_nbr_slave_layout()
Definition: feti.h:256
void mat_use_std_communication(matrix_type &mat)
Definition: feti.h:374
ConstSmartPtr< AlgebraLayouts > m_spStdLayouts
Definition: feti.h:419
TAlgebra::matrix_type matrix_type
Definition: feti.h:102
const std::vector< IndexLayout::Element > & get_dual_master_indices() const
Definition: feti.h:251
number vec_prod_on_identified_dual(const vector_type &vecSrc1, const vector_type &vecSrc2)
Definition: feti.h:346
const IndexLayout & get_std_slave_layout()
Definition: feti.h:240
std::vector< IndexLayout::Element > m_vUniquePrimalSlaveIndex
Definition: feti.h:440
void mat_set_dirichlet_on_primal(matrix_type &mat)
Definition: feti.h:368
const std::vector< IndexLayout::Element > & get_dual_slave_indices() const
Definition: feti.h:252
IndexLayout m_slaveDualNbrLayout
Definition: feti.h:432
void create_layouts(ConstSmartPtr< AlgebraLayouts > stdLayouts, size_t numIndices, pcl::IDomainDecompositionInfo &DDInfo, bool bDebug=false)
Definition: feti.h:108
pcl::ProcessCommunicator & get_intra_sd_process_communicator()
Definition: feti.h:246
std::vector< IndexLayout::Element > m_vUniqueMasterDualIndex
Definition: feti.h:427
const pcl::ProcessCommunicator & get_std_process_communicator()
Definition: feti.h:241
number vec_norm_on_identified_dual(vector_type &vec)
calculates norm on dual
Definition: feti.h:340
std::vector< IndexLayout::Element > m_vUniquePrimalMasterIndex
Definition: feti.h:439
void vec_scale_add_on_dual(vector_type &vecDest, number alpha1, const vector_type &vecSrc1, number alpha2, const vector_type &vecSrc2)
calculates vecDest = alpha1*vecSource1 + alpha2*vecSource2 on dual
Definition: feti.h:286
const std::vector< IndexLayout::Element > & get_primal_master_indices() const
Definition: feti.h:263
std::vector< IndexLayout::Element > m_vUniquePrimalIndex
Definition: feti.h:444
const IndexLayout & get_std_master_layout()
Definition: feti.h:239
FetiLayouts()
Definition: feti.h:105
SmartPtr< AlgebraLayouts > m_spInnerLayouts
Definition: feti.h:422
void vec_scale_append_on_primal(vector_type &vecInOut, const vector_type &vecSrc1, number alpha1)
calculates vecInOut += alpha1*vecSrc1 on primal
Definition: feti.h:309
const std::vector< IndexLayout::Element > & get_dual_indices() const
Definition: feti.h:268
IndexLayout m_masterDualLayout
Definition: feti.h:425
void vec_use_std_communication(vector_type &vec)
Definition: feti.h:273
const std::vector< IndexLayout::Element > & get_dual_nbr_master_indices() const
Definition: feti.h:257
IndexLayout & get_dual_nbr_master_layout()
Definition: feti.h:255
IndexLayout m_slaveDualLayout
Definition: feti.h:426
IndexLayout m_slavePrimalLayout
Definition: feti.h:438
void vec_scale_assign_on_dual(vector_type &vecDest, const vector_type &vecSrc, number alpha)
calculates vecDest = alpha*vecSrc on dual
Definition: feti.h:328
const std::vector< IndexLayout::Element > & get_primal_slave_indices() const
Definition: feti.h:264
const std::vector< IndexLayout::Element > & get_primal_indices() const
Definition: feti.h:267
std::vector< IndexLayout::Element > m_vUniqueMasterDualNbrIndex
Definition: feti.h:433
std::vector< IndexLayout::Element > m_vUniqueDualIndex
Definition: feti.h:443
IndexLayout & get_primal_master_layout()
Definition: feti.h:261
const std::vector< IndexLayout::Element > & get_dual_nbr_slave_indices() const
Definition: feti.h:258
IndexLayout m_masterPrimalLayout
Definition: feti.h:437
TAlgebra algebra_type
Definition: feti.h:96
std::vector< IndexLayout::Element > m_vUniqueSlaveDualNbrIndex
Definition: feti.h:434
void add_merge_sort_remove_doubles(std::vector< IndexLayout::Element > &vOut, const std::vector< IndexLayout::Element > &v)
Definition: feti.h:398
void vec_scale_append_on_dual(vector_type &vecInOut, const vector_type &vecSrc1, number alpha1)
calculates vecInOut += alpha1*vecSrc1 on dual
Definition: feti.h:302
TAlgebra::vector_type vector_type
Definition: feti.h:99
void sort_and_remove_doubles(std::vector< IndexLayout::Element > &vIndex)
Definition: feti.h:388
base class for all debug writer
Definition: debug_writer.h:244
describes a linear mapping X->Y
Definition: linear_operator.h:80
describes an inverse linear mapping X->Y
Definition: linear_operator_inverse.h:80
ConstSmartPtr< IConvergenceCheck< X > > convergence_check() const
returns the convergence check
Definition: linear_operator_inverse.h:202
describes an inverse linear mapping X->Y based on a matrix
Definition: matrix_operator_inverse.h:64
operator implementation of the local Schur complement
Definition: feti.h:541
SmartPtr< ILinearOperatorInverse< vector_type > > m_spDirichletSolver
Definition: feti.h:658
void init(const vector_type &u)
implementation of the operator for the solution dependent initialization.
Definition: feti.h:610
SmartPtr< MatrixOperator< matrix_type, vector_type > > m_spOperator
Definition: feti.h:639
void set_statistic_type(std::string type)
sets statistic slot where next iterate should be counted
Definition: feti.h:630
matrix_type * m_pMatrix
Definition: feti.h:646
int get_total_itercnt_of_inner_solvers()
Definition: feti.h:636
SmartPtr< MatrixOperator< matrix_type, vector_type > > m_spDirichletOperator
Definition: feti.h:652
LocalSchurComplement()
constructor
Definition: feti.cpp:98
void print_statistic_of_inner_solver(bool bPrintOnlyAverages)
prints some convergence statistic of inner solvers
Definition: feti.cpp:283
std::string m_statType
Definition: feti.h:661
virtual const char * name() const
name of solver
Definition: feti.h:561
virtual void apply_sub(vector_type &f, const vector_type &u)
solves the system
Definition: feti.cpp:268
std::map< std::string, std::vector< StepConv > > m_mvStepConv
Definition: feti.h:669
matrix_type * m_pDirichletMatrix
Definition: feti.h:655
virtual void apply(vector_type &f, const vector_type &u)
Definition: feti.cpp:154
int m_totalIterCntOfInnerSolvers
Definition: feti.h:673
FetiLayouts< algebra_type > * m_pFetiLayouts
Definition: feti.h:649
int m_applyCnt
Definition: feti.h:671
TAlgebra algebra_type
Definition: feti.h:544
void set_feti_layouts(FetiLayouts< algebra_type > &fetiLayouts)
sets the primal layouts
Definition: feti.h:604
virtual void init()
initializes the solver for operator A
Definition: feti.cpp:109
void set_matrix(SmartPtr< MatrixOperator< matrix_type, vector_type > > A)
set original matrix from which the local Schur complement is constructed
Definition: feti.h:586
TAlgebra::vector_type vector_type
Definition: feti.h:547
void set_dirichlet_solver(SmartPtr< ILinearOperatorInverse< vector_type > > dirichletSolver)
sets a sequential Dirichlet solver
Definition: feti.h:597
void clear_total_itercnt_of_inner_solvers()
Definition: feti.h:635
virtual ~LocalSchurComplement()
Definition: feti.h:639
TAlgebra::matrix_type matrix_type
Definition: feti.h:550
Definition: matrix_operator.h:49
operator implementation of the inverse of the Schur complement w.r.t. the "Delta unknowns"
Definition: feti.h:688
SmartPtr< ILinearOperatorInverse< vector_type > > m_spNeumannSolver
Definition: feti.h:795
std::map< std::string, std::vector< StepConv > > m_mvStepConv
Definition: feti.h:827
void set_coarse_problem_solver(SmartPtr< ILinearOperatorInverse< vector_type > > coarseProblemSolver)
sets the coarse problem solver
Definition: feti.h:733
SmartPtr< ILinearOperatorInverse< vector_type > > m_spCoarseProblemSolver
Definition: feti.h:798
SmartPtr< MatrixOperator< matrix_type, vector_type > > m_spOperator
Definition: feti.h:776
int m_primalRootProc
Definition: feti.h:801
virtual bool init(SmartPtr< ILinearOperator< vector_type > > J, const vector_type &u)
Definition: feti.h:750
std::string m_statType
Definition: feti.h:815
IndexLayout m_masterAllToOneLayout
Definition: feti.h:804
bool m_bTestOneToManyLayouts
Definition: feti.h:830
FetiLayouts< algebra_type > * m_pFetiLayouts
Definition: feti.h:786
void clear_total_itercnt_of_inner_solvers()
Definition: feti.h:769
virtual ~PrimalSubassembledMatrixInverse()
Definition: feti.h:776
void print_statistic_of_inner_solver(bool bPrintOnlyAverages)
prints some convergence statistic of inner solvers
Definition: feti.cpp:1151
pcl::ProcessCommunicator m_allToOneProcessComm
Definition: feti.h:806
int get_total_itercnt_of_inner_solvers()
Definition: feti.h:770
matrix_type * m_pNeumannMatrix
Definition: feti.h:792
ILinearOperatorInverse< vector_type > base_type
Base type.
Definition: feti.h:700
void set_test_one_to_many_layouts(bool bTest)
set 'm_bTestOneToManyLayouts'
Definition: feti.h:773
IndexLayout m_slaveAllToOneLayout
Definition: feti.h:805
void set_statistic_type(std::string type)
sets statistic slot where next iterate should be counted
Definition: feti.h:764
PrimalSubassembledMatrixInverse()
constructor
Definition: feti.cpp:367
virtual bool init(SmartPtr< ILinearOperator< vector_type > > L)
Definition: feti.cpp:385
TAlgebra::vector_type vector_type
Definition: feti.h:694
virtual bool supports_parallel() const
returns if parallel solving is supported
Definition: feti.h:715
void set_neumann_solver(SmartPtr< ILinearOperatorInverse< vector_type > > neumannSolver)
sets the Neumann solver
Definition: feti.h:726
void set_feti_layouts(FetiLayouts< algebra_type > &fetiLayouts)
sets the primal layouts
Definition: feti.h:740
virtual const char * name() const
name of class
Definition: feti.h:712
int m_totalIterCntOfInnerSolvers
Definition: feti.h:832
virtual bool apply_return_defect(vector_type &u, vector_type &f)
applies inverse operator, i.e. returns u = A^{-1} f and returns defect d := f - A*u
Definition: feti.cpp:906
TAlgebra algebra_type
Definition: feti.h:691
SmartPtr< MatrixOperator< matrix_type, vector_type > > m_spRootSchurComplementOp
Definition: feti.h:809
SmartPtr< MatrixOperator< matrix_type, vector_type > > m_spNeumannOperator
Definition: feti.h:789
TAlgebra::matrix_type matrix_type
Definition: feti.h:697
virtual bool apply(vector_type &u, const vector_type &f)
applies inverse operator, i.e. returns u = A^{-1} f
Definition: feti.cpp:1137
matrix_type * m_pMatrix
Definition: feti.h:783
matrix_type * m_pRootSchurComplementMatrix
Definition: feti.h:812
virtual void set_debug(SmartPtr< IVectorDebugWriter< vector_type > > spDebugWriter)
set debug writer
Definition: debug_writer.h:280
void VecSubtractOneSlaveFromMaster(TVector *pVec, const IndexLayout &masterLayout, const IndexLayout &slaveLayout, pcl::InterfaceCommunicator< IndexLayout > *pCom=NULL)
subtracts values of only one slave dof per master on layout
Definition: parallelization_util.h:445
void SetDirichletRow(TSparseMatrix &A, size_t i, size_t alpha)
Definition: sparsematrix_util.h:796
void CollectElements(std::vector< typename TLayout::Element > &elemsOut, TLayout &layout, bool clearContainer=true)
writes all elements in the interfaces into the vector.
Definition: pcl_layout_util.h:114
#define PCL_RO_SUM
Definition: pcl_methods.h:63
int ProcRank()
returns the rank of the process
Definition: pcl_base.cpp:83
bool TestLayout(const pcl::ProcessCommunicator &processCommunicator, pcl::InterfaceCommunicator< TLayout > &com, const TLayout &masterLayout, const TLayout &slaveLayout, bool bPrint=false, boost::function< TValue(typename TLayout::Element)> cbToValue=TrivialToValue< typename TLayout::Element >, bool compareValues=false)
Checks whether the given layouts are consistent.
Definition: pcl_layout_tests.h:300
#define PCL_DT_DOUBLE
Definition: pcl_datatype.h:57
bool PrintLayout(const pcl::ProcessCommunicator &processCommunicator, pcl::InterfaceCommunicator< TLayout > &com, const TLayout &masterLayout, const TLayout &slaveLayout, boost::function< TValue(typename TLayout::Element)> cbToValue=TrivialToValue< typename TLayout::Element >)
Definition: pcl_layout_tests.h:344
const NullSmartPtr SPNULL
The equivalent to NULL for smart pointers.
Definition: smart_pointer.h:90
#define UG_LOG(msg)
Definition: log.h:367
double number
Definition: types.h:124
void VecCopy(vector_target_t &target, const vector_source_t &source, typename vector_target_t::value_type fill)
Copy contents between vectors of possibly different types.
Definition: math_vector_functions_common_impl.hpp:56
void VecSet(vector_t &vInOut, typename vector_t::value_type s)
Set each vector component to scalar (componentwise)
Definition: math_vector_functions_common_impl.hpp:539
void VecScaleAdd(vector_t &vOut, typename vector_t::value_type s1, const vector_t &v1, typename vector_t::value_type s2, const vector_t &v2)
Scales two Vectors, adds them and returns the sum in a third vector.
Definition: math_vector_functions_common_impl.hpp:265
CPUAlgebra::vector_type vector_type
void ComputeDifferenceOnDeltaTransposed(TVector &f, const TVector &diff, const std::vector< IndexLayout::Element > &vDualMasterIndex, const std::vector< IndexLayout::Element > &vDualSlaveIndex, const std::vector< IndexLayout::Element > &vDualNbrSlaveIndex)
'ComputeDifferenceOnDeltaTransposed()': Apply
Definition: feti.h:507
void BuildDomainDecompositionLayouts(IndexLayout &subdomMastersOut, IndexLayout &subdomSlavesOut, IndexLayout &processMastersOut, IndexLayout &processSlavesOut, IndexLayout &deltaNbrMastersOut, IndexLayout &deltaNbrSlavesOut, IndexLayout &crossPointMastersOut, IndexLayout &crossPointSlavesOut, const IndexLayout &standardMasters, const IndexLayout &standardSlaves, int highestReferencedIndex, IDomainDecompositionInfo &ddinfo)
Definition: parallelization_util.cpp:497
double VecProd(const double &a, const double &b)
returns scal<a, b>
Definition: operations_vec.h:84
void ComputeDifferenceOnDelta(TVector &diff, const TVector &u, IndexLayout &dualMasterLayoutIn, IndexLayout &dualSlaveLayoutIn, IndexLayout &dualNbrMasterLayoutIn, IndexLayout &dualNbrSlaveLayoutIn)
Application of the "jump operator" .
Definition: feti.h:467
void VecScaleAssign(double &dest, double alpha1, const double &v1)
calculates dest = alpha1*v1. for doubles
Definition: operations_vec.h:49
number lastDef3b
Definition: feti.h:666
int numIter3b
Definition: feti.h:665
int numIter7
Definition: feti.h:820
number lastDef2a
Definition: feti.h:822
number lastDef7
Definition: feti.h:823
number lastDefSC
Definition: feti.h:824
int numIter2a
Definition: feti.h:819
int numIterSC
Definition: feti.h:821