Changeset 26457
- Timestamp:
- 09/23/21 08:46:01 (4 years ago)
- Location:
- issm/trunk-jpl/src/c
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/analyses/StressbalanceAnalysis.cpp
r26442 r26457 792 792 iomodel->FetchDataToInput(inputs,elements,"md.initialization.vx",VxShearEnum,0.); 793 793 iomodel->FetchDataToInput(inputs,elements,"md.initialization.vy",VyShearEnum,0.); 794 } 795 if(iomodel->domaintype==Domain2DhorizontalEnum){ 794 796 iomodel->FetchDataToInput(inputs,elements,"md.initialization.vx",VxBaseEnum,0.); 795 797 iomodel->FetchDataToInput(inputs,elements,"md.initialization.vy",VyBaseEnum,0.); 798 iomodel->FetchDataToInput(inputs,elements,"md.initialization.vx",VxSurfaceEnum,0.); 799 iomodel->FetchDataToInput(inputs,elements,"md.initialization.vy",VySurfaceEnum,0.); 796 800 } 797 801 iomodel->FetchDataToInput(inputs,elements,"md.stressbalance.loadingforcex",LoadingforceXEnum); … … 2120 2124 2121 2125 /*Add vx and vy as inputs to the tria element: */ 2126 /*Also add surface vx and vy for the misfit, and base vx and vy for friction*/ 2122 2127 element->AddBasalInput(VxEnum,vx,element->GetElementType()); 2123 if(dim==2)element->AddBasalInput(VyEnum,vy,element->GetElementType()); 2128 element->AddBasalInput(VxSurfaceEnum,vx,element->GetElementType()); 2129 element->AddBasalInput(VxBaseEnum,vx,element->GetElementType()); 2130 if(dim==2) { 2131 element->AddBasalInput(VyEnum,vy,element->GetElementType()); 2132 element->AddBasalInput(VySurfaceEnum,vy,element->GetElementType()); 2133 element->AddBasalInput(VyBaseEnum,vy,element->GetElementType()); 2134 } 2124 2135 element->AddBasalInput(VelEnum,vel,element->GetElementType()); 2125 2136 2126 2137 /*Free ressources:*/ 2127 2138 xDelete<IssmDouble>(vel); … … 2724 2735 element->AddBasalInput(VelEnum,vel,element->GetElementType()); 2725 2736 2737 /*Also add surface vx and vy for the misfit, and base vx and vy for friction*/ 2738 element->AddBasalInput(VxSurfaceEnum,vx,element->GetElementType()); 2739 element->AddBasalInput(VySurfaceEnum,vy,element->GetElementType()); 2740 element->AddBasalInput(VxBaseEnum,vx,element->GetElementType()); 2741 element->AddBasalInput(VyBaseEnum,vy,element->GetElementType()); 2742 2726 2743 /*Free ressources:*/ 2727 2744 xDelete<IssmDouble>(vel); … … 2789 2806 2790 2807 /*build friction object, used later on: */ 2791 Friction* friction=new Friction(element, dim,true);2808 Friction* friction=new Friction(element, dim); 2792 2809 2793 2810 /*Recover portion of element that is grounded*/ … … 3280 3297 vx[i]=vbx[i]+vshx[i]*(n[i]+1)/(n[i]+2); 3281 3298 vy[i]=vby[i]+vshy[i]*(n[i]+1)/(n[i]+2); 3282 // HOTFIX: set surface velocity to VxEnum and VyEnum3283 // vx[i]=vbx[i]+vshx[i];3284 // vy[i]=vby[i]+vshy[i];3285 3299 } 3286 3300 … … 3474 3488 3475 3489 /*build friction object, used later on: */ 3476 Friction* friction=new Friction(element,dim==3?2:1); 3490 /*dim=4 is special for HO, which is actually 2.5D*/ 3491 Friction* friction=new Friction(element,dim==3?4:1); 3477 3492 3478 3493 /*Recover portion of element that is grounded*/ -
issm/trunk-jpl/src/c/classes/Loads/Friction.cpp
r26206 r26457 20 20 this->dim=0; 21 21 this->law=0; 22 this->isMLHO=false;23 24 22 } 25 23 /*}}}*/ 26 Friction::Friction(Element* element_in,int dim_in ,bool isMLHO_in){/*{{{*/24 Friction::Friction(Element* element_in,int dim_in){/*{{{*/ 27 25 28 26 this->element=element_in; 29 27 this->dim=dim_in; 30 this->isMLHO=isMLHO_in;31 28 element_in->FindParam(&this->law,FrictionLawEnum); 32 29 } … … 859 856 IssmDouble vx,vy,vz,vmag; 860 857 861 if(this->isMLHO) _assert_(dim==2);862 863 858 switch(dim){ 864 859 case 1: … … 867 862 break; 868 863 case 2: 869 if(this->isMLHO){ 870 element->GetInputValue(&vx,gauss,VxBaseEnum); 871 element->GetInputValue(&vy,gauss,VyBaseEnum); 872 } 873 else{ 874 element->GetInputValue(&vx,gauss,VxEnum); 875 element->GetInputValue(&vy,gauss,VyEnum); 876 } 864 element->GetInputValue(&vx,gauss,VxBaseEnum); 865 element->GetInputValue(&vy,gauss,VyBaseEnum); 877 866 vmag=sqrt(vx*vx+vy*vy); 878 867 break; … … 883 872 vmag=sqrt(vx*vx+vy*vy+vz*vz); 884 873 break; 874 case 4: 875 /* This is for HO 3D case, since it requires the horizontal velocities */ 876 element->GetInputValue(&vx,gauss,VxEnum); 877 element->GetInputValue(&vy,gauss,VyEnum); 878 vmag=sqrt(vx*vx+vy*vy); 879 break; 885 880 default: 886 881 _error_("not supported"); -
issm/trunk-jpl/src/c/classes/Loads/Friction.h
r26206 r26457 17 17 int dim; 18 18 int law; 19 bool isMLHO=false;20 19 21 20 /*methods: */ 22 21 Friction(); 23 Friction(Element* element_in,int dim_in ,bool isMLHO=0);22 Friction(Element* element_in,int dim_in); 24 23 ~Friction(); 25 24 -
issm/trunk-jpl/src/c/modules/SurfaceAbsVelMisfitx/SurfaceAbsVelMisfitx.cpp
r26090 r26457 61 61 /*Retrieve all inputs we will be needing: */ 62 62 DatasetInput* weights_input=topelement->GetDatasetInput(InversionCostFunctionsCoefficientsEnum); _assert_(weights_input); 63 Input* vx_input = topelement->GetInput(VxEnum); _assert_(vx_input);64 Input* vxobs_input = topelement->GetInput(InversionVxObsEnum);_assert_(vxobs_input);63 Input* vx_input = NULL; 64 Input* vxobs_input = topelement->GetInput(InversionVxObsEnum); _assert_(vxobs_input); 65 65 Input* vy_input = NULL; 66 66 Input* vyobs_input = NULL; 67 if(numcomponents==2){ 68 vy_input =topelement->GetInput(VyEnum); _assert_(vy_input); 69 vyobs_input =topelement->GetInput(InversionVyObsEnum); _assert_(vyobs_input); 67 68 /*Read SurfaceEnum from 2D models:SSA, L1L2, MLHO*/ 69 if (domaintype == Domain2DhorizontalEnum) { 70 vx_input = topelement->GetInput(VxSurfaceEnum); _assert_(vx_input); 71 if(numcomponents==2){ 72 vy_input =topelement->GetInput(VySurfaceEnum); _assert_(vy_input); 73 vyobs_input =topelement->GetInput(InversionVyObsEnum); _assert_(vyobs_input); 74 } 75 } 76 else { 77 vx_input = topelement->GetInput(VxEnum); _assert_(vx_input); 78 if(numcomponents==2){ 79 vy_input =topelement->GetInput(VyEnum); _assert_(vy_input); 80 vyobs_input =topelement->GetInput(InversionVyObsEnum); _assert_(vyobs_input); 81 } 70 82 } 71 83 -
issm/trunk-jpl/src/c/modules/SurfaceAverageVelMisfitx/SurfaceAverageVelMisfitx.cpp
r26090 r26457 69 69 DatasetInput* weights_input=topelement->GetDatasetInput(InversionCostFunctionsCoefficientsEnum); _assert_(weights_input); 70 70 Input* S_input = topelement->GetInput(SurfaceAreaEnum); _assert_(S_input); 71 Input* vx_input = topelement->GetInput(VxEnum); _assert_(vx_input); 72 Input* vxobs_input = topelement->GetInput(InversionVxObsEnum); _assert_(vxobs_input); 73 Input* vy_input = NULL; 74 Input* vyobs_input = NULL; 75 if(numcomponents==2){ 76 vy_input =topelement->GetInput(VyEnum); _assert_(vy_input); 77 vyobs_input =topelement->GetInput(InversionVyObsEnum); _assert_(vyobs_input); 71 Input* vx_input = NULL; 72 Input* vxobs_input = topelement->GetInput(InversionVxObsEnum); _assert_(vxobs_input); 73 Input* vy_input = NULL; 74 Input* vyobs_input = NULL; 75 76 /*Read SurfaceEnum from 2D models:SSA, L1L2, MLHO*/ 77 if (domaintype == Domain2DhorizontalEnum) { 78 vx_input = topelement->GetInput(VxSurfaceEnum); _assert_(vx_input); 79 if(numcomponents==2){ 80 vy_input =topelement->GetInput(VySurfaceEnum); _assert_(vy_input); 81 vyobs_input =topelement->GetInput(InversionVyObsEnum); _assert_(vyobs_input); 82 } 78 83 } 84 else { 85 vx_input = topelement->GetInput(VxEnum); _assert_(vx_input); 86 if(numcomponents==2){ 87 vy_input =topelement->GetInput(VyEnum); _assert_(vy_input); 88 vyobs_input =topelement->GetInput(InversionVyObsEnum); _assert_(vyobs_input); 89 } 90 } 79 91 80 92 /* Start looping on the number of gaussian points: */ -
issm/trunk-jpl/src/c/modules/SurfaceLogVelMisfitx/SurfaceLogVelMisfitx.cpp
r26090 r26457 63 63 /*Retrieve all inputs we will be needing: */ 64 64 DatasetInput* weights_input=topelement->GetDatasetInput(InversionCostFunctionsCoefficientsEnum); _assert_(weights_input); 65 Input* vx_input =topelement->GetInput(VxEnum); _assert_(vx_input); 66 Input* vxobs_input =topelement->GetInput(InversionVxObsEnum); _assert_(vxobs_input); 67 Input* vy_input = NULL; 68 Input* vyobs_input = NULL; 69 if(numcomponents==2){ 70 vy_input =topelement->GetInput(VyEnum); _assert_(vy_input); 71 vyobs_input =topelement->GetInput(InversionVyObsEnum); _assert_(vyobs_input); 65 Input* vx_input = NULL; 66 Input* vxobs_input = topelement->GetInput(InversionVxObsEnum); _assert_(vxobs_input); 67 Input* vy_input = NULL; 68 Input* vyobs_input = NULL; 69 70 /*Read SurfaceEnum from 2D models:SSA, L1L2, MLHO*/ 71 if (domaintype == Domain2DhorizontalEnum) { 72 vx_input = topelement->GetInput(VxSurfaceEnum); _assert_(vx_input); 73 if(numcomponents==2){ 74 vy_input =topelement->GetInput(VySurfaceEnum); _assert_(vy_input); 75 vyobs_input =topelement->GetInput(InversionVyObsEnum); _assert_(vyobs_input); 76 } 72 77 } 78 else { 79 vx_input = topelement->GetInput(VxEnum); _assert_(vx_input); 80 if(numcomponents==2){ 81 vy_input =topelement->GetInput(VyEnum); _assert_(vy_input); 82 vyobs_input =topelement->GetInput(InversionVyObsEnum); _assert_(vyobs_input); 83 } 84 } 73 85 74 86 /* Start looping on the number of gaussian points: */ -
issm/trunk-jpl/src/c/modules/SurfaceLogVxVyMisfitx/SurfaceLogVxVyMisfitx.cpp
r26090 r26457 63 63 /*Retrieve all inputs we will be needing: */ 64 64 DatasetInput* weights_input=topelement->GetDatasetInput(InversionCostFunctionsCoefficientsEnum); _assert_(weights_input); 65 Input* vx_input =topelement->GetInput(VxEnum); _assert_(vx_input); 66 Input* vxobs_input =topelement->GetInput(InversionVxObsEnum); _assert_(vxobs_input); 67 Input* vy_input = NULL; 68 Input* vyobs_input = NULL; 69 if(numcomponents==2){ 70 vy_input =topelement->GetInput(VyEnum); _assert_(vy_input); 71 vyobs_input =topelement->GetInput(InversionVyObsEnum); _assert_(vyobs_input); 65 Input* vx_input = NULL; 66 Input* vxobs_input = topelement->GetInput(InversionVxObsEnum); _assert_(vxobs_input); 67 Input* vy_input = NULL; 68 Input* vyobs_input = NULL; 69 70 /*Read SurfaceEnum from 2D models:SSA, L1L2, MLHO*/ 71 if (domaintype == Domain2DhorizontalEnum) { 72 vx_input = topelement->GetInput(VxSurfaceEnum); _assert_(vx_input); 73 if(numcomponents==2){ 74 vy_input =topelement->GetInput(VySurfaceEnum); _assert_(vy_input); 75 vyobs_input =topelement->GetInput(InversionVyObsEnum); _assert_(vyobs_input); 76 } 72 77 } 78 else { 79 vx_input = topelement->GetInput(VxEnum); _assert_(vx_input); 80 if(numcomponents==2){ 81 vy_input =topelement->GetInput(VyEnum); _assert_(vy_input); 82 vyobs_input =topelement->GetInput(InversionVyObsEnum); _assert_(vyobs_input); 83 } 84 } 73 85 74 86 /* Start looping on the number of gaussian points: */ -
issm/trunk-jpl/src/c/modules/SurfaceRelVelMisfitx/SurfaceRelVelMisfitx.cpp
r26090 r26457 63 63 /*Retrieve all inputs we will be needing: */ 64 64 DatasetInput* weights_input=topelement->GetDatasetInput(InversionCostFunctionsCoefficientsEnum); _assert_(weights_input); 65 Input* vx_input =topelement->GetInput(VxEnum); _assert_(vx_input); 66 Input* vxobs_input =topelement->GetInput(InversionVxObsEnum); _assert_(vxobs_input); 67 Input* vy_input = NULL; 68 Input* vyobs_input = NULL; 69 if(numcomponents==2){ 70 vy_input =topelement->GetInput(VyEnum); _assert_(vy_input); 71 vyobs_input =topelement->GetInput(InversionVyObsEnum); _assert_(vyobs_input); 65 Input* vx_input = NULL; 66 Input* vxobs_input = topelement->GetInput(InversionVxObsEnum); _assert_(vxobs_input); 67 Input* vy_input = NULL; 68 Input* vyobs_input = NULL; 69 70 /*Read SurfaceEnum from 2D models:SSA, L1L2, MLHO*/ 71 if (domaintype == Domain2DhorizontalEnum) { 72 vx_input = topelement->GetInput(VxSurfaceEnum); _assert_(vx_input); 73 if(numcomponents==2){ 74 vy_input =topelement->GetInput(VySurfaceEnum); _assert_(vy_input); 75 vyobs_input =topelement->GetInput(InversionVyObsEnum); _assert_(vyobs_input); 76 } 72 77 } 78 else { 79 vx_input = topelement->GetInput(VxEnum); _assert_(vx_input); 80 if(numcomponents==2){ 81 vy_input =topelement->GetInput(VyEnum); _assert_(vy_input); 82 vyobs_input =topelement->GetInput(InversionVyObsEnum); _assert_(vyobs_input); 83 } 84 } 73 85 74 86 /* Start looping on the number of gaussian points: */ -
issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
r26445 r26457 536 536 AdjointpEnum, 537 537 AdjointxEnum, 538 AdjointxBaseEnum, 539 AdjointxShearEnum, 538 540 AdjointyEnum, 541 AdjointyBaseEnum, 542 AdjointyShearEnum, 539 543 AdjointzEnum, 540 544 AirEnum,
Note:
See TracChangeset
for help on using the changeset viewer.