Changeset 3871
- Timestamp:
- 05/21/10 09:13:51 (15 years ago)
- Location:
- issm/trunk/src/c/objects
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk/src/c/objects/Elements/Penta.cpp
r3870 r3871 159 159 } 160 160 161 /*default vx,vy and vz: */ 162 if (!iomodel->vx && iomodel->vx_obs) { 163 for(i=0;i<6;i++)nodeinputs[i]=iomodel->vx_obs[penta_node_ids[i]-1]/iomodel->yts; 161 /*default vx,vy and vz: either observation or 0 */ 162 if (!iomodel->vx){ 163 if (iomodel->vx_obs) for(i=0;i<6;i++)nodeinputs[i]=iomodel->vx_obs[penta_node_ids[i]-1]/iomodel->yts; 164 else for(i=0;i<6;i++)nodeinputs[i]=0; 164 165 this->inputs->AddInput(new PentaVertexInput(VxEnum,nodeinputs)); 165 166 this->inputs->AddInput(new PentaVertexInput(VxOldEnum,nodeinputs)); 166 167 } 167 if (!iomodel->vy && iomodel->vy_obs) { 168 for(i=0;i<6;i++)nodeinputs[i]=iomodel->vy_obs[penta_node_ids[i]-1]/iomodel->yts; 168 if (!iomodel->vy){ 169 if (iomodel->vy_obs) for(i=0;i<6;i++)nodeinputs[i]=iomodel->vy_obs[penta_node_ids[i]-1]/iomodel->yts; 170 else for(i=0;i<6;i++)nodeinputs[i]=0; 169 171 this->inputs->AddInput(new PentaVertexInput(VyEnum,nodeinputs)); 170 172 this->inputs->AddInput(new PentaVertexInput(VyOldEnum,nodeinputs)); 171 173 } 172 if (!iomodel->vz && iomodel->vz_obs) { 173 for(i=0;i<6;i++)nodeinputs[i]=iomodel->vz_obs[penta_node_ids[i]-1]/iomodel->yts; 174 if (!iomodel->vz){ 175 if (iomodel->vz_obs) for(i=0;i<6;i++)nodeinputs[i]=iomodel->vz_obs[penta_node_ids[i]-1]/iomodel->yts; 176 else for(i=0;i<6;i++)nodeinputs[i]=0; 174 177 this->inputs->AddInput(new PentaVertexInput(VzEnum,nodeinputs)); 175 178 this->inputs->AddInput(new PentaVertexInput(VzOldEnum,nodeinputs)); … … 330 333 name==AccumulationRateEnum || 331 334 name==GeothermalFluxEnum || 335 name==PressureEnum || 332 336 name==TemperatureEnum || 333 337 name==TemperatureAverageEnum || … … 589 593 GetSolutionFromInputsDiagnosticHoriz(solution,analysis_type,sub_analysis_type); 590 594 } 591 else ISSMERROR("%s%i%s\n","sub_analysis: ",sub_analysis_type," not supported yet"); 595 else if(sub_analysis_type==VertAnalysisEnum){ 596 GetSolutionFromInputsDiagnosticVert(solution,analysis_type,sub_analysis_type); 597 } 598 else if(sub_analysis_type==StokesAnalysisEnum){ 599 GetSolutionFromInputsDiagnosticStokes(solution,analysis_type,sub_analysis_type); 600 } 601 else ISSMERROR("sub_analysis: %i (%s) not supported yet",sub_analysis_type,EnumAsString(sub_analysis_type)); 592 602 } 593 603 else{ 594 ISSMERROR(" %s%i%s\n","analysis: ",analysis_type," not supported yet");604 ISSMERROR("analysis: %i (%s) not supported yet",analysis_type,EnumAsString(analysis_type)); 595 605 } 596 606 } … … 625 635 values[i*numdofpervertex+0]=vx; 626 636 values[i*numdofpervertex+1]=vy; 637 } 638 639 /*Add value to global vector*/ 640 VecSetValues(solution,numdof,doflist,(const double*)values,INSERT_VALUES); 641 642 } 643 /*}}}*/ 644 /*FUNCTION Penta::GetSolutionFromInputsDiagnosticVert(Vec solution,int analysis_type,int sub_analysis_type){{{1*/ 645 void Penta::GetSolutionFromInputsDiagnosticVert(Vec solution,int analysis_type,int sub_analysis_type){ 646 647 int i; 648 649 const int numvertices=6; 650 const int numdofpervertex=1; 651 const int numdof=numdofpervertex*numvertices; 652 double gauss[numvertices][4]={{1,0,0,-1},{0,1,0,-1},{0,0,1,-1},{1,0,0,1},{0,1,0,1},{0,0,1,1}}; 653 654 int doflist[numdof]; 655 double values[numdof]; 656 double vz; 657 658 int dummy; 659 660 /*Get dof list: */ 661 GetDofList(&doflist[0],&dummy); 662 663 /*Ok, we have vx and vy in values, fill in vx and vy arrays: */ 664 /*P1 element only for now*/ 665 for(i=0;i<numvertices;i++){ 666 667 /*Recover vz */ 668 inputs->GetParameterValue(&vz,&gauss[i][0],VxEnum); 669 values[i]=vz; 670 } 671 672 /*Add value to global vector*/ 673 VecSetValues(solution,numdof,doflist,(const double*)values,INSERT_VALUES); 674 } 675 /*}}}*/ 676 /*FUNCTION Penta::GetSolutionFromInputsDiagnosticStokes(Vec solution,int analysis_type,int sub_analysis_type){{{1*/ 677 void Penta::GetSolutionFromInputsDiagnosticStokes(Vec solution,int analysis_type,int sub_analysis_type){ 678 679 int i; 680 681 const int numvertices=6; 682 const int numdofpervertex=4; 683 const int numdof=numdofpervertex*numvertices; 684 double gauss[numvertices][4]={{1,0,0,-1},{0,1,0,-1},{0,0,1,-1},{1,0,0,1},{0,1,0,1},{0,0,1,1}}; 685 686 int doflist[numdof]; 687 double values[numdof]; 688 double vx,vy,vz,p; 689 690 int dummy; 691 692 /*Get dof list: */ 693 GetDofList(&doflist[0],&dummy); 694 695 /*Ok, we have vx vy vz and P in values, fill in vx vy vz P arrays: */ 696 /*P1 element only for now*/ 697 for(i=0;i<numvertices;i++){ 698 699 /*Recover vx and vy*/ 700 inputs->GetParameterValue(&vx,&gauss[i][0],VxEnum); 701 inputs->GetParameterValue(&vy,&gauss[i][0],VyEnum); 702 inputs->GetParameterValue(&vz,&gauss[i][0],VzEnum); 703 inputs->GetParameterValue(&p ,&gauss[i][0],PressureEnum); 704 values[i*numdofpervertex+0]=vx; 705 values[i*numdofpervertex+1]=vy; 706 values[i*numdofpervertex+2]=vz; 707 values[i*numdofpervertex+3]=p; 627 708 } 628 709 -
issm/trunk/src/c/objects/Elements/Penta.h
r3869 r3871 67 67 void GetSolutionFromInputs(Vec solution, int analysis_type,int sub_analysis_type); 68 68 void GetSolutionFromInputsDiagnosticHoriz(Vec solution,int analysis_type,int sub_analysis_type); 69 void GetSolutionFromInputsDiagnosticVert(Vec solution,int analysis_type,int sub_analysis_type); 70 void GetSolutionFromInputsDiagnosticStokes(Vec solution,int analysis_type,int sub_analysis_type); 69 71 void GetDofList(int* doflist,int* pnumberofdofs); 70 72 void GetDofList1(int* doflist); -
issm/trunk/src/c/objects/Loads/Pengrid.cpp
r3813 r3871 710 710 } 711 711 /*}}}1*/ 712 /*FUNCTION Pengrid::UpdateInputsFromVector(double* vector, int name, int type) {{{1*/ 713 void Pengrid::UpdateInputsFromVector(double* vector, int name, int type){ 714 /*Nothing updated yet*/ 715 } 716 /*}}}*/ 717 /*FUNCTION Pengrid::UpdateInputsFromVector(int* vector, int name, int type) {{{1*/ 718 void Pengrid::UpdateInputsFromVector(int* vector, int name, int type){ 719 /*Nothing updated yet*/ 720 } 721 /*}}}*/ 722 /*FUNCTION Pengrid::UpdateInputsFromVector(bool* vector, int name, int type) {{{1*/ 723 void Pengrid::UpdateInputsFromVector(bool* vector, int name, int type){ 724 /*Nothing updated yet*/ 725 } 726 /*}}}*/ 727 /*FUNCTION Pengrid::UpdateInputsFromConstant(double constant, int name) {{{1*/ 728 void Pengrid::UpdateInputsFromConstant(double constant, int name){ 729 /*Nothing updated yet*/ 730 } 731 /*}}}*/ 732 /*FUNCTION Pengrid::UpdateInputsFromConstant(int constant, int name) {{{1*/ 733 void Pengrid::UpdateInputsFromConstant(int constant, int name){ 734 /*Nothing updated yet*/ 735 } 736 /*}}}*/ 737 /*FUNCTION Pengrid::UpdateInputsFromConstant(bool constant, int name) {{{1*/ 738 void Pengrid::UpdateInputsFromConstant(bool constant, int name){ 739 /*Nothing updated yet*/ 740 } 741 /*}}}*/ 742 /*FUNCTION Pengrid::UpdateInputsFromSolution(double* solution, int analysis_type, int sub_analysis_type) {{{1*/ 743 void Pengrid::UpdateInputsFromSolution(double* solution, int analysis_type, int sub_analysis_type){ 744 /*Nothing updated yet*/ 745 } 746 /*}}}*/ -
issm/trunk/src/c/objects/Loads/Pengrid.h
r3751 r3871 51 51 int MarshallSize(); 52 52 int MyRank(); 53 void UpdateInputsFromVector(double* vector, int name, int type){ISSMERROR("Not implemented yet!");}54 void UpdateInputsFromVector(int* vector, int name, int type){ISSMERROR("Not implemented yet!");}55 void UpdateInputsFromVector(bool* vector, int name, int type){ISSMERROR("Not implemented yet!");}56 void UpdateInputsFromConstant(double constant, int name){ISSMERROR("Not implemented yet!");}57 void UpdateInputsFromConstant(int constant, int name){ISSMERROR("Not implemented yet!");}58 void UpdateInputsFromConstant(bool constant, int name){ISSMERROR("Not implemented yet!");}53 void UpdateInputsFromVector(double* vector, int name, int type); 54 void UpdateInputsFromVector(int* vector, int name, int type); 55 void UpdateInputsFromVector(bool* vector, int name, int type); 56 void UpdateInputsFromConstant(double constant, int name); 57 void UpdateInputsFromConstant(int constant, int name); 58 void UpdateInputsFromConstant(bool constant, int name); 59 59 60 void UpdateInputsFromSolution(double* solution, int analysis_type, int sub_analysis_type){ISSMERROR("Not implemented yet!");}60 void UpdateInputsFromSolution(double* solution, int analysis_type, int sub_analysis_type); 61 61 62 62 /*}}}*/
Note:
See TracChangeset
for help on using the changeset viewer.