source:
issm/oecreview/Archive/16554-17801/ISSM-17193-17194.diff
Last change on this file was 17802, checked in by , 11 years ago | |
---|---|
File size: 6.1 KB |
-
../trunk-jpl/src/c/classes/Elements/Element.h
220 220 virtual int PressureInterpolation()=0; 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_ 225 227 virtual void AverageOntoPartition(Vector<IssmDouble>* partition_contributions,Vector<IssmDouble>* partition_areas,IssmDouble* vertex_response,IssmDouble* qmu_part)=0; -
../trunk-jpl/src/c/classes/Elements/Tria.cpp
890 890 *pxyz_zero= xyz_zero; 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){ 895 958 -
../trunk-jpl/src/c/classes/Elements/Tria.h
130 130 int VertexConnectivity(int vertexindex); 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 135 137 #ifdef _HAVE_RESPONSES_ -
../trunk-jpl/src/c/classes/Elements/Penta.cpp
3165 3165 /*Retrieve all inputs and parameters*/ 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()){ 3171 3171 if(ls[0]*ls[1]<0. || ls[0]*ls[2]<0. || (ls[0]*ls[1]+ls[0]*ls[2]+ls[1]*ls[2]==0.)){ -
../trunk-jpl/src/c/classes/Elements/Penta.h
114 114 int PressureInterpolation(); 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); 119 121 void ResetCoordinateSystem(void); -
../trunk-jpl/src/c/classes/Elements/Seg.h
159 159 void ViscousHeating(IssmDouble* pphi,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input){_error_("not implemented yet");}; 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_ 164 166 void GetHydrologyDCInefficientHmax(IssmDouble* ph_max, Node* innode){_error_("not implemented yet");};
Note:
See TracBrowser
for help on using the repository browser.