Changeset 4651
- Timestamp:
- 07/19/10 11:24:03 (15 years ago)
- Location:
- issm/trunk/src
- Files:
-
- 2 deleted
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk/src/c/objects/Elements/Tria.cpp
r4610 r4651 1034 1034 /*Just branch to the correct InputUpdateFromSolution generator, according to the type of analysis we are carrying out: */ 1035 1035 if (analysis_type==DiagnosticHorizAnalysisEnum) 1036 1036 GetSolutionFromInputsDiagnosticHoriz(solution); 1037 1037 else if (analysis_type==AdjointHorizAnalysisEnum) 1038 1038 GetSolutionFromInputsAdjointHoriz(solution); 1039 else if (analysis_type==DiagnosticHutterAnalysisEnum) 1040 GetSolutionFromInputsDiagnosticHutter(solution); 1039 1041 else 1040 1042 ISSMERROR("analysis: %s not supported yet",EnumAsString(analysis_type)); … … 5352 5354 } 5353 5355 /*}}}*/ 5356 /*FUNCTION Tria::GetSolutionFromInputsDiagnosticHutter{{{1*/ 5357 void Tria::GetSolutionFromInputsDiagnosticHutter(Vec solution){ 5358 5359 int i; 5360 5361 const int numvertices=3; 5362 const int numdofpervertex=2; 5363 const int numdof=numdofpervertex*numvertices; 5364 double gauss[numvertices][numvertices]={{1,0,0},{0,1,0},{0,0,1}}; 5365 5366 int doflist[numdof]; 5367 double values[numdof]; 5368 double vx; 5369 double vy; 5370 5371 int dummy; 5372 5373 /*Get dof list: */ 5374 GetDofList(&doflist[0],&dummy); 5375 5376 /*Ok, we have vx and vy in values, fill in vx and vy arrays: */ 5377 /*P1 element only for now*/ 5378 for(i=0;i<numvertices;i++){ 5379 5380 /*Recover vx and vy*/ 5381 inputs->GetParameterValue(&vx,&gauss[i][0],VxEnum); 5382 inputs->GetParameterValue(&vy,&gauss[i][0],VyEnum); 5383 values[i*numdofpervertex+0]=vx; 5384 values[i*numdofpervertex+1]=vy; 5385 } 5386 5387 /*Add value to global vector*/ 5388 VecSetValues(solution,numdof,doflist,(const double*)values,INSERT_VALUES); 5389 5390 } 5391 /*}}}*/ 5354 5392 /*FUNCTION Tria::GradjDragStokes {{{1*/ 5355 5393 void Tria::GradjDragStokes(Vec gradient){ -
issm/trunk/src/c/objects/Elements/Tria.h
r4575 r4651 154 154 void GetSolutionFromInputsDiagnosticHoriz(Vec solution); 155 155 void GetSolutionFromInputsAdjointHoriz(Vec solution); 156 void GetSolutionFromInputsDiagnosticHutter(Vec solution); 156 157 void GradjDragStokes(Vec gradient); 157 158 void InputUpdateFromSolutionAdjointHoriz( double* solution); -
issm/trunk/src/c/solutions/diagnostic_core.cpp
r4521 r4651 51 51 52 52 if(verbose)_printf_("%s\n"," computing hutter velocities..."); 53 54 //Take the last velocity into account so that the velocity on the MacAyeal domain is not zero 55 if (ismacayealpattyn) ResetBoundaryConditions(femmodel,DiagnosticHutterAnalysisEnum); 56 53 57 femmodel->SetCurrentConfiguration(DiagnosticHutterAnalysisEnum); 54 58 solver_linear(NULL,femmodel); -
issm/trunk/src/c/solutions/stokescontrolinit.cpp
r4521 r4651 42 42 femmodel->SetCurrentConfiguration(DiagnosticHorizAnalysisEnum); 43 43 solver_diagnostic_nonlinear(NULL,NULL,NULL,femmodel,conserve_loads); 44 45 //vertical velocity 44 femmodel->SetCurrentConfiguration(DiagnosticVertAnalysisEnum); 46 45 solver_linear(NULL,femmodel); 47 46 -
issm/trunk/src/m/solutions/diagnostic_core.m
r4521 r4651 35 35 36 36 displaystring(verbose,'\n%s',['computing hutter velocities...']); 37 38 %Take the last velocity into account so that the velocity on the MacAyeal domain is not zero 39 if(ismacayealpattyn)femmodel=ResetBoundaryConditions(femmodel,DiagnosticHutterAnalysisEnum); end 40 37 41 femmodel=SetCurrentConfiguration(femmodel,DiagnosticHutterAnalysisEnum); 38 42 femmodel=solver_linear(femmodel); -
issm/trunk/src/m/solutions/stokescontrolinit.m
r4577 r4651 21 21 femmodel=SetCurrentConfiguration(femmodel,DiagnosticHorizAnalysisEnum); 22 22 femmodel=solver_diagnostic_nonlinear(femmodel,conserve_loads); 23 24 %vertical velocity 23 femmodel=SetCurrentConfiguration(femmodel,DiagnosticVertAnalysisEnum); 25 24 femmodel=solver_linear(femmodel); 26 25
Note:
See TracChangeset
for help on using the changeset viewer.