hp2FEM  0.1
include/solvercontrol/GlobalSolver.h
00001 #ifndef _GLOBALSOLVER_H_
00002 #define _GLOBALSOLVER_H_
00003 // ---------------------------------------------
00004 // company   : 
00005 // user      : 
00006 // date      : 22 Mar 2015 17:25
00007 // file      : GlobalSolver.h
00008 // markers   : Full
00009 // language  : C++
00010 // generator : Metamill 6.0
00011 // ---------------------------------------------
00012 
00013 //#UBLK-BEG-HEADERH
00014 //#UBLK-END-HEADERH
00015 
00016 /*=================================================================================================
00017 =                                                                                                 =
00018 =       Copyright 2010-2015  Marco Lucio Bittencourt / Fabiano Fernandes Bargos                       =
00019 =                        Gilberto Luis Valente / Jorge Luis Suzuki / Allan Patrick Cordeiro Dias  =
00020 =                                                                                                 =
00021 =       Licensed under the Apache License, Version 2.0 (the "License");                               =
00022 =       you may not use this file except in compliance with the License.                              =
00023 =       You may obtain a copy of the License at                                                       =
00024 =                                                                                                 =
00025 =               http://www.apache.org/licenses/LICENSE-2.0                                                =
00026 =                                                                                                 =
00027 =       Unless required by applicable law or agreed to in writing, software                           =
00028 =       distributed under the License is distributed on an "AS IS" BASIS,                             =
00029 =       WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                      =
00030 =       See the License for the specific language governing permissions and                           =
00031 =       limitations under the License.                                                                =
00032 =                                                                                                 =
00033 =================================================================================================*/
00034 
00035 
00036 #include "ds/SymmetricSparse.h"
00037 #include "solvercontrol/Solver.h"
00038 
00039 
00047 class GlobalSolver : public Solver
00048 {
00049 //#UBLK-BEG-CLASSDEF mm:8ed17011-020e-11e0-9503-bdd33c3b382f
00050 //#UBLK-END-CLASSDEF
00051 
00052  public:
00053 
00054    // METHOD=mm:75c8b862-020e-11e0-9503-bdd33c3b382f
00055    GlobalSolver();
00056 
00057    // METHOD=mm:38d5c64f-69aa-11e0-94a8-e19117dd202e
00058    GlobalSolver(GlobalSolver& Instance);
00059 
00060    // METHOD=mm:6884bbea-69aa-11e0-94a8-e19117dd202e
00061    GlobalSolver& operator=(GlobalSolver& Instance);
00062 
00063    // METHOD=mm:17183bb1-0238-11e0-8f07-c00dff923bc5
00064    ~GlobalSolver();
00065 
00066    // METHOD=mm:75c8b863-020e-11e0-9503-bdd33c3b382f
00067    void Run();
00068 
00069 
00070  protected:
00071 
00072    // METHOD=mm:30b399be-022c-11e0-8f07-c00dff923bc5
00073    void NewtonRaphsonSolver();
00074 
00075    // METHOD=mm:3063b667-5591-47ad-a270-145584e5273c
00076    void NewtonRaphsonContactSolver();
00077 
00078    // METHOD=mm:593b83e3-022c-11e0-8f07-c00dff923bc5
00079    void DynamicLinearSolver();
00080 
00081    // METHOD=mm:a7e930ca-022c-11e0-8f07-c00dff923bc5
00082    void ProjectionSolver();
00083 
00084    // METHOD=mm:d830b816-022c-11e0-8f07-c00dff923bc5
00085    void StaticLinearSolver();
00086 
00087    // METHOD=mm:c8fd38c5-022b-11e0-8f07-c00dff923bc5
00088    void CentralDifferenceGlobalMethod();
00089 
00090    // METHOD=mm:1083c600-022c-11e0-8f07-c00dff923bc5
00091    void NewmarkGlobalMethod();
00092 
00093    // METHOD=mm:1af288c8-022d-11e0-8f07-c00dff923bc5
00094    void SetIterativeSparseTopology(SymmetricSparse& SPAIt, unsigned long NoBCFlag = 0);
00095 
00096    // METHOD=mm:d4e90856-6310-42f3-8782-3567539a519f
00097    void SetIterativeSparseTopology(SymmetricSparse& SPAItM, SymmetricSparse& SPAItK);
00098 
00099    // METHOD=mm:75c8b8fa-020e-11e0-9503-bdd33c3b382f
00100    void AssemblingGlbLoadVector(LoadSet& LoadSets, unsigned long LoadSetNumber, double  t = 0);
00101 
00102    // METHOD=mm:47f37d95-022e-11e0-8f07-c00dff923bc5
00103    void AssemblingGlbNonLinearPressureVector(unsigned long LoadSets, unsigned long LoadSetNumber, unsigned long Delta);
00104 
00105    // METHOD=mm:69ed0ebb-022e-11e0-8f07-c00dff923bc5
00106    void AssemblingGlbPressureVector(unsigned long LoadSets, unsigned long LoadSetNumber);
00107 
00108    // METHOD=mm:e8b2e6c6-aae7-4b6e-8831-56184ee1546d
00109    void AssemblingGlbContactData(LoadSet& LoadSets, unsigned long LoadSetNumber);
00110 
00111    // METHOD=mm:75c8b8f9-020e-11e0-9503-bdd33c3b382f
00112    void AssemblingGlobalStiffnessMatrix();
00113 
00114    // METHOD=mm:81c48e6f-022e-11e0-8f07-c00dff923bc5
00115    void AssemblingGlobalNonLinearStiffnessMatrix();
00116 
00117    // METHOD=mm:a22569fe-9a4c-4ee5-819d-d71ef2999d34
00118    void AssemblingGlobalContactStiffnessMatrix(LoadSet& LoadSets, unsigned long LoadSetNumber);
00119 
00120    // METHOD=mm:9f91d281-022e-11e0-8f07-c00dff923bc5
00121    void AssemblingGlobalStiffnessMatrixLoadVector();
00122 
00123    // METHOD=mm:75c8b8fb-020e-11e0-9503-bdd33c3b382f
00124    void AssemblingGlobalMassMatrix();
00125 
00126    // METHOD=mm:a082543b-3946-49c0-a301-c2905eada212
00127    void AssemblingGlobalEffectiveMatrix();
00128 
00129    // METHOD=mm:d36cfd79-022e-11e0-8f07-c00dff923bc5
00130    void ApplyNHDirichletBCLinear(double DeltaInc, unsigned short Iter = 0);
00131 
00132    // METHOD=mm:ea13631f-022e-11e0-8f07-c00dff923bc5
00133    void ApplyNHDirichletBCNonLinear();
00134 
00135    // METHOD=mm:75c8b868-020e-11e0-9503-bdd33c3b382f
00136    void LinearSystemSolution(SymmetricSparse& A, double* F, unsigned long LSNum);
00137 
00138    // METHOD=mm:da7fca40-98f5-4dbb-bf4d-46c195ab4537
00139    void LinearSystemSolution(SymmetricSparse& A, double* b, unsigned long LSNum, double* x);
00140 
00141    // METHOD=mm:d6152512-1336-4485-8eb7-263af49627d6
00142    void LinearSystemSolution(SymmetricSparse& A, double* b, unsigned long LSNum, Vector& x, unsigned long& NIT, double& NormResidual);
00143 
00144 
00148    // attr=mm:75c8b7c8-020e-11e0-9503-bdd33c3b382f
00149    SymmetricSparse StiffMatrix;
00150 
00154    // attr=mm:75c8b7c9-020e-11e0-9503-bdd33c3b382f
00155    SymmetricSparse MassMatrix;
00156 
00160    // attr=mm:322db6d5-8f73-4370-b0eb-0d3b26041043
00161    SymmetricSparse EffMatrix;
00162 
00163 
00164  private:
00165 
00166 //#UBLK-BEG-CLASSMEMB mm:8ed17011-020e-11e0-9503-bdd33c3b382f
00167 //#UBLK-END-CLASSMEMB
00168 };
00169 
00170 //#UBLK-BEG-GLOBALH
00171 //*** Removed methods: 10 Nov 2014 17:07
00172 //---
00173 //uuid=mm:5b236e7c-1222-4c90-bd5c-be184b6ec897
00174 //   void SetIterativeSparseTopology(SymmetricSparse& SPAIt, unsigned long Size);
00175 
00176 //*** Removed methods: 13 Mar 2015 16:16
00177 //---
00178 //uuid=mm:956d1e74-a1d2-4151-8550-4678b60465f0
00179 //   void NewtonRaphsonContactSolver();
00180 //---
00181 //uuid=mm:caa4a027-a301-4f32-8afe-5eb7b67943ea
00182 //   void AssemblingGlbContactData(LoadSet& LoadSets, unsigned long LoadSetNumber);
00183 //---
00184 //uuid=mm:8da57291-031a-49d5-886c-19cf67689ae1
00185 //   void AssemblingGlobalContactStiffnessMatrix(LoadSet& LoadSets, unsigned long LoadSetNumber);
00186 
00187 //#UBLK-END-GLOBALH
00188 
00189 
00190 #endif // _GLOBALSOLVER_H_
 All Classes Files Functions Variables Typedefs Friends Defines