Changeset 5510
- Timestamp:
- 08/23/10 11:01:55 (15 years ago)
- Location:
- issm/trunk/src/c
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
TabularUnified issm/trunk/src/c/modules/ModelProcessorx/DiagnosticStokes/CreateLoadsDiagnosticStokes.cpp ¶
r5433 r5510 17 17 int segment_width; 18 18 int element; 19 int penpair_ids[2]; 19 20 20 21 /*DataSet*/ … … 81 82 for (i=0;i<iomodel->numberofvertices;i++){ 82 83 83 if( (iomodel->my_vertices[i]==1)){84 if(iomodel->my_vertices[i]==1 && iomodel->singlenodetoelementconnectivity[i]!=0){ 84 85 85 86 if ((iomodel->gridonbed[i]) && (iomodel->gridonicesheet[i]) && (iomodel->gridonstokes[i])){ … … 97 98 xfree((void**)&iomodel->singlenodetoelementconnectivity); 98 99 100 /*Create Penpair for penalties: */ 101 IoModelFetchData(&iomodel->penalties,&iomodel->numpenalties,NULL,iomodel_handle,"penalties"); 102 103 for(i=0;i<iomodel->numpenalties;i++){ 104 105 if(iomodel->my_vertices[(int)iomodel->penalties[2*i+0]-1]){ 106 107 /*In debugging mode, check that the second node is in the same cpu*/ 108 ISSMASSERT(iomodel->my_vertices[(int)iomodel->penalties[2*i+1]-1]); 109 110 /*Get node ids*/ 111 penpair_ids[0]=iomodel->nodecounter+(int)iomodel->penalties[2*i+0]; 112 penpair_ids[1]=iomodel->nodecounter+(int)iomodel->penalties[2*i+1]; 113 114 /*Create Load*/ 115 loads->AddObject(new Penpair(iomodel->loadcounter+count+1,&penpair_ids[0],DiagnosticStokesAnalysisEnum)); 116 count++; 117 } 118 } 119 120 /*free ressources: */ 121 xfree((void**)&iomodel->penalties); 122 99 123 cleanup_and_return: 100 124 -
TabularUnified issm/trunk/src/c/objects/Elements/Penta.cpp ¶
r5433 r5510 2158 2158 } 2159 2159 if(!iomodel->pressure){ 2160 for(i=0;i<6;i++)nodeinputs[i]= i;2160 for(i=0;i<6;i++)nodeinputs[i]=0; 2161 2161 if(iomodel->qmu_analysis){ 2162 2162 this->inputs->AddInput(new PentaVertexInput(PressureEnum,nodeinputs)); -
TabularUnified issm/trunk/src/c/objects/Loads/Pengrid.cpp ¶
r5431 r5510 44 44 ISSMASSERT(iomodel->singlenodetoelementconnectivity); 45 45 ISSMASSERT(index>=0 && index<iomodel->numberofvertices); 46 ISSMASSERT(id); 46 47 47 48 /*id: */ … … 52 53 pengrid_node_id=iomodel->nodecounter+index+1; 53 54 pengrid_element_id=iomodel->singlenodetoelementconnectivity[index]; 55 ISSMASSERT(pengrid_element_id); 54 56 pengrid_matpar_id=iomodel->numberofelements+1; //refers to the constant material parameters object 55 57 -
TabularUnified issm/trunk/src/c/objects/Loads/Penpair.cpp ¶
r5152 r5510 209 209 PenaltyCreateKMatrixDiagnosticHoriz(Kgg,kmax); 210 210 } 211 else if (analysis_type==DiagnosticStokesAnalysisEnum){ 212 PenaltyCreateKMatrixDiagnosticStokes(Kgg,kmax); 213 } 211 214 else{ 212 215 ISSMERROR("analysis %i (%s) not supported yet",analysis_type,EnumToString(analysis_type)); … … 288 291 } 289 292 /*}}}1*/ 293 /*FUNCTION Penpair::PenaltyCreateKMatrixDiagnosticStokes {{{1*/ 294 void Penpair::PenaltyCreateKMatrixDiagnosticStokes(Mat Kgg,double kmax){ 295 296 const int numgrids=2; 297 const int NDOF3=4; 298 const int numdof=numgrids*NDOF3; 299 int* doflist=NULL; 300 int numberofdofspernode; 301 302 double Ke[8][8]={0.0}; 303 double penalty_offset; 304 305 /*pointers: */ 306 Node** nodes=NULL; 307 308 /*Get dof list: */ 309 GetDofList(&doflist); 310 311 /*recover pointers: */ 312 nodes=(Node**)hnodes->deliverp(); 313 314 /*recover parameters: */ 315 parameters->FindParam(&penalty_offset,PenaltyOffsetEnum); 316 317 //Create elementary matrix: add penalty to 318 Ke[0][0]=kmax*pow((double)10.0,penalty_offset); 319 Ke[0][4]=-kmax*pow((double)10.0,penalty_offset); 320 Ke[4][0]=-kmax*pow((double)10.0,penalty_offset); 321 Ke[4][4]=kmax*pow((double)10.0,penalty_offset); 322 323 Ke[1][1]=kmax*pow((double)10.0,penalty_offset); 324 Ke[1][5]=-kmax*pow((double)10.0,penalty_offset); 325 Ke[5][1]=-kmax*pow((double)10.0,penalty_offset); 326 Ke[5][5]=kmax*pow((double)10.0,penalty_offset); 327 328 Ke[2][2]=kmax*pow((double)10.0,penalty_offset); 329 Ke[2][6]=-kmax*pow((double)10.0,penalty_offset); 330 Ke[6][2]=-kmax*pow((double)10.0,penalty_offset); 331 Ke[6][6]=kmax*pow((double)10.0,penalty_offset); 332 333 Ke[3][3]=kmax*pow((double)10.0,penalty_offset); 334 Ke[3][7]=-kmax*pow((double)10.0,penalty_offset); 335 Ke[7][3]=-kmax*pow((double)10.0,penalty_offset); 336 Ke[7][7]=kmax*pow((double)10.0,penalty_offset); 337 338 /*Add Ke to global matrix Kgg: */ 339 MatSetValues(Kgg,numdof,doflist,numdof,doflist,(const double*)Ke,ADD_VALUES); 340 341 /*Free ressources:*/ 342 xfree((void**)&doflist); 343 344 } 345 /*}}}1*/ 290 346 /*FUNCTION Penpair::GetDofList {{{1*/ 291 347 void Penpair::GetDofList(int** pdoflist){ -
TabularUnified issm/trunk/src/c/objects/Loads/Penpair.h ¶
r5311 r5510 65 65 /*Penpair management: {{{1*/ 66 66 void PenaltyCreateKMatrixDiagnosticHoriz(Mat Kgg,double kmax); 67 void PenaltyCreateKMatrixDiagnosticStokes(Mat Kgg,double kmax); 67 68 void GetDofList(int** pdoflist); 68 69 /*}}}*/
Note:
See TracChangeset
for help on using the changeset viewer.