Changeset 17194
- Timestamp:
- 01/29/14 10:01:34 (11 years ago)
- Location:
- issm/trunk-jpl/src/c/classes/Elements
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/classes/Elements/Element.h
r17172 r17194 221 221 virtual bool IsZeroLevelset(int levelset_enum)=0; 222 222 virtual void ZeroLevelsetCoordinates(IssmDouble** pxyz_zero,IssmDouble* xyz_list,int levelsetenum)=0; 223 virtual void GetIcefrontCoordinates(IssmDouble** pxyz_front,IssmDouble* xyz_list,int levelsetenum)=0; 224 virtual void GetNormalFromLSF(IssmDouble *pnormal)=0; 223 225 224 226 #ifdef _HAVE_RESPONSES_ -
issm/trunk-jpl/src/c/classes/Elements/Penta.cpp
r17182 r17194 3166 3166 GetInputListOnVertices(&ls[0],levelset_enum); 3167 3167 3168 /*If the level set is awlays <=0, there is no ice front here*/3168 /*If the level set has always same sign, there is no ice front here*/ 3169 3169 iszerols = false; 3170 3170 if(IsIceInElement()){ -
issm/trunk-jpl/src/c/classes/Elements/Penta.h
r17182 r17194 115 115 bool IsZeroLevelset(int levelset_enum); 116 116 void ZeroLevelsetCoordinates(IssmDouble** pxyz_zero,IssmDouble* xyz_list,int levelsetenum); 117 void GetIcefrontCoordinates(IssmDouble** pxyz_front,IssmDouble* xyz_list,int levelsetenum){_error_("not implemented yet");}; 118 void GetNormalFromLSF(IssmDouble *pnormal){_error_("not implemented yet");}; 117 119 void PositiveDegreeDay(IssmDouble* pdds,IssmDouble* pds,IssmDouble signorm); 118 120 void ReduceMatrices(ElementMatrix* Ke,ElementVector* pe); -
issm/trunk-jpl/src/c/classes/Elements/Seg.h
r17177 r17194 160 160 bool IsZeroLevelset(int levelset_enum){_error_("not implemented");}; 161 161 void ZeroLevelsetCoordinates(IssmDouble** pxyz_zero,IssmDouble* xyz_list,int levelsetenum){_error_("not implemented");}; 162 void GetIcefrontCoordinates(IssmDouble** pxyz_front,IssmDouble* xyz_list,int levelsetenum){_error_("not implemented yet");}; 163 void GetNormalFromLSF(IssmDouble *pnormal){_error_("not implemented yet");}; 162 164 163 165 #ifdef _HAVE_HYDROLOGY_ -
issm/trunk-jpl/src/c/classes/Elements/Tria.cpp
r17192 r17194 891 891 } 892 892 /*}}}*/ 893 void Tria::GetIcefrontCoordinates(IssmDouble** pxyz_front,IssmDouble* xyz_list,int levelsetenum){/*{{{*/ 894 895 /* Intermediaries */ 896 int i, dir,nrfrontnodes; 897 IssmDouble levelset[NUMVERTICES]; 898 899 /*Recover parameters and values*/ 900 GetInputListOnVertices(&levelset[0],levelsetenum); 901 902 int* indicesfront = xNew<int>(NUMVERTICES); 903 /* Get nodes where there is no ice */ 904 nrfrontnodes=0; 905 for(i=0;i<NUMVERTICES;i++){ 906 if(levelset[i]>=0.){ 907 indicesfront[nrfrontnodes]=i; 908 nrfrontnodes++; 909 } 910 } 911 912 IssmDouble* xyz_front = xNew<IssmDouble>(3*nrfrontnodes); 913 /* Return nodes */ 914 for(i=0;i<nrfrontnodes;i++){ 915 for(dir=0;dir<3;dir++){ 916 xyz_front[3*i+dir]=xyz_list[indicesfront[i]+dir]; 917 } 918 } 919 920 *pxyz_front=xyz_front; 921 922 xDelete<int>(indicesfront); 923 }/*}}}*/ 924 void Tria::GetNormalFromLSF(IssmDouble *pnormal){/*{{{*/ 925 926 /* Intermediaries */ 927 const int dim=2; 928 int i,counter; 929 IssmDouble* xyz_list = NULL; 930 IssmDouble dlevelset[dim], norm_dlevelset; 931 IssmDouble normal[dim]={0.}; 932 933 /*Retrieve all inputs and parameters*/ 934 Input* levelset_input=this->GetInput(MaskIceLevelsetEnum); _assert_(levelset_input); 935 this->GetVerticesCoordinates(&xyz_list); 936 937 counter=0; 938 Gauss* gauss = this->NewGauss(2); 939 for(int ig=gauss->begin();ig<gauss->end();ig++){ 940 /* Get normal on node */ 941 levelset_input->GetInputDerivativeValue(&dlevelset[0],xyz_list,gauss); 942 norm_dlevelset=0.; 943 for(i=0;i<dim;i++) norm_dlevelset+=dlevelset[i]*dlevelset[i]; 944 norm_dlevelset=sqrt(norm_dlevelset)+1.e-14; 945 for(i=0;i<dim;i++) normal[i]+=dlevelset[i]/norm_dlevelset; 946 counter++; 947 } 948 _assert_(counter>0); 949 for(i=0;i<dim;i++) normal[i]/counter; 950 951 pnormal=&normal[0]; 952 953 delete gauss; 954 xDelete<IssmDouble>(xyz_list); 955 }/*}}}*/ 893 956 /*FUNCTION Tria::GetNodeIndex {{{*/ 894 957 int Tria::GetNodeIndex(Node* node){ -
issm/trunk-jpl/src/c/classes/Elements/Tria.h
r17172 r17194 131 131 void VerticalSegmentIndices(int** pindices,int* pnumseg){_error_("not implemented yet");}; 132 132 void ZeroLevelsetCoordinates(IssmDouble** pxyz_zero,IssmDouble* xyz_list,int levelsetenum); 133 void GetIcefrontCoordinates(IssmDouble** pxyz_front,IssmDouble* xyz_list,int levelsetenum); 134 void GetNormalFromLSF(IssmDouble *pnormal); 133 135 bool IsZeroLevelset(int levelset_enum); 134 136
Note:
See TracChangeset
for help on using the changeset viewer.