Changeset 15621
- Timestamp:
- 07/25/13 14:54:51 (12 years ago)
- Location:
- issm/trunk-jpl/src
- Files:
-
- 18 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/classes/Elements/Penta.cpp
r15618 r15621 3095 3095 /*Intermediaries*/ 3096 3096 int i; 3097 int penta_node_ids[6];3098 3097 int penta_vertex_ids[6]; 3099 3098 IssmDouble nodeinputs[6]; 3100 3099 IssmDouble yts; 3101 int stabilization;3102 3100 bool dakota_analysis; 3103 3101 bool isFS; 3104 3102 IssmDouble beta,heatcapacity,referencetemperature,meltingpoint,latentheat; 3103 int numnodes; 3104 int* penta_node_ids = NULL; 3105 3105 3106 3106 /*Fetch parameters: */ 3107 3107 iomodel->Constant(&yts,ConstantsYtsEnum); 3108 iomodel->Constant(&stabilization,PrognosticStabilizationEnum);3109 3108 iomodel->Constant(&dakota_analysis,QmuIsdakotaEnum); 3110 3109 iomodel->Constant(&isFS,FlowequationIsFSEnum); … … 3120 3119 /*}}}*/ 3121 3120 3121 /*Recover element type*/ 3122 3122 this->SetElementType(finiteelement_type,analysis_counter); 3123 3123 … … 3126 3126 3127 3127 /*Recover nodes ids needed to initialize the node hook.*/ 3128 for(i=0;i<6;i++){ 3129 //go recover node ids, needed to initialize the node hook. 3130 //WARNING: We assume P1 elements here!!!!! 3131 penta_node_ids[i]=iomodel->nodecounter+iomodel->elements[6*index+i]; //ids for vertices are in the elements array from Matlab 3128 switch(finiteelement_type){ 3129 case P1Enum: 3130 numnodes = 6; 3131 penta_node_ids = xNew<int>(numnodes); 3132 penta_node_ids[0]=iomodel->nodecounter+iomodel->elements[6*index+0]; 3133 penta_node_ids[1]=iomodel->nodecounter+iomodel->elements[6*index+1]; 3134 penta_node_ids[2]=iomodel->nodecounter+iomodel->elements[6*index+2]; 3135 penta_node_ids[3]=iomodel->nodecounter+iomodel->elements[6*index+3]; 3136 penta_node_ids[4]=iomodel->nodecounter+iomodel->elements[6*index+4]; 3137 penta_node_ids[5]=iomodel->nodecounter+iomodel->elements[6*index+5]; 3138 break; 3139 case P2Enum: 3140 numnodes = 15; 3141 penta_node_ids = xNew<int>(numnodes); 3142 penta_node_ids[ 0]=iomodel->nodecounter+iomodel->elements[6*index+0]; 3143 penta_node_ids[ 1]=iomodel->nodecounter+iomodel->elements[6*index+1]; 3144 penta_node_ids[ 2]=iomodel->nodecounter+iomodel->elements[6*index+2]; 3145 penta_node_ids[ 3]=iomodel->nodecounter+iomodel->elements[6*index+3]; 3146 penta_node_ids[ 4]=iomodel->nodecounter+iomodel->elements[6*index+4]; 3147 penta_node_ids[ 5]=iomodel->nodecounter+iomodel->elements[6*index+5]; 3148 penta_node_ids[ 6]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+0]+1; 3149 penta_node_ids[ 7]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+1]+1; 3150 penta_node_ids[ 8]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+2]+1; 3151 penta_node_ids[ 9]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+3]+1; 3152 penta_node_ids[10]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+4]+1; 3153 penta_node_ids[11]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+5]+1; 3154 penta_node_ids[12]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+6]+1; 3155 penta_node_ids[13]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+7]+1; 3156 penta_node_ids[14]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+8]+1; 3157 break; 3158 default: 3159 _error_("Finite element "<<EnumToStringx(finiteelement_type)<<" not supported yet"); 3132 3160 } 3133 3161 3134 3162 /*hooks: */ 3135 this->SetHookNodes(penta_node_ids,6,analysis_counter); this->nodes=NULL; //set hook to nodes, for this analysis type 3163 this->SetHookNodes(penta_node_ids,numnodes,analysis_counter); this->nodes=NULL; //set hook to nodes, for this analysis type 3164 xDelete<int>(penta_node_ids); 3136 3165 3137 3166 /*Fill with IoModel*/ … … 6843 6872 ElementMatrix* Penta::CreateKMatrixDiagnosticHOViscous(void){ 6844 6873 6845 /*Constants*/6846 const int numdof=NDOF2*NUMVERTICES;6847 6848 6874 /*Intermediaries */ 6849 int i,j; 6850 int approximation; 6851 IssmDouble xyz_list[NUMVERTICES][3]; 6852 IssmDouble Jdet; 6853 IssmDouble viscosity,oldviscosity,newviscosity,viscosity_overshoot; //viscosity 6854 IssmDouble epsilon[5],oldepsilon[5]; /* epsilon=[exx,eyy,exy,exz,eyz];*/ 6855 IssmDouble D_scalar; 6856 IssmDouble D[5][5]={0.0}; // material matrix, simple scalar matrix. 6857 IssmDouble B[5][numdof]; 6858 IssmDouble Bprime[5][numdof]; 6859 Tria* tria=NULL; 6875 int i,j; 6876 int approximation; 6877 IssmDouble xyz_list[NUMVERTICES][3]; 6878 IssmDouble Jdet; 6879 IssmDouble viscosity,oldviscosity,newviscosity,viscosity_overshoot; //viscosity 6880 IssmDouble epsilon[5],oldepsilon[5]; /* epsilon=[exx,eyy,exy,exz,eyz];*/ 6881 IssmDouble D_scalar; 6860 6882 GaussPenta *gauss=NULL; 6861 6883 6862 /*Initialize Element matrix*/ 6863 ElementMatrix* Ke=new ElementMatrix(nodes,NUMVERTICES,this->parameters,HOApproximationEnum); 6884 /*Fetch number of nodes and dof for this finite element*/ 6885 int numnodes = this->NumberofNodes(); 6886 int numdof = numnodes*NDOF2; 6887 6888 /*Initialize Element matrix and vectors*/ 6889 ElementMatrix* Ke = new ElementMatrix(nodes,numnodes,this->parameters,HOApproximationEnum); 6890 IssmDouble* B = xNew<IssmDouble>(5*numdof); 6891 IssmDouble* Bprime = xNew<IssmDouble>(5*numdof); 6892 IssmDouble* D = xNewZeroInit<IssmDouble>(5*5); 6864 6893 6865 6894 /*Retrieve all inputs and parameters*/ … … 6879 6908 6880 6909 GetJacobianDeterminant(&Jdet, &xyz_list[0][0],gauss); 6881 GetBHO(&B[0] [0], &xyz_list[0][0], gauss);6882 GetBprimeHO(&Bprime[0] [0], &xyz_list[0][0], gauss);6910 GetBHO(&B[0], &xyz_list[0][0], gauss); 6911 GetBprimeHO(&Bprime[0], &xyz_list[0][0], gauss); 6883 6912 6884 6913 this->GetStrainRate3dHO(&epsilon[0],&xyz_list[0][0],gauss,vx_input,vy_input); … … 6889 6918 6890 6919 D_scalar=2*newviscosity*gauss->weight*Jdet; 6891 for (i=0;i<5;i++) D[i ][i]=D_scalar;6892 6893 TripleMultiply( &B[0][0],5,numdof,1,6894 &D[0][0],5,5,0,6895 &Bprime[0][0],5,numdof,0,6920 for (i=0;i<5;i++) D[i*5+i]=D_scalar; 6921 6922 TripleMultiply(B,5,numdof,1, 6923 D,5,5,0, 6924 Bprime,5,numdof,0, 6896 6925 &Ke->values[0],1); 6897 6926 } 6898 6927 6899 6928 /*Transform Coordinate System*/ 6900 TransformStiffnessMatrixCoord(Ke,nodes, NUMVERTICES,XYEnum);6929 TransformStiffnessMatrixCoord(Ke,nodes,numnodes,XYEnum); 6901 6930 6902 6931 /*Clean up and return*/ 6903 6932 delete gauss; 6933 xDelete<IssmDouble>(D); 6934 xDelete<IssmDouble>(Bprime); 6935 xDelete<IssmDouble>(B); 6904 6936 return Ke; 6905 6937 } … … 6908 6940 ElementMatrix* Penta::CreateKMatrixDiagnosticHOFriction(void){ 6909 6941 6910 /*Constants*/6911 const int numdof = NDOF2*NUMVERTICES;6912 6913 6942 /*Intermediaries */ 6914 int i,j; 6915 int analysis_type,migration_style; 6916 IssmDouble xyz_list[NUMVERTICES][3]; 6917 IssmDouble xyz_list_tria[NUMVERTICES2D][3]={0.0}; 6918 IssmDouble alpha2,Jdet; 6919 IssmDouble phi=1.0; 6920 IssmDouble L[2][numdof]; 6921 IssmDouble DL[2][2]={{ 0,0 },{0,0}}; //for basal drag 6922 IssmDouble DL_scalar; 6923 Friction *friction = NULL; 6924 GaussPenta *gauss=NULL; 6943 int i,j; 6944 int analysis_type,migration_style; 6945 IssmDouble xyz_list[NUMVERTICES][3]; 6946 IssmDouble xyz_list_tria[NUMVERTICES2D][3]={0.}; 6947 IssmDouble alpha2,Jdet; 6948 IssmDouble phi=1.0; 6949 IssmDouble DL_scalar; 6950 Friction *friction = NULL; 6951 GaussPenta *gauss = NULL; 6925 6952 6926 6953 /*Initialize Element matrix and return if necessary*/ 6927 6954 if(IsFloating() || !IsOnBed()) return NULL; 6928 6955 6929 ElementMatrix* Ke=new ElementMatrix(nodes,NUMVERTICES,this->parameters,HOApproximationEnum); 6956 /*Fetch number of nodes and dof for this finite element*/ 6957 int numnodes = this->NumberofNodes(); 6958 int numdof = numnodes*NDOF2; 6959 6960 /*Initialize Element matrix and vectors*/ 6961 ElementMatrix* Ke = new ElementMatrix(nodes,numnodes,this->parameters,HOApproximationEnum); 6962 IssmDouble* B = xNew<IssmDouble>(2*numdof); 6963 IssmDouble* D = xNewZeroInit<IssmDouble>(2*2); 6930 6964 6931 6965 /*Retrieve all inputs and parameters*/ … … 6951 6985 gauss->GaussPoint(ig); 6952 6986 6953 GetTriaJacobianDeterminant(&Jdet, 6954 GetBHOFriction(& L[0][0],gauss);6987 GetTriaJacobianDeterminant(&Jdet,&xyz_list_tria[0][0],gauss); 6988 GetBHOFriction(&B[0],gauss); 6955 6989 6956 6990 friction->GetAlpha2(&alpha2, gauss,VxEnum,VyEnum,VzEnum); … … 6958 6992 6959 6993 DL_scalar=alpha2*gauss->weight*Jdet; 6960 for (i=0;i<2;i++) D L[i][i]=DL_scalar;6961 6962 TripleMultiply( &L[0][0],2,numdof,1,6963 &DL[0][0],2,2,0,6964 &L[0][0],2,numdof,0,6994 for (i=0;i<2;i++) D[i*2+i]=DL_scalar; 6995 6996 TripleMultiply(B,2,numdof,1, 6997 D,2,2,0, 6998 B,2,numdof,0, 6965 6999 &Ke->values[0],1); 6966 7000 } 6967 7001 6968 7002 /*Transform Coordinate System*/ 6969 TransformStiffnessMatrixCoord(Ke,nodes, NUMVERTICES,XYEnum);7003 TransformStiffnessMatrixCoord(Ke,nodes,numnodes,XYEnum); 6970 7004 6971 7005 /*Clean up and return*/ 6972 7006 delete gauss; 7007 xDelete<IssmDouble>(D); 7008 xDelete<IssmDouble>(B); 6973 7009 delete friction; 6974 7010 return Ke; -
issm/trunk-jpl/src/c/classes/Elements/PentaRef.cpp
r15567 r15621 45 45 /*FUNCTION PentaRef::SetElementType{{{*/ 46 46 void PentaRef::SetElementType(int type,int type_counter){ 47 48 _assert_(type==P1Enum || type==P1DGEnum);49 47 50 48 /*initialize element type*/ … … 143 141 * where h is the interpolation function for node i. 144 142 * 145 * We assume B has been allocated already, of size: 5x(NDOF2*NUMNODESP1) 146 */ 147 148 IssmDouble dbasis[3][NUMNODESP1]; 149 150 /*Get dbasis in actual coordinate system: */ 151 GetNodalFunctionsP1Derivatives(&dbasis[0][0],xyz_list, gauss); 143 * We assume B has been allocated already, of size: 5x(NDOF2*numnodes) 144 */ 145 146 147 /*Fetch number of nodes for this finite element*/ 148 int numnodes = this->NumberofNodes(); 149 150 /*Get nodal functions derivatives*/ 151 IssmDouble* dbasis=xNew<IssmDouble>(3*numnodes); 152 GetNodalFunctionsDerivatives(dbasis,xyz_list,gauss); 152 153 153 154 /*Build B: */ 154 for (int i=0;i<NUMNODESP1;i++){ 155 B[NDOF2*NUMNODESP1*0+NDOF2*i+0] = dbasis[0][i]; 156 B[NDOF2*NUMNODESP1*0+NDOF2*i+1] = 0.; 157 158 B[NDOF2*NUMNODESP1*1+NDOF2*i+0] = 0.; 159 B[NDOF2*NUMNODESP1*1+NDOF2*i+1] = dbasis[1][i]; 160 161 B[NDOF2*NUMNODESP1*2+NDOF2*i+0] = .5*dbasis[1][i]; 162 B[NDOF2*NUMNODESP1*2+NDOF2*i+1] = .5*dbasis[0][i]; 163 164 B[NDOF2*NUMNODESP1*3+NDOF2*i+0] = .5*dbasis[2][i]; 165 B[NDOF2*NUMNODESP1*3+NDOF2*i+1] = 0.; 166 167 B[NDOF2*NUMNODESP1*4+NDOF2*i+0] = 0.; 168 B[NDOF2*NUMNODESP1*4+NDOF2*i+1] = .5*dbasis[2][i]; 169 } 170 155 for(int i=0;i<numnodes;i++){ 156 B[NDOF2*numnodes*0+NDOF2*i+0] = dbasis[0*numnodes+i]; 157 B[NDOF2*numnodes*0+NDOF2*i+1] = 0.; 158 B[NDOF2*numnodes*1+NDOF2*i+0] = 0.; 159 B[NDOF2*numnodes*1+NDOF2*i+1] = dbasis[1*numnodes+i]; 160 B[NDOF2*numnodes*2+NDOF2*i+0] = .5*dbasis[1*numnodes+i]; 161 B[NDOF2*numnodes*2+NDOF2*i+1] = .5*dbasis[0*numnodes+i]; 162 B[NDOF2*numnodes*3+NDOF2*i+0] = .5*dbasis[2*numnodes+i]; 163 B[NDOF2*numnodes*3+NDOF2*i+1] = 0.; 164 B[NDOF2*numnodes*4+NDOF2*i+0] = 0.; 165 B[NDOF2*numnodes*4+NDOF2*i+1] = .5*dbasis[2*numnodes+i]; 166 } 167 168 /*Clean-up*/ 169 xDelete<IssmDouble>(dbasis); 171 170 } 172 171 /*}}}*/ 173 172 /*FUNCTION PentaRef::GetBprimeHO {{{*/ 174 void PentaRef::GetBprimeHO(IssmDouble* B, IssmDouble* xyz_list, GaussPenta* gauss_coord){173 void PentaRef::GetBprimeHO(IssmDouble* B,IssmDouble* xyz_list,GaussPenta* gauss){ 175 174 /*Compute B prime matrix. B=[B1 B2 B3 B4 B5 B6] where Bi is of size 5*NDOF2. 176 175 * For node i, Bi can be expressed in the actual coordinate system 177 176 * by: 178 177 * Bi=[ 2*dh/dx dh/dy ] 179 * 180 * 181 * 182 * 178 * [ dh/dx 2*dh/dy ] 179 * [ dh/dy dh/dx ] 180 * [ dh/dz 0 ] 181 * [ 0 dh/dz ] 183 182 * where h is the interpolation function for node i. 184 183 * 185 * We assume B has been allocated already, of size: 5x(NDOF2*NUMNODESP1) 186 */ 187 IssmDouble dbasis[3][NUMNODESP1]; 188 189 /*Get dbasis in actual coordinate system: */ 190 GetNodalFunctionsP1Derivatives(&dbasis[0][0],xyz_list, gauss_coord); 184 * We assume B has been allocated already, of size: 5x(NDOF2*numnodes) 185 */ 186 187 /*Fetch number of nodes for this finite element*/ 188 int numnodes = this->NumberofNodes(); 189 190 /*Get nodal functions derivatives*/ 191 IssmDouble* dbasis=xNew<IssmDouble>(3*numnodes); 192 GetNodalFunctionsDerivatives(dbasis,xyz_list,gauss); 191 193 192 194 /*Build BPrime: */ 193 for(int i=0;i<NUMNODESP1;i++){ 194 B[NDOF2*NUMNODESP1*0+NDOF2*i+0]=2.*dbasis[0][i]; 195 B[NDOF2*NUMNODESP1*0+NDOF2*i+1]=dbasis[1][i]; 196 197 B[NDOF2*NUMNODESP1*1+NDOF2*i+0]=dbasis[0][i]; 198 B[NDOF2*NUMNODESP1*1+NDOF2*i+1]=2.*dbasis[1][i]; 199 200 B[NDOF2*NUMNODESP1*2+NDOF2*i+0]=dbasis[1][i]; 201 B[NDOF2*NUMNODESP1*2+NDOF2*i+1]=dbasis[0][i]; 202 203 B[NDOF2*NUMNODESP1*3+NDOF2*i+0]=dbasis[2][i]; 204 B[NDOF2*NUMNODESP1*3+NDOF2*i+1]=0.; 205 206 B[NDOF2*NUMNODESP1*4+NDOF2*i+0]=0.; 207 B[NDOF2*NUMNODESP1*4+NDOF2*i+1]=dbasis[2][i]; 208 } 195 for(int i=0;i<numnodes;i++){ 196 B[NDOF2*numnodes*0+NDOF2*i+0]=2.*dbasis[0*numnodes+i]; 197 B[NDOF2*numnodes*0+NDOF2*i+1]=dbasis[1*numnodes+i]; 198 B[NDOF2*numnodes*1+NDOF2*i+0]=dbasis[0*numnodes+i]; 199 B[NDOF2*numnodes*1+NDOF2*i+1]=2.*dbasis[1*numnodes+i]; 200 B[NDOF2*numnodes*2+NDOF2*i+0]=dbasis[1*numnodes+i]; 201 B[NDOF2*numnodes*2+NDOF2*i+1]=dbasis[0*numnodes+i]; 202 B[NDOF2*numnodes*3+NDOF2*i+0]=dbasis[2*numnodes+i]; 203 B[NDOF2*numnodes*3+NDOF2*i+1]=0.; 204 B[NDOF2*numnodes*4+NDOF2*i+0]=0.; 205 B[NDOF2*numnodes*4+NDOF2*i+1]=dbasis[2*numnodes+i]; 206 } 207 208 /*Clean-up*/ 209 xDelete<IssmDouble>(dbasis); 209 210 } 210 211 /*}}}*/ … … 1183 1184 dbasis[numnodes*2+i]=Jinv[2][0]*dbasis_ref[0*numnodes+i]+Jinv[2][1]*dbasis_ref[1*numnodes+i]+Jinv[2][2]*dbasis_ref[2*numnodes+i]; 1184 1185 } 1186 1187 /*Clean up*/ 1188 xDelete<IssmDouble>(dbasis_ref); 1185 1189 1186 1190 } … … 1622 1626 switch(this->element_type){ 1623 1627 case P1Enum: return NUMNODESP1; 1628 case P2Enum: return NUMNODESP2; 1624 1629 case MINIEnum: return NUMNODESP1b; 1625 1630 default: _error_("Element type "<<EnumToStringx(this->element_type)<<" not supported yet"); -
issm/trunk-jpl/src/c/classes/Elements/Tria.cpp
r15618 r15621 2320 2320 /*}}}*/ 2321 2321 /*FUNCTION Tria::Update{{{*/ 2322 void Tria::Update(int index, IoModel* iomodel,int analysis_counter,int analysis_type,int finite lement_type){2322 void Tria::Update(int index, IoModel* iomodel,int analysis_counter,int analysis_type,int finiteelement_type){ 2323 2323 2324 2324 /*Intermediaries*/ … … 2346 2346 2347 2347 /*Recover element type*/ 2348 this->SetElementType(finite lement_type,analysis_counter);2348 this->SetElementType(finiteelement_type,analysis_counter); 2349 2349 2350 2350 /*Recover vertices ids needed to initialize inputs*/ … … 2354 2354 2355 2355 /*Recover nodes ids needed to initialize the node hook.*/ 2356 switch(finite lement_type){2356 switch(finiteelement_type){ 2357 2357 case P1Enum: 2358 2358 numnodes = 3; … … 2380 2380 break; 2381 2381 default: 2382 _error_("Finite element "<<EnumToStringx(finite lement_type)<<" not supported yet");2382 _error_("Finite element "<<EnumToStringx(finiteelement_type)<<" not supported yet"); 2383 2383 } 2384 2384 -
issm/trunk-jpl/src/c/modules/IoModelToConstraintsx/IoModelToConstraintsx.cpp
r15611 r15621 8 8 #include "../ModelProcessorx/ModelProcessorx.h" 9 9 10 void IoModelToConstraintsx(Constraints* constraints,IoModel* iomodel,int vector_enum,int analysis_type,int finite_element ){10 void IoModelToConstraintsx(Constraints* constraints,IoModel* iomodel,int vector_enum,int analysis_type,int finite_element,int dof){ 11 11 12 12 /*intermediary: */ … … 49 49 if((iomodel->my_vertices[i])){ 50 50 if (!xIsNan<IssmDouble>(spcdata[i])){ 51 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1, 1,spcdata[i],analysis_type));51 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,dof,spcdata[i],analysis_type)); 52 52 count++; 53 53 } … … 61 61 if(!xIsNan<IssmDouble>(spcdata[v1]) && !xIsNan<IssmDouble>(spcdata[v2])){ 62 62 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+iomodel->numberofvertices+i+1, 63 1,(spcdata[v1]+spcdata[v2])/2.,analysis_type));63 dof,(spcdata[v1]+spcdata[v2])/2.,analysis_type)); 64 64 count++; 65 65 } … … 90 90 91 91 if(spcpresent){ 92 constraints->AddObject(new SpcTransient(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1, 1,N,times,values,analysis_type));92 constraints->AddObject(new SpcTransient(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,dof,N,times,values,analysis_type)); 93 93 count++; 94 94 } … … 108 108 } 109 109 if(spcpresent){ 110 constraints->AddObject(new SpcTransient(iomodel->constraintcounter+count+1,iomodel->nodecounter+iomodel->numberofvertices+i+1, 1,110 constraints->AddObject(new SpcTransient(iomodel->constraintcounter+count+1,iomodel->nodecounter+iomodel->numberofvertices+i+1,dof, 111 111 N,times,values,analysis_type)); 112 112 count++; -
issm/trunk-jpl/src/c/modules/IoModelToConstraintsx/IoModelToConstraintsx.h
r15484 r15621 8 8 9 9 /* local prototypes: */ 10 void IoModelToConstraintsx(Constraints* constraints,IoModel* iomodel,int vector_enum,int analysis_type,int finite_element );10 void IoModelToConstraintsx(Constraints* constraints,IoModel* iomodel,int vector_enum,int analysis_type,int finite_element,int dof=1); 11 11 12 12 #endif /* _IOMODELTOELEMENTINPUTX_H */ -
issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateEdges.cpp
r15611 r15621 82 82 if(edgestemp[e*2+1]==v2+1){ 83 83 exist = true; 84 element_edge_connectivity[i*elementnb v+j]=e;84 element_edge_connectivity[i*elementnbe+j]=e; 85 85 break; 86 86 } … … 96 96 97 97 /*Update Connectivity*/ 98 element_edge_connectivity[i*elementnb v+j]=nbe;98 element_edge_connectivity[i*elementnbe+j]=nbe; 99 99 100 100 /*Update chain*/ -
issm/trunk-jpl/src/c/modules/ModelProcessorx/DiagnosticHoriz/CreateConstraintsDiagnosticHoriz.cpp
r15611 r15621 13 13 int i,j; 14 14 int count; 15 IssmDouble yts;16 15 IssmDouble g; 17 16 IssmDouble rho_ice; 18 17 IssmDouble FSreconditioning; 19 18 bool isSSA,isL1L2,isHO,isFS; 20 int fe_ssa ;19 int fe_ssa,fe_ho; 21 20 bool spcpresent = false; 22 21 int Mx,Nx; … … 44 43 45 44 /*Fetch parameters: */ 46 iomodel->Constant(&yts,ConstantsYtsEnum);47 45 iomodel->Constant(&g,ConstantsGEnum); 48 46 iomodel->Constant(&rho_ice,MaterialsRhoIceEnum); … … 53 51 iomodel->Constant(&isFS,FlowequationIsFSEnum); 54 52 iomodel->Constant(&fe_ssa,FlowequationFeSSAEnum); 53 iomodel->Constant(&fe_ho,FlowequationFeHOEnum); 55 54 56 55 /*Recover pointer: */ … … 108 107 count++; 109 108 if (!xIsNan<IssmDouble>(spcvx[i])){ 110 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,3,spcvx[i] /yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.111 count++; 112 } 113 if (!xIsNan<IssmDouble>(spcvy[i])){ 114 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,4,spcvy[i] /yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.109 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,3,spcvx[i],DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 110 count++; 111 } 112 if (!xIsNan<IssmDouble>(spcvy[i])){ 113 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,4,spcvy[i],DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 115 114 count++; 116 115 } … … 123 122 count++; 124 123 if (!xIsNan<IssmDouble>(spcvx[i])){ 125 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,spcvx[i] /yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.126 count++; 127 } 128 if (!xIsNan<IssmDouble>(spcvy[i])){ 129 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2,spcvy[i] /yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.124 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,spcvx[i],DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 125 count++; 126 } 127 if (!xIsNan<IssmDouble>(spcvy[i])){ 128 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2,spcvy[i],DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 130 129 count++; 131 130 } … … 145 144 count++; 146 145 if (!xIsNan<IssmDouble>(spcvx[i])){ 147 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,spcvx[i] /yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.148 count++; 149 } 150 if (!xIsNan<IssmDouble>(spcvy[i])){ 151 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2,spcvy[i] /yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.146 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,spcvx[i],DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 147 count++; 148 } 149 if (!xIsNan<IssmDouble>(spcvy[i])){ 150 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2,spcvy[i],DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 152 151 count++; 153 152 } … … 160 159 count++; 161 160 if (!xIsNan<IssmDouble>(spcvx[i])){ 162 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,3,spcvx[i] /yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.163 count++; 164 } 165 if (!xIsNan<IssmDouble>(spcvy[i])){ 166 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,4,spcvy[i] /yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.161 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,3,spcvx[i],DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 162 count++; 163 } 164 if (!xIsNan<IssmDouble>(spcvy[i])){ 165 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,4,spcvy[i],DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 167 166 count++; 168 167 } 169 168 if (!xIsNan<IssmDouble>(spcvz[i])){ 170 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,5,spcvz[i] /yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.169 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,5,spcvz[i],DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 171 170 count++; 172 171 } … … 185 184 count++; 186 185 if (!xIsNan<IssmDouble>(spcvx[i])){ 187 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,spcvx[i] /yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.188 count++; 189 } 190 if (!xIsNan<IssmDouble>(spcvy[i])){ 191 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2,spcvy[i] /yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.186 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,spcvx[i],DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 187 count++; 188 } 189 if (!xIsNan<IssmDouble>(spcvy[i])){ 190 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2,spcvy[i],DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 192 191 count++; 193 192 } … … 200 199 count++; 201 200 if (!xIsNan<IssmDouble>(spcvx[i])){ 202 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,3,spcvx[i] /yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.203 count++; 204 } 205 if (!xIsNan<IssmDouble>(spcvy[i])){ 206 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,4,spcvy[i] /yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.201 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,3,spcvx[i],DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 202 count++; 203 } 204 if (!xIsNan<IssmDouble>(spcvy[i])){ 205 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,4,spcvy[i],DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 207 206 count++; 208 207 } 209 208 if (!xIsNan<IssmDouble>(spcvz[i])){ 210 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,5,spcvz[i] /yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.209 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,5,spcvz[i],DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 211 210 count++; 212 211 } … … 217 216 else{ 218 217 if (Mx==iomodel->numberofvertices && !xIsNan<IssmDouble>(spcvx[i])){ 219 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,spcvx[i] /yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.218 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,spcvx[i],DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 220 219 count++; 221 220 … … 226 225 spcpresent=false; 227 226 for(j=0;j<Nx;j++){ 228 values[j]=spcvx[i*Nx+j] /yts;227 values[j]=spcvx[i*Nx+j]; 229 228 if(!xIsNan<IssmDouble>(values[j]))spcpresent=true; //NaN means no spc by default 230 229 } … … 242 241 243 242 if (My==iomodel->numberofvertices && !xIsNan<IssmDouble>(spcvy[i])){ 244 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2,spcvy[i] /yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vy.243 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2,spcvy[i],DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vy. 245 244 count++; 246 245 } … … 250 249 spcpresent=false; 251 250 for(j=0;j<Ny;j++){ 252 values[j]=spcvy[i*Ny+j] /yts;251 values[j]=spcvy[i*Ny+j]; 253 252 if(!xIsNan<IssmDouble>(values[j]))spcpresent=true; //NaN means no spc by default 254 253 } … … 266 265 if (reCast<int,IssmDouble>(vertices_type[i])==FSApproximationEnum || (reCast<int,IssmDouble>(vertices_type[i])==NoneApproximationEnum)){ 267 266 if (Mz==iomodel->numberofvertices && !xIsNan<IssmDouble>(spcvz[i])){ 268 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,3,spcvz[i] /yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 2 to vy267 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,3,spcvz[i],DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 2 to vy 269 268 count++; 270 269 } … … 274 273 spcpresent=false; 275 274 for(j=0;j<Nz;j++){ 276 values[j]=spcvz[i*Nz+j] /yts;275 values[j]=spcvz[i*Nz+j]; 277 276 if(!xIsNan<IssmDouble>(values[j]))spcpresent=true; //NaN means no spc by default 278 277 } … … 313 312 314 313 /*SPC Quadratic elements*/ 315 if( isSSA && fe_ssa==1){314 if((isSSA && fe_ssa==1) || (isHO && fe_ho==1)){ 316 315 317 316 int v1,v2; … … 330 329 if(!xIsNan<IssmDouble>(spcvx[v1]) && !xIsNan<IssmDouble>(spcvx[v2])){ 331 330 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+iomodel->numberofvertices+i+1, 332 1,(spcvx[v1]+spcvx[v2])/(2. *yts),DiagnosticHorizAnalysisEnum));331 1,(spcvx[v1]+spcvx[v2])/(2.),DiagnosticHorizAnalysisEnum)); 333 332 count++; 334 333 } 335 334 if(!xIsNan<IssmDouble>(spcvy[v1]) && !xIsNan<IssmDouble>(spcvy[v2])){ 336 335 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+iomodel->numberofvertices+i+1, 337 2,(spcvy[v1]+spcvy[v2])/(2. *yts),DiagnosticHorizAnalysisEnum));336 2,(spcvy[v1]+spcvy[v2])/(2.),DiagnosticHorizAnalysisEnum)); 338 337 count++; 339 338 } … … 341 340 if(!xIsNan<IssmDouble>(spcvz[v1]) && !xIsNan<IssmDouble>(spcvz[v2])){ 342 341 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+iomodel->numberofvertices+i+1, 343 3,(spcvz[v1]+spcvz[v2])/(2. *yts),DiagnosticHorizAnalysisEnum));342 3,(spcvz[v1]+spcvz[v2])/(2.),DiagnosticHorizAnalysisEnum)); 344 343 count++; 345 344 } -
issm/trunk-jpl/src/c/modules/ModelProcessorx/DiagnosticHoriz/CreateNodesDiagnosticHoriz.cpp
r15583 r15621 49 49 else if(isHO){ 50 50 approximation = HOApproximationEnum; 51 finiteelement = P1Enum; 51 iomodel->Constant(&temp,FlowequationFeHOEnum); 52 switch(temp){ 53 case 0 : finiteelement = P1Enum; break; 54 case 1 : finiteelement = P2Enum; break; 55 default: _error_("finite element "<<temp<<" not supported"); 56 } 52 57 } 53 58 else if(isFS){ -
issm/trunk-jpl/src/c/modules/ModelProcessorx/DiagnosticHoriz/UpdateElementsDiagnosticHoriz.cpp
r15613 r15621 54 54 } 55 55 else if(isHO){ 56 finiteelement = P1Enum; 56 iomodel->Constant(&temp,FlowequationFeHOEnum); 57 switch(temp){ 58 case 0 : finiteelement = P1Enum; break; 59 case 1 : finiteelement = P2Enum; break; 60 default: _error_("finite element "<<temp<<" not supported"); 61 } 57 62 } 58 63 else if(isFS){ -
issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
r15595 r15621 72 72 FlowequationIsHOEnum, 73 73 FlowequationIsFSEnum, 74 FlowequationFeSSAEnum, 75 FlowequationFeHOEnum, 74 76 FlowequationFeFSEnum, 75 FlowequationFeSSAEnum,76 77 FlowequationVertexEquationEnum, 77 78 FrictionCoefficientEnum, -
issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
r15595 r15621 80 80 case FlowequationIsHOEnum : return "FlowequationIsHO"; 81 81 case FlowequationIsFSEnum : return "FlowequationIsFS"; 82 case FlowequationFeSSAEnum : return "FlowequationFeSSA"; 83 case FlowequationFeHOEnum : return "FlowequationFeHO"; 82 84 case FlowequationFeFSEnum : return "FlowequationFeFS"; 83 case FlowequationFeSSAEnum : return "FlowequationFeSSA";84 85 case FlowequationVertexEquationEnum : return "FlowequationVertexEquation"; 85 86 case FrictionCoefficientEnum : return "FrictionCoefficient"; -
issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
r15595 r15621 80 80 else if (strcmp(name,"FlowequationIsHO")==0) return FlowequationIsHOEnum; 81 81 else if (strcmp(name,"FlowequationIsFS")==0) return FlowequationIsFSEnum; 82 else if (strcmp(name,"FlowequationFeSSA")==0) return FlowequationFeSSAEnum; 83 else if (strcmp(name,"FlowequationFeHO")==0) return FlowequationFeHOEnum; 82 84 else if (strcmp(name,"FlowequationFeFS")==0) return FlowequationFeFSEnum; 83 else if (strcmp(name,"FlowequationFeSSA")==0) return FlowequationFeSSAEnum;84 85 else if (strcmp(name,"FlowequationVertexEquation")==0) return FlowequationVertexEquationEnum; 85 86 else if (strcmp(name,"FrictionCoefficient")==0) return FrictionCoefficientEnum; … … 136 137 else if (strcmp(name,"InversionIscontrol")==0) return InversionIscontrolEnum; 137 138 else if (strcmp(name,"InversionTao")==0) return InversionTaoEnum; 138 else if (strcmp(name,"InversionIncompleteAdjoint")==0) return InversionIncompleteAdjointEnum;139 139 else stage=2; 140 140 } 141 141 if(stage==2){ 142 if (strcmp(name,"InversionMaxParameters")==0) return InversionMaxParametersEnum; 142 if (strcmp(name,"InversionIncompleteAdjoint")==0) return InversionIncompleteAdjointEnum; 143 else if (strcmp(name,"InversionMaxParameters")==0) return InversionMaxParametersEnum; 143 144 else if (strcmp(name,"InversionMaxiterPerStep")==0) return InversionMaxiterPerStepEnum; 144 145 else if (strcmp(name,"InversionMinParameters")==0) return InversionMinParametersEnum; … … 259 260 else if (strcmp(name,"ThermalIsenthalpy")==0) return ThermalIsenthalpyEnum; 260 261 else if (strcmp(name,"GiaMantleViscosity")==0) return GiaMantleViscosityEnum; 261 else if (strcmp(name,"GiaLithosphereThickness")==0) return GiaLithosphereThicknessEnum;262 262 else stage=3; 263 263 } 264 264 if(stage==3){ 265 if (strcmp(name,"Thickness")==0) return ThicknessEnum; 265 if (strcmp(name,"GiaLithosphereThickness")==0) return GiaLithosphereThicknessEnum; 266 else if (strcmp(name,"Thickness")==0) return ThicknessEnum; 266 267 else if (strcmp(name,"TimesteppingStartTime")==0) return TimesteppingStartTimeEnum; 267 268 else if (strcmp(name,"TimesteppingFinalTime")==0) return TimesteppingFinalTimeEnum; … … 382 383 else if (strcmp(name,"VectorParam")==0) return VectorParamEnum; 383 384 else if (strcmp(name,"Riftfront")==0) return RiftfrontEnum; 384 else if (strcmp(name,"RiftfrontType")==0) return RiftfrontTypeEnum;385 385 else stage=4; 386 386 } 387 387 if(stage==4){ 388 if (strcmp(name,"Segment")==0) return SegmentEnum; 388 if (strcmp(name,"RiftfrontType")==0) return RiftfrontTypeEnum; 389 else if (strcmp(name,"Segment")==0) return SegmentEnum; 389 390 else if (strcmp(name,"SegmentRiftfront")==0) return SegmentRiftfrontEnum; 390 391 else if (strcmp(name,"SpcDynamic")==0) return SpcDynamicEnum; … … 505 506 else if (strcmp(name,"MINI")==0) return MINIEnum; 506 507 else if (strcmp(name,"MINIcondensed")==0) return MINIcondensedEnum; 507 else if (strcmp(name,"TaylorHood")==0) return TaylorHoodEnum;508 508 else stage=5; 509 509 } 510 510 if(stage==5){ 511 if (strcmp(name,"SaveResults")==0) return SaveResultsEnum; 511 if (strcmp(name,"TaylorHood")==0) return TaylorHoodEnum; 512 else if (strcmp(name,"SaveResults")==0) return SaveResultsEnum; 512 513 else if (strcmp(name,"BoolElementResult")==0) return BoolElementResultEnum; 513 514 else if (strcmp(name,"BoolExternalResult")==0) return BoolExternalResultEnum; -
issm/trunk-jpl/src/m/classes/flowequation.m
r15567 r15621 12 12 isFS = 0; 13 13 fe_SSA = 0; 14 fe_HO = 0; 14 15 fe_FS = 0; 15 16 vertex_equation = NaN; … … 78 79 md = checkfield(md,'flowequation.isHO','numel',[1],'values',[0 1]); 79 80 md = checkfield(md,'flowequation.isFS','numel',[1],'values',[0 1]); 81 md = checkfield(md,'flowequation.fe_SSA','numel',[1],'values',[0 1]); 82 md = checkfield(md,'flowequation.fe_HO','numel',[1],'values',[0 1]); 83 md = checkfield(md,'flowequation.fe_FS','numel',[1],'values',[0]); 80 84 md = checkfield(md,'flowequation.borderSSA','size',[md.mesh.numberofvertices 1],'values',[0 1]); 81 85 md = checkfield(md,'flowequation.borderHO','size',[md.mesh.numberofvertices 1],'values',[0 1]); … … 123 127 WriteData(fid,'object',obj,'fieldname','isHO','format','Boolean'); 124 128 WriteData(fid,'object',obj,'fieldname','isFS','format','Boolean'); 129 WriteData(fid,'object',obj,'fieldname','fe_SSA','format','Integer'); 130 WriteData(fid,'object',obj,'fieldname','fe_HO','format','Integer'); 125 131 WriteData(fid,'object',obj,'fieldname','fe_FS','format','Integer'); 126 WriteData(fid,'object',obj,'fieldname','fe_SSA','format','Integer');127 132 WriteData(fid,'object',obj,'fieldname','borderSSA','format','DoubleMat','mattype',1); 128 133 WriteData(fid,'object',obj,'fieldname','borderHO','format','DoubleMat','mattype',1); -
issm/trunk-jpl/src/m/classes/flowequation.py
r15567 r15621 22 22 self.isFS = 0 23 23 self.fe_SSA = 0 24 self.fe_HO = 0 24 25 self.fe_FS = 0 25 26 self.vertex_equation = float('NaN') … … 60 61 md = checkfield(md,'flowequation.isHO','numel',[1],'values',[0,1]) 61 62 md = checkfield(md,'flowequation.isFS','numel',[1],'values',[0,1]) 63 md = checkfield(md,'flowequation.fe_SSA','numel',[1],'values',[0,1]) 64 md = checkfield(md,'flowequation.fe_HO','numel',[1],'values',[0,1]) 65 md = checkfield(md,'flowequation.fe_FS','numel',[1],'values',[0]) 62 66 md = checkfield(md,'flowequation.borderSSA','size',[md.mesh.numberofvertices],'values',[0,1]) 63 67 md = checkfield(md,'flowequation.borderHO','size',[md.mesh.numberofvertices],'values',[0,1]) … … 85 89 WriteData(fid,'object',self,'fieldname','isHO','format','Boolean') 86 90 WriteData(fid,'object',self,'fieldname','isFS','format','Boolean') 91 WriteData(fid,'object',self,'fieldname','fe_SSA','format','Integer') 92 WriteData(fid,'object',self,'fieldname','fe_HO','format','Integer') 87 93 WriteData(fid,'object',self,'fieldname','fe_FS','format','Integer') 88 WriteData(fid,'object',self,'fieldname','fe_SSA','format','Integer')89 94 WriteData(fid,'object',self,'fieldname','borderSSA','format','DoubleMat','mattype',1) 90 95 WriteData(fid,'object',self,'fieldname','borderHO','format','DoubleMat','mattype',1) -
issm/trunk-jpl/src/m/classes/stressbalance.m
r15614 r15621 153 153 end % }}} 154 154 function marshall(obj,md,fid) % {{{ 155 WriteData(fid,'object',obj,'class','diagnostic','fieldname','spcvx','format','DoubleMat','mattype',1,'forcinglength',md.mesh.numberofvertices+1); 156 WriteData(fid,'object',obj,'class','diagnostic','fieldname','spcvy','format','DoubleMat','mattype',1,'forcinglength',md.mesh.numberofvertices+1); 157 WriteData(fid,'object',obj,'class','diagnostic','fieldname','spcvz','format','DoubleMat','mattype',1,'forcinglength',md.mesh.numberofvertices+1); 155 156 yts=365.0*24.0*3600.0; 157 158 WriteData(fid,'object',obj,'class','diagnostic','fieldname','spcvx','format','DoubleMat','mattype',1,'scale',1./yts,'forcinglength',md.mesh.numberofvertices+1); 159 WriteData(fid,'object',obj,'class','diagnostic','fieldname','spcvy','format','DoubleMat','mattype',1,'scale',1./yts,'forcinglength',md.mesh.numberofvertices+1); 160 WriteData(fid,'object',obj,'class','diagnostic','fieldname','spcvz','format','DoubleMat','mattype',1,'scale',1./yts,'forcinglength',md.mesh.numberofvertices+1); 158 161 WriteData(fid,'object',obj,'class','diagnostic','fieldname','restol','format','Double'); 159 162 WriteData(fid,'object',obj,'class','diagnostic','fieldname','reltol','format','Double'); -
issm/trunk-jpl/src/m/classes/stressbalance.py
r15616 r15621 154 154 # }}} 155 155 def marshall(self,md,fid): # {{{ 156 WriteData(fid,'object',self,'class','diagnostic','fieldname','spcvx','format','DoubleMat','mattype',1,'forcinglength',md.mesh.numberofvertices+1) 157 WriteData(fid,'object',self,'class','diagnostic','fieldname','spcvy','format','DoubleMat','mattype',1,'forcinglength',md.mesh.numberofvertices+1) 158 WriteData(fid,'object',self,'class','diagnostic','fieldname','spcvz','format','DoubleMat','mattype',1,'forcinglength',md.mesh.numberofvertices+1) 156 157 yts=365.0*24.0*3600.0 158 159 WriteData(fid,'object',self,'class','diagnostic','fieldname','spcvx','format','DoubleMat','mattype',1,'scale',1./yts,'forcinglength',md.mesh.numberofvertices+1) 160 WriteData(fid,'object',self,'class','diagnostic','fieldname','spcvy','format','DoubleMat','mattype',1,'scale',1./yts,'forcinglength',md.mesh.numberofvertices+1) 161 WriteData(fid,'object',self,'class','diagnostic','fieldname','spcvz','format','DoubleMat','mattype',1,'scale',1./yts,'forcinglength',md.mesh.numberofvertices+1) 159 162 WriteData(fid,'object',self,'class','diagnostic','fieldname','restol','format','Double') 160 163 WriteData(fid,'object',self,'class','diagnostic','fieldname','reltol','format','Double') -
issm/trunk-jpl/src/m/enum/EnumDefinitions.py
r15595 r15621 891 891 return StringToEnum('FlowequationIsFS')[0] 892 892 893 def FlowequationFeSSAEnum(): 894 """ 895 FLOWEQUATIONFESSAENUM - Enum of FlowequationFeSSA 896 897 WARNING: DO NOT MODIFY THIS FILE 898 this file has been automatically generated by src/c/shared/Enum/Synchronize.sh 899 Please read src/c/shared/Enum/README for more information 900 901 Usage: 902 macro=FlowequationFeSSAEnum() 903 """ 904 905 return StringToEnum('FlowequationFeSSA')[0] 906 907 def FlowequationFeHOEnum(): 908 """ 909 FLOWEQUATIONFEHOENUM - Enum of FlowequationFeHO 910 911 WARNING: DO NOT MODIFY THIS FILE 912 this file has been automatically generated by src/c/shared/Enum/Synchronize.sh 913 Please read src/c/shared/Enum/README for more information 914 915 Usage: 916 macro=FlowequationFeHOEnum() 917 """ 918 919 return StringToEnum('FlowequationFeHO')[0] 920 893 921 def FlowequationFeFSEnum(): 894 922 """ … … 905 933 return StringToEnum('FlowequationFeFS')[0] 906 934 907 def FlowequationFeSSAEnum():908 """909 FLOWEQUATIONFESSAENUM - Enum of FlowequationFeSSA910 911 WARNING: DO NOT MODIFY THIS FILE912 this file has been automatically generated by src/c/shared/Enum/Synchronize.sh913 Please read src/c/shared/Enum/README for more information914 915 Usage:916 macro=FlowequationFeSSAEnum()917 """918 919 return StringToEnum('FlowequationFeSSA')[0]920 921 935 def FlowequationVertexEquationEnum(): 922 936 """ … … 7931 7945 """ 7932 7946 7933 return 56 57934 7947 return 566 7948 -
issm/trunk-jpl/src/m/enum/MaximumNumberOfEnums.m
r15530 r15621 9 9 % macro=MaximumNumberOfEnums() 10 10 11 macro=56 5;11 macro=566;
Note:
See TracChangeset
for help on using the changeset viewer.