hp2FEM
0.1
|
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_