source: issm/oecreview/Archive/13393-13976/ISSM-13938-13939.diff@ 14312

Last change on this file since 14312 was 13980, checked in by Mathieu Morlighem, 12 years ago

preparing oecreview for 13393-13976'

File size: 8.3 KB
RevLine 
[13980]1Index: ../trunk-jpl/src/c/modules/CreateJacobianMatrixx/CreateJacobianMatrixx.cpp
2===================================================================
3--- ../trunk-jpl/src/c/modules/CreateJacobianMatrixx/CreateJacobianMatrixx.cpp (revision 13938)
4+++ ../trunk-jpl/src/c/modules/CreateJacobianMatrixx/CreateJacobianMatrixx.cpp (revision 13939)
5@@ -1,47 +0,0 @@
6-/*!\file CreateJacobianMatrixx
7- * \brief: create system matrices (stiffness matrix, loads vector)
8- */
9-
10-#include "./CreateJacobianMatrixx.h"
11-#include "../../shared/shared.h"
12-#include "../../include/include.h"
13-#include "../../io/io.h"
14-#include "../../toolkits/toolkits.h"
15-#include "../../EnumDefinitions/EnumDefinitions.h"
16-
17-void CreateJacobianMatrixx(Matrix<IssmDouble>** pJff,Elements* elements,Nodes* nodes, Vertices* vertices,Loads* loads,Materials* materials, Parameters* parameters,IssmDouble kmax){
18-
19- int i,connectivity;
20- int numberofdofspernode;
21- int fsize,configuration_type;
22- Element *element = NULL;
23- Load *load = NULL;
24- Matrix<IssmDouble>* Jff = NULL;
25-
26- /*Checks*/
27- _assert_(nodes && elements);
28-
29- /*Recover some parameters*/
30- parameters->FindParam(&configuration_type,ConfigurationTypeEnum);
31- parameters->FindParam(&connectivity,MeshAverageVertexConnectivityEnum);
32- fsize=nodes->NumberOfDofs(configuration_type,FsetEnum);
33- numberofdofspernode=nodes->MaxNumDofs(configuration_type,GsetEnum);
34-
35- /*Initialize Jacobian Matrix*/
36- Jff=new Matrix<IssmDouble>(fsize,fsize,connectivity,numberofdofspernode);
37-
38- /*Create and assemble matrix*/
39- for(i=0;i<elements->Size();i++){
40- element=dynamic_cast<Element*>(elements->GetObjectByOffset(i));
41- element->CreateJacobianMatrix(Jff);
42- }
43- for (i=0;i<loads->Size();i++){
44- load=(Load*)loads->GetObjectByOffset(i);
45- if(load->InAnalysis(configuration_type)) load->CreateJacobianMatrix(Jff);
46- if(load->InAnalysis(configuration_type)) load->PenaltyCreateJacobianMatrix(Jff,kmax);
47- }
48- Jff->Assemble();
49-
50- /*Assign output pointer*/
51- *pJff=Jff;
52-}
53Index: ../trunk-jpl/src/c/modules/CreateJacobianMatrixx/CreateJacobianMatrixx.h
54===================================================================
55--- ../trunk-jpl/src/c/modules/CreateJacobianMatrixx/CreateJacobianMatrixx.h (revision 13938)
56+++ ../trunk-jpl/src/c/modules/CreateJacobianMatrixx/CreateJacobianMatrixx.h (revision 13939)
57@@ -1,14 +0,0 @@
58-/*!\file: CreateJacobianMatrixx.h
59- * \brief header file for degree of freedoms distribution routines.
60- */
61-
62-#ifndef _CREATEJACOBIANMATRIXX_H
63-#define _CREATEJACOBIANMATRIXX_H
64-
65-#include "../../Container/Container.h"
66-#include "../../classes/objects/objects.h"
67-
68-/* local prototypes: */
69-void CreateJacobianMatrixx(Matrix<IssmDouble>** pJff,Elements* elements,Nodes* nodes, Vertices* vertices,Loads* loads,Materials* materials, Parameters* parameters,IssmDouble kmax);
70-
71-#endif /* _CREATEJACOBIANMATRIXX_H */
72Index: ../trunk-jpl/src/c/modules/Reducevectorgtofx/Reducevectorgtofx.cpp
73===================================================================
74--- ../trunk-jpl/src/c/modules/Reducevectorgtofx/Reducevectorgtofx.cpp (revision 13938)
75+++ ../trunk-jpl/src/c/modules/Reducevectorgtofx/Reducevectorgtofx.cpp (revision 13939)
76@@ -14,7 +14,7 @@
77 int configuration_type;
78 int fsize;
79 IssmDouble *ug_serial = NULL;
80- bool oldalloc = false;
81+ bool oldalloc = true;
82
83 /*first figure out fsize: */
84 parameters->FindParam(&configuration_type,ConfigurationTypeEnum);
85Index: ../trunk-jpl/src/c/modules/modules.h
86===================================================================
87--- ../trunk-jpl/src/c/modules/modules.h (revision 13938)
88+++ ../trunk-jpl/src/c/modules/modules.h (revision 13939)
89@@ -90,7 +90,6 @@
90 #include "./Solverx/Solverx.h"
91 #include "./SpcNodesx/SpcNodesx.h"
92 #include "./SurfaceAreax/SurfaceAreax.h"
93-#include "./CreateJacobianMatrixx/CreateJacobianMatrixx.h"
94 #include "./TriaSearchx/TriaSearchx.h"
95 #include "./TriMeshx/TriMeshx.h"
96 #include "./TriMeshProcessRiftsx/TriMeshProcessRiftsx.h"
97Index: ../trunk-jpl/src/c/modules/Reduceloadx/Reduceloadx.cpp
98===================================================================
99--- ../trunk-jpl/src/c/modules/Reduceloadx/Reduceloadx.cpp (revision 13938)
100+++ ../trunk-jpl/src/c/modules/Reduceloadx/Reduceloadx.cpp (revision 13939)
101@@ -19,6 +19,7 @@
102 int Kfsm,Kfsn;
103 int global_m,global_n;
104 bool fromlocalsize = true;
105+ bool oldalloc = true;
106
107 if(VerboseModule()) _pprintLine_(" Dirichlet lifting applied to load vector");
108
109@@ -30,7 +31,11 @@
110
111 /*pf = pf - Kfs * y_s;*/
112 Kfs->GetLocalSize(&Kfsm,&Kfsn);
113- Kfsy_s=new Vector<IssmDouble>(Kfsm,fromlocalsize);
114+ if(oldalloc)
115+ Kfsy_s=new Vector<IssmDouble>(Kfsm,fromlocalsize);
116+ else
117+ Kfsy_s=new Vector<IssmDouble>(Kfsm,global_m);
118+
119 if (flag_ys0){
120
121 /*Create y_s0, full of 0: */
122Index: ../trunk-jpl/src/c/Makefile.am
123===================================================================
124--- ../trunk-jpl/src/c/Makefile.am (revision 13938)
125+++ ../trunk-jpl/src/c/Makefile.am (revision 13939)
126@@ -298,8 +298,6 @@
127 ./modules/EnumToStringx/EnumToStringx.h\
128 ./modules/StringToEnumx/StringToEnumx.cpp\
129 ./modules/StringToEnumx/StringToEnumx.h\
130- ./modules/CreateJacobianMatrixx/CreateJacobianMatrixx.cpp\
131- ./modules/CreateJacobianMatrixx/CreateJacobianMatrixx.h\
132 ./modules/ConstraintsStatex/ConstraintsStatex.cpp\
133 ./modules/ConstraintsStatex/ConstraintsStatex.h\
134 ./modules/ConstraintsStatex/ConstraintsStateLocal.h\
135Index: ../trunk-jpl/src/c/classes/FemModel.cpp
136===================================================================
137--- ../trunk-jpl/src/c/classes/FemModel.cpp (revision 13938)
138+++ ../trunk-jpl/src/c/classes/FemModel.cpp (revision 13939)
139@@ -352,7 +352,7 @@
140 Vector<IssmDouble> *pf = NULL;
141 Vector<IssmDouble> *df = NULL;
142
143- bool oldalloc=false;
144+ bool oldalloc=true;
145
146 /*retrieve parameters: */
147 this->parameters->FindParam(&configuration_type,ConfigurationTypeEnum);
148@@ -537,9 +537,9 @@
149 xDelete<int>(next_l);
150
151 /*sum over all cpus*/
152- #ifdef _HAVE_MPI_
153+#ifdef _HAVE_MPI_
154 MPI_Allreduce((void*)connectivity_clone,(void*)all_connectivity_clone,numnodes,MPI_INT,MPI_SUM,IssmComm::GetComm());
155- #endif
156+#endif
157 xDelete<int>(connectivity_clone);
158
159 if(set1enum==FsetEnum){
160@@ -573,6 +573,44 @@
161 *po_nnz=o_nnz;
162
163 }/*}}}*/
164+void FemModel::CreateJacobianMatrixx(Matrix<IssmDouble>** pJff,IssmDouble kmax){/*{{{*/
165+
166+ int i,connectivity;
167+ int numberofdofspernode;
168+ int fsize,configuration_type;
169+ Element *element = NULL;
170+ Load *load = NULL;
171+ Matrix<IssmDouble>* Jff = NULL;
172+
173+ /*Checks*/
174+ _assert_(nodes && elements);
175+
176+ /*Recover some parameters*/
177+ parameters->FindParam(&configuration_type,ConfigurationTypeEnum);
178+ parameters->FindParam(&connectivity,MeshAverageVertexConnectivityEnum);
179+ fsize=nodes->NumberOfDofs(configuration_type,FsetEnum);
180+ numberofdofspernode=nodes->MaxNumDofs(configuration_type,GsetEnum);
181+
182+ /*Initialize Jacobian Matrix*/
183+ this->AllocateSystemMatrices(&Jff,NULL,NULL,NULL);
184+ Jff=new Matrix<IssmDouble>(fsize,fsize,connectivity,numberofdofspernode);
185+
186+ /*Create and assemble matrix*/
187+ for(i=0;i<elements->Size();i++){
188+ element=dynamic_cast<Element*>(elements->GetObjectByOffset(i));
189+ element->CreateJacobianMatrix(Jff);
190+ }
191+ for (i=0;i<loads->Size();i++){
192+ load=(Load*)loads->GetObjectByOffset(i);
193+ if(load->InAnalysis(configuration_type)) load->CreateJacobianMatrix(Jff);
194+ if(load->InAnalysis(configuration_type)) load->PenaltyCreateJacobianMatrix(Jff,kmax);
195+ }
196+ Jff->Assemble();
197+
198+ /*Assign output pointer*/
199+ *pJff=Jff;
200+
201+}/*}}}*/
202 int FemModel::UpdateVertexPositionsx(void){ /*{{{*/
203
204 int i;
205Index: ../trunk-jpl/src/c/classes/FemModel.h
206===================================================================
207--- ../trunk-jpl/src/c/classes/FemModel.h (revision 13938)
208+++ ../trunk-jpl/src/c/classes/FemModel.h (revision 13939)
209@@ -52,6 +52,7 @@
210
211 /*Methods:*/
212 void AllocateSystemMatrices(Matrix<IssmDouble>** pKff,Matrix<IssmDouble>** pKfs,Vector<IssmDouble>** pdf,Vector<IssmDouble>** ppf);
213+ void CreateJacobianMatrixx(Matrix<IssmDouble>** pJff,IssmDouble kmax);
214 void Echo();
215 void InitFromFiles(char* rootpath, char* inputfilename, char* outputfilename, char* petscfilename, char* lockfilename, const int solution_type,const int* analyses,const int nummodels);
216 void MatrixNonzeros(int** pd_nnz,int** po_nnz,int set1enum,int set2enum);
Note: See TracBrowser for help on using the repository browser.