Changeset 28155
- Timestamp:
- 03/15/24 09:29:34 (13 months ago)
- Location:
- issm/trunk-jpl
- Files:
-
- 12 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/analyses/FreeSurfaceBaseAnalysis.cpp
r28119 r28155 424 424 Gauss* gauss = NULL; 425 425 if(melt_style==SubelementMelt2Enum){ 426 basalelement->GetGroundedPart(&point1,&fraction1,&fraction2,&mainlyfloating );426 basalelement->GetGroundedPart(&point1,&fraction1,&fraction2,&mainlyfloating,MaskOceanLevelsetEnum,0); 427 427 gauss = basalelement->NewGauss(point1,fraction1,fraction2,3); 428 428 } 429 429 if(melt_style==IntrusionMeltEnum){ 430 basalelement->GetGroundedPart(&point1,&fraction1,&fraction2,&mainlyfloating );430 basalelement->GetGroundedPart(&point1,&fraction1,&fraction2,&mainlyfloating,DistanceToGroundinglineEnum,intrusiondist); 431 431 gauss = basalelement->NewGauss(point1,fraction1,fraction2,3); 432 432 } -
issm/trunk-jpl/src/c/analyses/MasstransportAnalysis.cpp
r28119 r28155 670 670 phi=element->GetGroundedPortion(xyz_list); 671 671 if(melt_style==SubelementMelt2Enum){ 672 element->GetGroundedPart(&point1,&fraction1,&fraction2,&mainlyfloating );672 element->GetGroundedPart(&point1,&fraction1,&fraction2,&mainlyfloating,MaskOceanLevelsetEnum,0); 673 673 gauss = element->NewGauss(point1,fraction1,fraction2,3); 674 674 } 675 675 else if(melt_style==IntrusionMeltEnum){ 676 element->GetGroundedPart(&point1,&fraction1,&fraction2,&mainlyfloating);677 gauss = element->NewGauss(point1,fraction1,fraction2,3);676 element->GetGroundedPart(&point1,&fraction1,&fraction2,&mainlyfloating,DistanceToGroundinglineEnum,intrusiondist); 677 gauss = element->NewGauss(point1,fraction1,fraction2,3); 678 678 } 679 679 else{ … … 804 804 phi=element->GetGroundedPortion(xyz_list); 805 805 if(melt_style==SubelementMelt2Enum){ 806 element->GetGroundedPart(&point1,&fraction1,&fraction2,&mainlyfloating );806 element->GetGroundedPart(&point1,&fraction1,&fraction2,&mainlyfloating,MaskOceanLevelsetEnum,0); 807 807 gauss = element->NewGauss(point1,fraction1,fraction2,3); 808 808 } 809 809 else if(melt_style==IntrusionMeltEnum){ 810 element->GetGroundedPart(&point1,&fraction1,&fraction2,&mainlyfloating );810 element->GetGroundedPart(&point1,&fraction1,&fraction2,&mainlyfloating,DistanceToGroundinglineEnum,intrusiondist); 811 811 gauss = element->NewGauss(point1,fraction1,fraction2,3); 812 812 } … … 1145 1145 phi=element->GetGroundedPortion(xyz_list); 1146 1146 if(melt_style==SubelementMelt2Enum){ 1147 element->GetGroundedPart(&point1,&fraction1,&fraction2,&mainlyfloating );1147 element->GetGroundedPart(&point1,&fraction1,&fraction2,&mainlyfloating,MaskOceanLevelsetEnum,0); 1148 1148 gauss = element->NewGauss(point1,fraction1,fraction2,3); 1149 1149 } -
issm/trunk-jpl/src/c/analyses/StressbalanceAnalysis.cpp
r27470 r28155 1366 1366 if(friction_style==SubelementFriction2Enum){ 1367 1367 gllevelset_input=element->GetInput(MaskOceanLevelsetEnum); _assert_(gllevelset_input); 1368 element->GetGroundedPart(&point1,&fraction1,&fraction2,&mainlyfloating );1368 element->GetGroundedPart(&point1,&fraction1,&fraction2,&mainlyfloating, MaskOceanLevelsetEnum,0); 1369 1369 gauss = element->NewGauss(point1,fraction1,fraction2,mainlyfloating,2); 1370 1370 } … … 1646 1646 int ig=-1;// needed for driving stress parameterization 1647 1647 if(partly_floating){ 1648 element->GetGroundedPart(&point1,&fraction1,&fraction2,&mainlyfloating );1648 element->GetGroundedPart(&point1,&fraction1,&fraction2,&mainlyfloating, MaskOceanLevelsetEnum,0); 1649 1649 gauss=element->NewGauss(point1,fraction1,fraction2,3); //considering the entire element 1650 1650 gauss_subelem=element->NewGauss(fraction1,fraction2,3);//gauss on each subelement … … 2682 2682 if(friction_style==SubelementFriction2Enum){ 2683 2683 gllevelset_input=element->GetInput(MaskOceanLevelsetEnum); _assert_(gllevelset_input); 2684 element->GetGroundedPart(&point1,&fraction1,&fraction2,&mainlyfloating );2684 element->GetGroundedPart(&point1,&fraction1,&fraction2,&mainlyfloating,MaskOceanLevelsetEnum,0); 2685 2685 gauss = element->NewGauss(point1,fraction1,fraction2,mainlyfloating,2); 2686 2686 } … … 3310 3310 if(friction_style==SubelementFriction2Enum){ 3311 3311 gllevelset_input=element->GetInput(MaskOceanLevelsetEnum); _assert_(gllevelset_input); 3312 element->GetGroundedPart(&point1,&fraction1,&fraction2,&mainlyfloating );3312 element->GetGroundedPart(&point1,&fraction1,&fraction2,&mainlyfloating, MaskOceanLevelsetEnum,0); 3313 3313 gauss = element->NewGauss(point1,fraction1,fraction2,mainlyfloating,2); 3314 3314 } … … 5029 5029 if(domaintype==Domain2DverticalEnum) _error_("Subelement Friction 2 not implemented yet for Flowline"); 5030 5030 gllevelset_input=element->GetInput(MaskOceanLevelsetEnum); _assert_(gllevelset_input); 5031 element->GetGroundedPart(&point1,&fraction1,&fraction2,&mainlyfloating );5031 element->GetGroundedPart(&point1,&fraction1,&fraction2,&mainlyfloating, MaskOceanLevelsetEnum,0); 5032 5032 //gauss = element->NewGauss(point1,fraction1,fraction2,mainlyfloating,2); 5033 5033 gauss=element->NewGaussBase(3); … … 5267 5267 if(domaintype==Domain2DverticalEnum) _error_("Subelement Friction 2 not implemented yet for Flowline"); 5268 5268 gllevelset_input=element->GetInput(MaskOceanLevelsetEnum); _assert_(gllevelset_input); 5269 element->GetGroundedPart(&point1,&fraction1,&fraction2,&mainlyfloating );5269 element->GetGroundedPart(&point1,&fraction1,&fraction2,&mainlyfloating, MaskOceanLevelsetEnum,0); 5270 5270 gauss=element->NewGaussBase(3); 5271 5271 } -
issm/trunk-jpl/src/c/classes/Elements/Element.h
r27960 r28155 273 273 virtual int GetElementType(void)=0; 274 274 virtual IssmDouble GetHorizontalSurfaceArea(void){_error_("not implemented");}; 275 virtual void GetGroundedPart(int* point1,IssmDouble* fraction1,IssmDouble* fraction2, bool* mainlyfloating )=0;275 virtual void GetGroundedPart(int* point1,IssmDouble* fraction1,IssmDouble* fraction2, bool* mainlyfloating,int distance_enum, IssmDouble intrusion_distance)=0; 276 276 virtual IssmDouble GetGroundedPortion(IssmDouble* xyz_list)=0; 277 277 virtual void GetFractionGeometry(IssmDouble* weights, IssmDouble* pphi, int* ppoint1,IssmDouble* pfraction1,IssmDouble* pfraction2, bool* ptrapezeisnegative, IssmDouble* gl)=0; -
issm/trunk-jpl/src/c/classes/Elements/Penta.cpp
r28039 r28155 1434 1434 } 1435 1435 /*}}}*/ 1436 void Penta::GetGroundedPart(int* point1,IssmDouble* fraction1,IssmDouble* fraction2, bool* mainlyfloating ){/*{{{*/1436 void Penta::GetGroundedPart(int* point1,IssmDouble* fraction1,IssmDouble* fraction2, bool* mainlyfloating, int distance_enum, IssmDouble intrusion_distance){/*{{{*/ 1437 1437 /*Computeportion of the element that is grounded*/ 1438 1438 1439 1439 bool floating=true; 1440 int point ;1440 int point, i; 1441 1441 const IssmPDouble epsilon= 1.e-15; 1442 1442 IssmDouble gl[NUMVERTICES]; … … 1444 1444 1445 1445 /*Recover parameters and values*/ 1446 Element::GetInputListOnVertices(&gl[0],MaskOceanLevelsetEnum); 1446 Element::GetInputListOnVertices(&gl[0],distance_enum); 1447 1448 /*Determine where to apply sub-element melt using intrusion distance*/ 1449 for (i; i<NUMVERTICES; i++){ 1450 gl[i] -= intrusion_distance; 1451 } 1447 1452 1448 1453 /*Be sure that values are not zero*/ … … 4249 4254 ::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES); 4250 4255 4251 this->GetGroundedPart(&point1,&fraction1,&fraction2,&mainlyfloating );4256 this->GetGroundedPart(&point1,&fraction1,&fraction2,&mainlyfloating,MaskOceanLevelsetEnum,0); 4252 4257 /* Start looping on the number of gaussian points: */ 4253 4258 gauss = this->NewGauss(point1,fraction1,fraction2,1-mainlyfloating,3); … … 4292 4297 ::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES); 4293 4298 4294 this->GetGroundedPart(&point1,&fraction1,&fraction2,&mainlyfloating );4299 this->GetGroundedPart(&point1,&fraction1,&fraction2,&mainlyfloating,MaskOceanLevelsetEnum,0); 4295 4300 /* Start looping on the number of gaussian points: */ 4296 4301 gauss = this->NewGauss(point1,fraction1,fraction2,mainlyfloating,3); -
issm/trunk-jpl/src/c/classes/Elements/Penta.h
r28039 r28155 86 86 Penta* GetBasalPenta(void); 87 87 int GetElementType(void); 88 void GetGroundedPart(int* point1,IssmDouble* fraction1, IssmDouble* fraction2,bool* mainlyfloating );88 void GetGroundedPart(int* point1,IssmDouble* fraction1, IssmDouble* fraction2,bool* mainlyfloating, int distance_enum, IssmDouble intrusion_distance); 89 89 IssmDouble GetGroundedPortion(IssmDouble* xyz_list); 90 90 void GetFractionGeometry(IssmDouble* weights, IssmDouble* pphi, int* ppoint1,IssmDouble* pfraction1,IssmDouble* pfraction2, bool* ptrapezeisnegative, IssmDouble* gl){_error_("not implemented yet");}; -
issm/trunk-jpl/src/c/classes/Elements/Seg.h
r27852 r28155 62 62 Element* GetBasalElement(void){_error_("not implemented yet");}; 63 63 int GetElementType(void){_error_("not implemented yet");}; 64 void GetGroundedPart(int* point1,IssmDouble* fraction1, IssmDouble* fraction2,bool* mainlyfloating ){_error_("not implemented yet");};64 void GetGroundedPart(int* point1,IssmDouble* fraction1, IssmDouble* fraction2,bool* mainlyfloating, int distance_enum, IssmDouble intrusion_distance){_error_("not implemented yet");}; 65 65 IssmDouble GetGroundedPortion(IssmDouble* xyz_list); 66 66 void GetFractionGeometry(IssmDouble* weights, IssmDouble* pphi, int* ppoint1,IssmDouble* pfraction1,IssmDouble* pfraction2, bool* ptrapezeisnegative, IssmDouble* gl){_error_("not implemented yet");}; -
issm/trunk-jpl/src/c/classes/Elements/Tetra.h
r27852 r28155 67 67 Element* GetBasalElement(void){_error_("not implemented yet");}; 68 68 int GetElementType(void); 69 void GetGroundedPart(int* point1,IssmDouble* fraction1, IssmDouble* fraction2,bool* mainlyfloating ){_error_("not implemented yet");};69 void GetGroundedPart(int* point1,IssmDouble* fraction1, IssmDouble* fraction2,bool* mainlyfloating, int distance_enum, IssmDouble intrusion_distance){_error_("not implemented yet");}; 70 70 IssmDouble GetGroundedPortion(IssmDouble* xyz_list){_error_("not implemented yet");}; 71 71 void GetFractionGeometry(IssmDouble* weights, IssmDouble* pphi, int* ppoint1,IssmDouble* pfraction1,IssmDouble* pfraction2, bool* ptrapezeisnegative, IssmDouble* gl){_error_("not implemented yet");}; -
issm/trunk-jpl/src/c/classes/Elements/Tria.cpp
r28096 r28155 2053 2053 } 2054 2054 /*}}}*/ 2055 void Tria::GetGroundedPart(int* point1,IssmDouble* fraction1,IssmDouble* fraction2, bool* pmainlyfloating ){/*{{{*/2056 /*Compute portion of the element that is grounded*/2055 void Tria::GetGroundedPart(int* point1,IssmDouble* fraction1,IssmDouble* fraction2, bool* pmainlyfloating, int distance_enum, IssmDouble intrusion_distance){/*{{{*/ 2056 /*Compute portion of the element that is grounded*/ 2057 2057 2058 2058 bool floating=true; 2059 int point ;2059 int point, i; 2060 2060 const IssmPDouble epsilon= 1.e-15; 2061 2061 IssmDouble gl[NUMVERTICES]; … … 2063 2063 2064 2064 /*Recover parameters and values*/ 2065 Element::GetInputListOnVertices(&gl[0],MaskOceanLevelsetEnum); 2065 Element::GetInputListOnVertices(&gl[0],distance_enum); 2066 2067 /*Determine where to apply sub-element melt using intrusion distance*/ 2068 for (i; i<NUMVERTICES; i++){ 2069 gl[i] -= intrusion_distance; 2070 } 2066 2071 2067 2072 /*Be sure that values are not zero*/ … … 5761 5766 ::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES); 5762 5767 5763 this->GetGroundedPart(&point1,&fraction1,&fraction2,&mainlyfloating );5768 this->GetGroundedPart(&point1,&fraction1,&fraction2,&mainlyfloating,MaskOceanLevelsetEnum,0); 5764 5769 /* Start looping on the number of gaussian points: */ 5765 5770 gauss = this->NewGauss(point1,fraction1,fraction2,1-mainlyfloating,3); … … 5804 5809 ::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES); 5805 5810 5806 this->GetGroundedPart(&point1,&fraction1,&fraction2,&mainlyfloating );5811 this->GetGroundedPart(&point1,&fraction1,&fraction2,&mainlyfloating,MaskOceanLevelsetEnum,0); 5807 5812 /* Start looping on the number of gaussian points: */ 5808 5813 gauss = this->NewGauss(point1,fraction1,fraction2,mainlyfloating,2); -
issm/trunk-jpl/src/c/classes/Elements/Tria.h
r27852 r28155 89 89 Element* GetBasalElement(void){_error_("not implemented yet");}; 90 90 void GetLevelsetPositivePart(int* point1,IssmDouble* fraction1,IssmDouble* fraction2, bool* mainlynegative,IssmDouble* levelsetvalues); 91 void GetGroundedPart(int* point1,IssmDouble* fraction1, IssmDouble* fraction2,bool* mainlyfloating );91 void GetGroundedPart(int* point1,IssmDouble* fraction1, IssmDouble* fraction2,bool* mainlyfloating, int distance_enum, IssmDouble intrusion_distance); 92 92 IssmDouble GetGroundedPortion(IssmDouble* xyz_list); 93 93 void GetFractionGeometry(IssmDouble* weights, IssmDouble* pphi, int* ppoint1,IssmDouble* pfraction1,IssmDouble* pfraction2, bool* ptrapezeisnegative, IssmDouble* gl);
Note:
See TracChangeset
for help on using the changeset viewer.