Changeset 4478
- Timestamp:
- 07/08/10 15:34:15 (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk/src/c/objects/Elements/Penta.cpp
r4475 r4478 374 374 InputUpdateFromSolutionAdjointHoriz( solution); 375 375 } 376 else if (analysis_type==AdjointStokesAnalysisEnum){ 377 InputUpdateFromSolutionAdjointStokes( solution); 378 } 376 379 else if (analysis_type==BedSlopeXAnalysisEnum){ 377 380 InputUpdateFromBedSlopeX( solution); … … 979 982 bool onbed; 980 983 bool shelf; 981 int analysis_type ,sub_analysis_type;984 int analysis_type; 982 985 983 986 /*retrieve parameters: */ 984 987 parameters->FindParam(&analysis_type,AnalysisTypeEnum); 985 parameters->FindParam(&sub_analysis_type,AnalysisTypeEnum);986 988 987 989 /*retrieve inputs :*/ … … 999 1001 if (!onbed) return; 1000 1002 1001 if ( sub_analysis_type==HorizAnalysisEnum){1003 if (analysis_type==AdjointHorizAnalysisEnum){ 1002 1004 1003 1005 /*MacAyeal or Pattyn*/ … … 1006 1008 delete tria; 1007 1009 } 1008 else if ( sub_analysis_type==StokesAnalysisEnum){1010 else if (analysis_type==AdjointStokesAnalysisEnum){ 1009 1011 1010 1012 /*Stokes*/ … … 1013 1015 delete tria; 1014 1016 } 1015 else ISSMERROR(" %s%i%s\n","sub_analysis: ",sub_analysis_type," not supported yet");1017 else ISSMERROR("analysis %s not supported yet",EnumAsString(analysis_type)); 1016 1018 1017 1019 … … 2441 2443 /*Add surfaceslopey as inputs to the tria element: */ 2442 2444 this->inputs->AddInput(new PentaVertexInput(SurfaceSlopeYEnum,values)); 2445 } 2446 /*}}}*/ 2447 /*FUNCTION Penta::InputUpdateFromSolutionAdjointStokes {{{1*/ 2448 void Penta::InputUpdateFromSolutionAdjointStokes(double* solution){ 2449 2450 int i; 2451 2452 const int numvertices=6; 2453 const int numdofpervertex=4; 2454 const int numdof=numdofpervertex*numvertices; 2455 2456 int doflist[numdof]; 2457 double values[numdof]; 2458 double lambdax[numvertices]; 2459 double lambday[numvertices]; 2460 double lambdaz[numvertices]; 2461 double lambdap[numvertices]; 2462 2463 int dummy; 2464 2465 /*Get dof list: */ 2466 GetDofList(&doflist[0],&dummy); 2467 2468 /*Use the dof list to index into the solution vector: */ 2469 for(i=0;i<numdof;i++){ 2470 values[i]=solution[doflist[i]]; 2471 } 2472 2473 /*Ok, we have vx and vy in values, fill in vx and vy arrays: */ 2474 for(i=0;i<numvertices;i++){ 2475 lambdax[i]=values[i*numdofpervertex+0]; 2476 lambday[i]=values[i*numdofpervertex+1]; 2477 lambdaz[i]=values[i*numdofpervertex+2]; 2478 lambdap[i]=values[i*numdofpervertex+3]; 2479 } 2480 2481 /*Add vx and vy as inputs to the tria element: */ 2482 this->inputs->AddInput(new PentaVertexInput(AdjointxEnum,lambdax)); 2483 this->inputs->AddInput(new PentaVertexInput(AdjointyEnum,lambday)); 2484 this->inputs->AddInput(new PentaVertexInput(AdjointzEnum,lambdaz)); 2485 this->inputs->AddInput(new PentaVertexInput(AdjointpEnum,lambdap)); 2486 2443 2487 } 2444 2488 /*}}}*/
Note:
See TracChangeset
for help on using the changeset viewer.