source:
issm/oecreview/Archive/13393-13976/ISSM-13938-13939.diff@
14312
Last change on this file since 14312 was 13980, checked in by , 12 years ago | |
---|---|
File size: 8.3 KB |
-
../trunk-jpl/src/c/modules/CreateJacobianMatrixx/CreateJacobianMatrixx.cpp
1 /*!\file CreateJacobianMatrixx2 * \brief: create system matrices (stiffness matrix, loads vector)3 */4 5 #include "./CreateJacobianMatrixx.h"6 #include "../../shared/shared.h"7 #include "../../include/include.h"8 #include "../../io/io.h"9 #include "../../toolkits/toolkits.h"10 #include "../../EnumDefinitions/EnumDefinitions.h"11 12 void CreateJacobianMatrixx(Matrix<IssmDouble>** pJff,Elements* elements,Nodes* nodes, Vertices* vertices,Loads* loads,Materials* materials, Parameters* parameters,IssmDouble kmax){13 14 int i,connectivity;15 int numberofdofspernode;16 int fsize,configuration_type;17 Element *element = NULL;18 Load *load = NULL;19 Matrix<IssmDouble>* Jff = NULL;20 21 /*Checks*/22 _assert_(nodes && elements);23 24 /*Recover some parameters*/25 parameters->FindParam(&configuration_type,ConfigurationTypeEnum);26 parameters->FindParam(&connectivity,MeshAverageVertexConnectivityEnum);27 fsize=nodes->NumberOfDofs(configuration_type,FsetEnum);28 numberofdofspernode=nodes->MaxNumDofs(configuration_type,GsetEnum);29 30 /*Initialize Jacobian Matrix*/31 Jff=new Matrix<IssmDouble>(fsize,fsize,connectivity,numberofdofspernode);32 33 /*Create and assemble matrix*/34 for(i=0;i<elements->Size();i++){35 element=dynamic_cast<Element*>(elements->GetObjectByOffset(i));36 element->CreateJacobianMatrix(Jff);37 }38 for (i=0;i<loads->Size();i++){39 load=(Load*)loads->GetObjectByOffset(i);40 if(load->InAnalysis(configuration_type)) load->CreateJacobianMatrix(Jff);41 if(load->InAnalysis(configuration_type)) load->PenaltyCreateJacobianMatrix(Jff,kmax);42 }43 Jff->Assemble();44 45 /*Assign output pointer*/46 *pJff=Jff;47 } -
../trunk-jpl/src/c/modules/CreateJacobianMatrixx/CreateJacobianMatrixx.h
1 /*!\file: CreateJacobianMatrixx.h2 * \brief header file for degree of freedoms distribution routines.3 */4 5 #ifndef _CREATEJACOBIANMATRIXX_H6 #define _CREATEJACOBIANMATRIXX_H7 8 #include "../../Container/Container.h"9 #include "../../classes/objects/objects.h"10 11 /* local prototypes: */12 void CreateJacobianMatrixx(Matrix<IssmDouble>** pJff,Elements* elements,Nodes* nodes, Vertices* vertices,Loads* loads,Materials* materials, Parameters* parameters,IssmDouble kmax);13 14 #endif /* _CREATEJACOBIANMATRIXX_H */ -
../trunk-jpl/src/c/modules/Reducevectorgtofx/Reducevectorgtofx.cpp
14 14 int configuration_type; 15 15 int fsize; 16 16 IssmDouble *ug_serial = NULL; 17 bool oldalloc = false;17 bool oldalloc = true; 18 18 19 19 /*first figure out fsize: */ 20 20 parameters->FindParam(&configuration_type,ConfigurationTypeEnum); -
../trunk-jpl/src/c/modules/modules.h
90 90 #include "./Solverx/Solverx.h" 91 91 #include "./SpcNodesx/SpcNodesx.h" 92 92 #include "./SurfaceAreax/SurfaceAreax.h" 93 #include "./CreateJacobianMatrixx/CreateJacobianMatrixx.h"94 93 #include "./TriaSearchx/TriaSearchx.h" 95 94 #include "./TriMeshx/TriMeshx.h" 96 95 #include "./TriMeshProcessRiftsx/TriMeshProcessRiftsx.h" -
../trunk-jpl/src/c/modules/Reduceloadx/Reduceloadx.cpp
19 19 int Kfsm,Kfsn; 20 20 int global_m,global_n; 21 21 bool fromlocalsize = true; 22 bool oldalloc = true; 22 23 23 24 if(VerboseModule()) _pprintLine_(" Dirichlet lifting applied to load vector"); 24 25 … … 30 31 31 32 /*pf = pf - Kfs * y_s;*/ 32 33 Kfs->GetLocalSize(&Kfsm,&Kfsn); 33 Kfsy_s=new Vector<IssmDouble>(Kfsm,fromlocalsize); 34 if(oldalloc) 35 Kfsy_s=new Vector<IssmDouble>(Kfsm,fromlocalsize); 36 else 37 Kfsy_s=new Vector<IssmDouble>(Kfsm,global_m); 38 34 39 if (flag_ys0){ 35 40 36 41 /*Create y_s0, full of 0: */ -
../trunk-jpl/src/c/Makefile.am
298 298 ./modules/EnumToStringx/EnumToStringx.h\ 299 299 ./modules/StringToEnumx/StringToEnumx.cpp\ 300 300 ./modules/StringToEnumx/StringToEnumx.h\ 301 ./modules/CreateJacobianMatrixx/CreateJacobianMatrixx.cpp\302 ./modules/CreateJacobianMatrixx/CreateJacobianMatrixx.h\303 301 ./modules/ConstraintsStatex/ConstraintsStatex.cpp\ 304 302 ./modules/ConstraintsStatex/ConstraintsStatex.h\ 305 303 ./modules/ConstraintsStatex/ConstraintsStateLocal.h\ -
../trunk-jpl/src/c/classes/FemModel.cpp
352 352 Vector<IssmDouble> *pf = NULL; 353 353 Vector<IssmDouble> *df = NULL; 354 354 355 bool oldalloc= false;355 bool oldalloc=true; 356 356 357 357 /*retrieve parameters: */ 358 358 this->parameters->FindParam(&configuration_type,ConfigurationTypeEnum); … … 537 537 xDelete<int>(next_l); 538 538 539 539 /*sum over all cpus*/ 540 540 #ifdef _HAVE_MPI_ 541 541 MPI_Allreduce((void*)connectivity_clone,(void*)all_connectivity_clone,numnodes,MPI_INT,MPI_SUM,IssmComm::GetComm()); 542 542 #endif 543 543 xDelete<int>(connectivity_clone); 544 544 545 545 if(set1enum==FsetEnum){ … … 573 573 *po_nnz=o_nnz; 574 574 575 575 }/*}}}*/ 576 void FemModel::CreateJacobianMatrixx(Matrix<IssmDouble>** pJff,IssmDouble kmax){/*{{{*/ 577 578 int i,connectivity; 579 int numberofdofspernode; 580 int fsize,configuration_type; 581 Element *element = NULL; 582 Load *load = NULL; 583 Matrix<IssmDouble>* Jff = NULL; 584 585 /*Checks*/ 586 _assert_(nodes && elements); 587 588 /*Recover some parameters*/ 589 parameters->FindParam(&configuration_type,ConfigurationTypeEnum); 590 parameters->FindParam(&connectivity,MeshAverageVertexConnectivityEnum); 591 fsize=nodes->NumberOfDofs(configuration_type,FsetEnum); 592 numberofdofspernode=nodes->MaxNumDofs(configuration_type,GsetEnum); 593 594 /*Initialize Jacobian Matrix*/ 595 this->AllocateSystemMatrices(&Jff,NULL,NULL,NULL); 596 Jff=new Matrix<IssmDouble>(fsize,fsize,connectivity,numberofdofspernode); 597 598 /*Create and assemble matrix*/ 599 for(i=0;i<elements->Size();i++){ 600 element=dynamic_cast<Element*>(elements->GetObjectByOffset(i)); 601 element->CreateJacobianMatrix(Jff); 602 } 603 for (i=0;i<loads->Size();i++){ 604 load=(Load*)loads->GetObjectByOffset(i); 605 if(load->InAnalysis(configuration_type)) load->CreateJacobianMatrix(Jff); 606 if(load->InAnalysis(configuration_type)) load->PenaltyCreateJacobianMatrix(Jff,kmax); 607 } 608 Jff->Assemble(); 609 610 /*Assign output pointer*/ 611 *pJff=Jff; 612 613 }/*}}}*/ 576 614 int FemModel::UpdateVertexPositionsx(void){ /*{{{*/ 577 615 578 616 int i; -
../trunk-jpl/src/c/classes/FemModel.h
52 52 53 53 /*Methods:*/ 54 54 void AllocateSystemMatrices(Matrix<IssmDouble>** pKff,Matrix<IssmDouble>** pKfs,Vector<IssmDouble>** pdf,Vector<IssmDouble>** ppf); 55 void CreateJacobianMatrixx(Matrix<IssmDouble>** pJff,IssmDouble kmax); 55 56 void Echo(); 56 57 void InitFromFiles(char* rootpath, char* inputfilename, char* outputfilename, char* petscfilename, char* lockfilename, const int solution_type,const int* analyses,const int nummodels); 57 58 void MatrixNonzeros(int** pd_nnz,int** po_nnz,int set1enum,int set2enum);
Note:
See TracBrowser
for help on using the repository browser.