Changeset 5629
- Timestamp:
- 08/31/10 08:40:24 (15 years ago)
- Location:
- issm/trunk/src/c/objects
- Files:
-
- 15 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk/src/c/objects/Elements/PentaRef.h
r5203 r5629 46 46 void GetLprimeStokes(double* LprimeStokes, double* xyz_list, double* gauss_tria, double* gauss); 47 47 void GetParameterValue(double* pvalue,double* plist,double* gauss); 48 void GetParameterValue(double* pvalue,double* plist,GaussTria* gauss){ISSMERROR("only PentaGauss are supported");}; 48 49 void GetParameterDerivativeValue(double* pvalues, double* plist,double* xyz_list, double* gauss); 50 void GetParameterDerivativeValue(double* pvalues, double* plist,double* xyz_list, GaussTria* gauss){ISSMERROR("only PentaGauss are supported");}; 49 51 50 52 }; -
issm/trunk/src/c/objects/Elements/Tria.cpp
r5625 r5629 29 29 this->parameters=NULL; 30 30 this->results=NULL; 31 31 32 } 32 33 /*}}}*/ … … 34 35 Tria::Tria(int tria_id, int index, IoModel* iomodel,int nummodels) 35 36 :TriaRef(nummodels) 36 ,TriaHook(nummodels,index+1,iomodel->numberofelements+1) //index+1: matice id, iomodel->numberofelements+1: matpar id 37 { //i is the element index 37 ,TriaHook(nummodels,index+1,iomodel->numberofelements+1){ 38 38 /*id: */ 39 39 this->id=tria_id; … … 226 226 /*}}}*/ 227 227 /*FUNCTION Tria::Id {{{1*/ 228 int Tria::Id(){ return id; } 228 int Tria::Id(){ 229 230 return id; 231 232 } 229 233 /*}}}*/ 230 234 /*FUNCTION Tria::Marshall {{{1*/ … … 356 360 void Tria::InputUpdateFromSolution(double* solution){ 357 361 362 /*retrive parameters: */ 358 363 int analysis_type; 359 360 /*retrive parameters: */361 364 parameters->FindParam(&analysis_type,AnalysisTypeEnum); 362 365 363 366 /*Just branch to the correct InputUpdateFromSolution generator, according to the type of analysis we are carrying out: */ 364 if (analysis_type==DiagnosticHorizAnalysisEnum){ 365 InputUpdateFromSolutionDiagnosticHoriz( solution); 366 } 367 else if (analysis_type==DiagnosticHutterAnalysisEnum){ 368 InputUpdateFromSolutionDiagnosticHoriz( solution); 369 } 370 else if (analysis_type==AdjointHorizAnalysisEnum){ 371 InputUpdateFromSolutionAdjointHoriz( solution); 372 } 373 else if (analysis_type==BedSlopeXAnalysisEnum){ 374 InputUpdateFromSolutionOneDof(solution,BedSlopeXEnum); 375 } 376 else if (analysis_type==BedSlopeYAnalysisEnum){ 377 InputUpdateFromSolutionOneDof(solution,BedSlopeYEnum); 378 } 379 else if (analysis_type==SurfaceSlopeXAnalysisEnum){ 380 InputUpdateFromSolutionOneDof(solution,SurfaceSlopeXEnum); 381 } 382 else if (analysis_type==SurfaceSlopeYAnalysisEnum){ 383 InputUpdateFromSolutionOneDof(solution,SurfaceSlopeYEnum); 384 } 385 else if (analysis_type==PrognosticAnalysisEnum){ 386 InputUpdateFromSolutionOneDof(solution,ThicknessEnum); 387 } 388 else if (analysis_type==BalancedthicknessAnalysisEnum){ 389 InputUpdateFromSolutionOneDof(solution,ThicknessEnum); 390 } 391 else if (analysis_type==AdjointBalancedthicknessAnalysisEnum){ 392 InputUpdateFromSolutionAdjointBalancedthickness( solution); 393 } 394 else if (analysis_type==BalancedvelocitiesAnalysisEnum){ 395 InputUpdateFromSolutionOneDof(solution,VelEnum); 396 } 397 else{ 398 ISSMERROR("analysis %i (%s) not supported yet",analysis_type,EnumToString(analysis_type)); 367 switch(analysis_type){ 368 case DiagnosticHorizAnalysisEnum: 369 InputUpdateFromSolutionDiagnosticHoriz( solution); 370 break; 371 case DiagnosticHutterAnalysisEnum: 372 InputUpdateFromSolutionDiagnosticHoriz( solution); 373 break; 374 case AdjointHorizAnalysisEnum: 375 InputUpdateFromSolutionAdjointHoriz( solution); 376 break; 377 case BedSlopeXAnalysisEnum: 378 InputUpdateFromSolutionOneDof(solution,BedSlopeXEnum); 379 break; 380 case BedSlopeYAnalysisEnum: 381 InputUpdateFromSolutionOneDof(solution,BedSlopeYEnum); 382 break; 383 case SurfaceSlopeXAnalysisEnum: 384 InputUpdateFromSolutionOneDof(solution,SurfaceSlopeXEnum); 385 break; 386 case SurfaceSlopeYAnalysisEnum: 387 InputUpdateFromSolutionOneDof(solution,SurfaceSlopeYEnum); 388 break; 389 case PrognosticAnalysisEnum: 390 InputUpdateFromSolutionOneDof(solution,ThicknessEnum); 391 break; 392 case BalancedthicknessAnalysisEnum: 393 InputUpdateFromSolutionOneDof(solution,ThicknessEnum); 394 break; 395 case AdjointBalancedthicknessAnalysisEnum: 396 InputUpdateFromSolutionAdjointBalancedthickness( solution); 397 break; 398 case BalancedvelocitiesAnalysisEnum: 399 InputUpdateFromSolutionOneDof(solution,VelEnum); 400 break; 401 default: 402 ISSMERROR("analysis %i (%s) not supported yet",analysis_type,EnumToString(analysis_type)); 399 403 } 400 404 } … … 428 432 429 433 default: 430 431 434 ISSMERROR("type %i (%s) not implemented yet",type,EnumToString(type)); 432 435 } … … 446 449 void Tria::InputUpdateFromVectorDakota(double* vector, int name, int type){ 447 450 448 const int num grids=3;449 double gaussgrids[num grids][numgrids]={{1,0,0},{0,1,0},{0,0,1}};451 const int numvertices=3; 452 double gaussgrids[numvertices][numvertices]={{1,0,0},{0,1,0},{0,0,1}}; 450 453 int i,j; 451 454 … … 572 575 573 576 int i; 574 const int num grids=3;575 int doflist[num grids];577 const int numvertices=3; 578 int doflist[numvertices]; 576 579 double value; 577 580 … … 615 618 void Tria::ComputeStrainRate(Vec eps){ 616 619 617 int i;618 const int num grids=3;619 int doflist[numgrids];620 double value;620 int i; 621 const int numvertices = 3; 622 int doflist[numvertices]; 623 double value; 621 624 622 625 /*plug local pressure values into global pressure vector: */ … … 628 631 /*FUNCTION Tria::SetCurrentConfiguration {{{1*/ 629 632 void Tria::SetCurrentConfiguration(Elements* elementsin, Loads* loadsin, DataSet* nodesin, Materials* materialsin, Parameters* parametersin){ 630 631 int analysis_counter;632 633 633 634 /*go into parameters and get the analysis_counter: */ 635 int analysis_counter; 634 636 parametersin->FindParam(&analysis_counter,AnalysisCounterEnum); 635 637 … … 645 647 /*FUNCTION Tria::Configure {{{1*/ 646 648 void Tria::Configure(Elements* elementsin, Loads* loadsin, DataSet* nodesin, Materials* materialsin, Parameters* parametersin){ 647 648 int analysis_counter;649 649 650 650 /*go into parameters and get the analysis_counter: */ 651 int analysis_counter; 651 652 parametersin->FindParam(&analysis_counter,AnalysisCounterEnum); 652 653 … … 674 675 double Tria::RegularizeInversion(){ 675 676 676 int i; 677 678 /* output: */ 679 double Jelem=0; 680 681 /* node data: */ 682 const int numgrids=3; 683 const int numdof=2*numgrids; 677 /*constants: */ 678 const int numvertices=3; 684 679 const int NDOF2=2; 685 double xyz_list[numgrids][3]; 686 687 /* grid data: */ 688 double B[numgrids]; 689 690 /* gaussian points: */ 691 int num_gauss,ig; 692 double* first_gauss_area_coord = NULL; 693 double* second_gauss_area_coord = NULL; 694 double* third_gauss_area_coord = NULL; 695 double* gauss_weights = NULL; 696 double gauss_weight; 697 double gauss_l1l2l3[3]; 698 double B_gauss; 699 double dhdt_gauss; 700 701 /* parameters: */ 702 double dk[NDOF2]; 703 double dB[NDOF2]; 704 int control_type; 705 double cm_noisedmp; 706 707 /* Jacobian: */ 708 double Jdet; 709 710 /*inputs: */ 711 bool onwater; 712 bool shelf; 713 714 /*retrieve inputs :*/ 680 const int numdof=NDOF2*numvertices; 681 682 /* Intermediaries */ 683 int i,j,ig; 684 int control_type; 685 bool onwater,shelf; 686 double Jelem = 0; 687 double cm_noisedmp; 688 double Jdet; 689 double xyz_list[numvertices][3]; 690 double dk[NDOF2],dB[NDOF2]; 691 GaussTria *gauss = NULL; 692 693 /*retrieve parameters and inputs*/ 694 this->parameters->FindParam(&control_type,ControlTypeEnum); 695 this->parameters->FindParam(&cm_noisedmp,CmNoiseDmpEnum); 715 696 inputs->GetParameterValue(&onwater,ElementOnWaterEnum); 716 697 inputs->GetParameterValue(&shelf,ElementOnIceShelfEnum); 698 Input* drag_input=inputs->GetInput(DragCoefficientEnum); 699 Input* dhdt_input=inputs->GetInput(DhDtEnum); 700 Input* Bbar_input=matice->inputs->GetInput(RheologyBbarEnum); 717 701 718 702 /*If on water, return 0: */ 719 if(onwater)return 0; 720 721 /*retrieve some parameters: */ 722 this->parameters->FindParam(&control_type,ControlTypeEnum); 723 this->parameters->FindParam(&cm_noisedmp,CmNoiseDmpEnum); 724 725 /* Get node coordinates and dof list: */ 726 GetVerticesCoordinates(&xyz_list[0][0], nodes, numgrids); 727 728 /* Get gaussian points and weights (make this a statically initialized list of points? fstd): */ 729 GaussLegendreTria( &num_gauss, &first_gauss_area_coord, &second_gauss_area_coord, &third_gauss_area_coord, &gauss_weights, 2); 730 731 /* Start looping on the number of gaussian points: */ 732 for (ig=0; ig<num_gauss; ig++){ 733 /*Pick up the gaussian point: */ 734 gauss_weight=*(gauss_weights+ig); 735 gauss_l1l2l3[0]=*(first_gauss_area_coord+ig); 736 gauss_l1l2l3[1]=*(second_gauss_area_coord+ig); 737 gauss_l1l2l3[2]=*(third_gauss_area_coord+ig); 738 739 /* Get Jacobian determinant: */ 740 GetJacobianDeterminant2d(&Jdet, &xyz_list[0][0],gauss_l1l2l3); 703 if(onwater) return 0; 704 705 GetVerticesCoordinates(&xyz_list[0][0], nodes, numvertices); 706 707 /* Start looping on the number of gaussian points: */ 708 gauss=new GaussTria(2); 709 for (ig=gauss->begin();ig<gauss->end();ig++){ 710 711 gauss->GaussPoint(ig); 712 713 GetJacobianDeterminant2d(&Jdet, &xyz_list[0][0],gauss); 741 714 742 715 /*Add Tikhonov regularization term to misfit*/ 743 716 if (control_type==DragCoefficientEnum){ 744 if (shelf){ 745 inputs->GetParameterDerivativeValue(&dk[0],&xyz_list[0][0],&gauss_l1l2l3[0],DragCoefficientEnum); 746 Jelem+=cm_noisedmp*1/2*(pow(dk[0],2)+pow(dk[1],2))*Jdet*gauss_weight; 747 748 } 717 if (!shelf) return 0; //only shelf?... TO BE CHECKED 718 ISSMASSERT(drag_input); 719 drag_input->GetParameterDerivativeValue(&dk[0],&xyz_list[0][0],gauss); 720 Jelem+=cm_noisedmp*1/2*(pow(dk[0],2)+pow(dk[1],2))*Jdet*gauss->weight; 749 721 } 750 722 else if (control_type==RheologyBbarEnum){ 751 matice->inputs->GetParameterDerivativeValue(&dB[0], &xyz_list[0][0], &gauss_l1l2l3[0],RheologyBbarEnum); 752 Jelem+=cm_noisedmp*1/2*(pow(dB[0],2)+pow(dB[1],2))*Jdet*gauss_weight; 723 ISSMASSERT(Bbar_input); 724 Bbar_input->GetParameterDerivativeValue(&dB[0], &xyz_list[0][0], gauss); 725 Jelem+=cm_noisedmp*1/2*(pow(dB[0],2)+pow(dB[1],2))*Jdet*gauss->weight; 753 726 } 754 727 else if (control_type==DhDtEnum){ 755 this->inputs->GetParameterDerivativeValue(&dB[0], &xyz_list[0][0], &gauss_l1l2l3[0],DhDtEnum); 756 Jelem+=cm_noisedmp*1/2*(pow(dB[0],2)+pow(dB[1],2))*Jdet*gauss_weight; 728 ISSMASSERT(dhdt_input); 729 dhdt_input->GetParameterDerivativeValue(&dB[0], &xyz_list[0][0], gauss); 730 Jelem+=cm_noisedmp*1/2*(pow(dB[0],2)+pow(dB[1],2))*Jdet*gauss->weight; 757 731 } 758 732 else{ 759 733 ISSMERROR("%s%i","unsupported control type: ",control_type); 760 734 } 761 762 } 763 764 xfree((void**)&first_gauss_area_coord); 765 xfree((void**)&second_gauss_area_coord); 766 xfree((void**)&third_gauss_area_coord); 767 xfree((void**)&gauss_weights); 768 769 /*Return: */ 735 } 736 737 /*clean-up and return: */ 738 delete gauss; 770 739 return Jelem; 771 740 } … … 774 743 void Tria::CreateKMatrix(Mat Kgg){ 775 744 745 /*retrive parameters: */ 776 746 int analysis_type; 777 778 /*retrive parameters: */779 747 parameters->FindParam(&analysis_type,AnalysisTypeEnum); 780 748 … … 884 852 void Tria::GetBedList(double* bedlist){ 885 853 886 const int num grids=3;887 double gaussgrids[num grids][numgrids]={{1,0,0},{0,1,0},{0,0,1}};854 const int numvertices=3; 855 double gaussgrids[numvertices][numvertices]={{1,0,0},{0,1,0},{0,0,1}}; 888 856 889 857 inputs->GetParameterValues(bedlist,&gaussgrids[0][0],3,BedEnum); … … 953 921 void Tria::GetThicknessList(double* thickness_list){ 954 922 955 const int num grids=3;956 double gaussgrids[num grids][numgrids]={{1,0,0},{0,1,0},{0,0,1}};923 const int numvertices=3; 924 double gaussgrids[numvertices][numvertices]={{1,0,0},{0,1,0},{0,0,1}}; 957 925 inputs->GetParameterValues(thickness_list,&gaussgrids[0][0],3,ThicknessEnum); 958 926 … … 1008 976 1009 977 /* node data: */ 1010 const int num grids=3;978 const int numvertices=3; 1011 979 const int NDOF1=1; 1012 980 const int NDOF2=2; 1013 const int numdof=NDOF2*num grids;1014 double xyz_list[num grids][3];1015 int doflist1[num grids];1016 double dh1dh3[NDOF2][num grids];981 const int numdof=NDOF2*numvertices; 982 double xyz_list[numvertices][3]; 983 int doflist1[numvertices]; 984 double dh1dh3[NDOF2][numvertices]; 1017 985 1018 986 /* grid data: */ 1019 double B[num grids];987 double B[numvertices]; 1020 988 1021 989 … … 1030 998 1031 999 /*element vector at the gaussian points: */ 1032 double grade_g[num grids]={0.0};1033 double grade_g_gaussian[num grids];1000 double grade_g[numvertices]={0.0}; 1001 double grade_g_gaussian[numvertices]; 1034 1002 1035 1003 /* Jacobian: */ … … 1077 1045 1078 1046 /* Get node coordinates and dof list: */ 1079 GetVerticesCoordinates(&xyz_list[0][0], nodes, num grids);1047 GetVerticesCoordinates(&xyz_list[0][0], nodes, numvertices); 1080 1048 GetDofList1(&doflist1[0]); 1081 1049 … … 1128 1096 1129 1097 /*Build gradje_g_gaussian vector (actually -dJ/dB): */ 1130 for (i=0;i<num grids;i++){1098 for (i=0;i<numvertices;i++){ 1131 1099 //standard gradient dJ/dki 1132 1100 grade_g_gaussian[i]=-viscosity_complement*thickness*( (2*dvx[0]+dvy[1])*2*dadjx[0]+(dvx[1]+dvy[0])*(dadjx[1]+dadjy[0])+(2*dvy[1]+dvx[0])*2*dadjy[1])*Jdet*gauss_weight*l1l2l3[i]; … … 1148 1116 1149 1117 /*Add grade_g_gaussian to grade_g: */ 1150 for( i=0; i<num grids;i++) grade_g[i]+=grade_g_gaussian[i];1118 for( i=0; i<numvertices;i++) grade_g[i]+=grade_g_gaussian[i]; 1151 1119 } 1152 1120 1153 1121 /*Add grade_g to global vector gradient: */ 1154 VecSetValues(gradient,num grids,doflist1,(const double*)grade_g,ADD_VALUES);1122 VecSetValues(gradient,numvertices,doflist1,(const double*)grade_g,ADD_VALUES); 1155 1123 1156 1124 xfree((void**)&first_gauss_area_coord); … … 1166 1134 1167 1135 /* node data: */ 1168 const int num grids=3;1136 const int numvertices=3; 1169 1137 const int NDOF2=2; 1170 const int numdof=NDOF2*num grids;1171 double xyz_list[num grids][3];1172 int doflist1[num grids];1173 double dh1dh3[NDOF2][num grids];1138 const int numdof=NDOF2*numvertices; 1139 double xyz_list[numvertices][3]; 1140 int doflist1[numvertices]; 1141 double dh1dh3[NDOF2][numvertices]; 1174 1142 1175 1143 /* gaussian points: */ … … 1193 1161 1194 1162 /*element vector at the gaussian points: */ 1195 double grade_g[num grids]={0.0};1196 double grade_g_gaussian[num grids];1163 double grade_g[numvertices]={0.0}; 1164 double grade_g_gaussian[numvertices]; 1197 1165 1198 1166 /* Jacobian: */ … … 1201 1169 /*nodal functions: */ 1202 1170 double l1l2l3[3]; 1203 double alpha2complement_list[num grids]; //TO BE DELETED1204 double gauss[num grids][numgrids] = {{1,0,0},{0,1,0},{0,0,1}}; //TO BE DELETED1171 double alpha2complement_list[numvertices]; //TO BE DELETED 1172 double gauss[numvertices][numvertices] = {{1,0,0},{0,1,0},{0,0,1}}; //TO BE DELETED 1205 1173 1206 1174 /* strain rate: */ … … 1241 1209 1242 1210 /* Get node coordinates and dof list: */ 1243 GetVerticesCoordinates(&xyz_list[0][0], nodes, num grids);1211 GetVerticesCoordinates(&xyz_list[0][0], nodes, numvertices); 1244 1212 GetDofList1(&doflist1[0]); 1245 1213 … … 1249 1217 1250 1218 /*COMPUT alpha2_list (TO BE DELETED)*/ 1251 for(i=0;i<num grids;i++){1219 for(i=0;i<numvertices;i++){ 1252 1220 friction->GetAlphaComplement(&alpha2complement_list[i],&gauss[i][0],VxEnum,VyEnum); 1253 1221 } … … 1300 1268 1301 1269 /*Build gradje_g_gaussian vector (actually -dJ/ddrag): */ 1302 for (i=0;i<num grids;i++){1270 for (i=0;i<numvertices;i++){ 1303 1271 1304 1272 //standard term dJ/dki … … 1320 1288 1321 1289 /*Add gradje_g_gaussian vector to gradje_g: */ 1322 for( i=0; i<num grids; i++)grade_g[i]+=grade_g_gaussian[i];1290 for( i=0; i<numvertices; i++)grade_g[i]+=grade_g_gaussian[i]; 1323 1291 } 1324 1292 1325 1293 /*Add grade_g to global vector gradient: */ 1326 VecSetValues(gradient,num grids,doflist1,(const double*)grade_g,ADD_VALUES);1294 VecSetValues(gradient,numvertices,doflist1,(const double*)grade_g,ADD_VALUES); 1327 1295 1328 1296 xfree((void**)&first_gauss_area_coord); … … 1340 1308 1341 1309 /* node data: */ 1342 const int num grids=3;1310 const int numvertices=3; 1343 1311 const int NDOF1=1; 1344 int doflist1[num grids];1312 int doflist1[numvertices]; 1345 1313 1346 1314 /*Gauss*/ 1347 double gauss[num grids][numgrids]={{1,0,0},{0,1,0},{0,0,1}};1315 double gauss[numvertices][numvertices]={{1,0,0},{0,1,0},{0,0,1}}; 1348 1316 1349 1317 /* grid data: */ … … 1351 1319 1352 1320 /*element vector at the gaussian points: */ 1353 double gradient_g[num grids];1321 double gradient_g[numvertices]; 1354 1322 1355 1323 /*Inputs*/ … … 1363 1331 1364 1332 /* Start looping on the vertices: */ 1365 for(i=0; i<num grids;i++){1333 for(i=0; i<numvertices;i++){ 1366 1334 adjoint_input->GetParameterValue(&lambda,&gauss[i][0]); 1367 1335 gradient_g[i]=-lambda; … … 1369 1337 1370 1338 /*Add grade_g to global vector gradient: */ 1371 VecSetValues(gradient,num grids,doflist1,(const double*)gradient_g,INSERT_VALUES);1339 VecSetValues(gradient,numvertices,doflist1,(const double*)gradient_g,INSERT_VALUES); 1372 1340 } 1373 1341 /*}}}*/ … … 1568 1536 int i; 1569 1537 1570 const int num grids=3;1538 const int numvertices=3; 1571 1539 const int numdofs=2; 1572 1540 double mass_flux=0; 1573 double xyz_list[num grids][3];1541 double xyz_list[numvertices][3]; 1574 1542 double gauss_1[3]; 1575 1543 double gauss_2[3]; … … 1591 1559 1592 1560 /*Get xyz list: */ 1593 GetVerticesCoordinates(&xyz_list[0][0], nodes, num grids);1561 GetVerticesCoordinates(&xyz_list[0][0], nodes, numvertices); 1594 1562 1595 1563 /*get area coordinates of 0 and 1 locations: */ … … 1630 1598 int i; 1631 1599 int dim; 1632 const int num grids=3;1633 double gaussgrids[num grids][numgrids]={{1,0,0},{0,1,0},{0,0,1}};1634 double vx_values[num grids];1600 const int numvertices=3; 1601 double gaussgrids[numvertices][numvertices]={{1,0,0},{0,1,0},{0,0,1}}; 1602 double vx_values[numvertices]; 1635 1603 double maxabsvx; 1636 1604 … … 1639 1607 1640 1608 /*retrive velocity values at nodes */ 1641 inputs->GetParameterValues(&vx_values[0],&gaussgrids[0][0],num grids,VxEnum);1609 inputs->GetParameterValues(&vx_values[0],&gaussgrids[0][0],numvertices,VxEnum); 1642 1610 1643 1611 /*process units if requested: */ 1644 if(process_units)UnitConversion(&vx_values[0],num grids,IuToExtEnum,VxEnum,this->parameters);1612 if(process_units)UnitConversion(&vx_values[0],numvertices,IuToExtEnum,VxEnum,this->parameters); 1645 1613 1646 1614 /*now, compute maximum:*/ 1647 1615 maxabsvx=fabs(vx_values[0]); 1648 for(i=1;i<num grids;i++){1616 for(i=1;i<numvertices;i++){ 1649 1617 if (fabs(vx_values[i])>maxabsvx)maxabsvx=fabs(vx_values[i]); 1650 1618 } … … 1659 1627 int i; 1660 1628 int dim; 1661 const int num grids=3;1662 double gaussgrids[num grids][numgrids]={{1,0,0},{0,1,0},{0,0,1}};1663 double vy_values[num grids];1629 const int numvertices=3; 1630 double gaussgrids[numvertices][numvertices]={{1,0,0},{0,1,0},{0,0,1}}; 1631 double vy_values[numvertices]; 1664 1632 double maxabsvy; 1665 1633 … … 1668 1636 1669 1637 /*retrive velocity values at nodes */ 1670 inputs->GetParameterValues(&vy_values[0],&gaussgrids[0][0],num grids,VyEnum);1638 inputs->GetParameterValues(&vy_values[0],&gaussgrids[0][0],numvertices,VyEnum); 1671 1639 1672 1640 /*process units if requested: */ 1673 if(process_units)UnitConversion(&vy_values[0],num grids,IuToExtEnum,VyEnum,this->parameters);1641 if(process_units)UnitConversion(&vy_values[0],numvertices,IuToExtEnum,VyEnum,this->parameters); 1674 1642 1675 1643 /*now, compute maximum:*/ 1676 1644 maxabsvy=fabs(vy_values[0]); 1677 for(i=1;i<num grids;i++){1645 for(i=1;i<numvertices;i++){ 1678 1646 if (fabs(vy_values[i])>maxabsvy)maxabsvy=fabs(vy_values[i]); 1679 1647 } … … 1688 1656 int i; 1689 1657 int dim; 1690 const int num grids=3;1691 double gaussgrids[num grids][numgrids]={{1,0,0},{0,1,0},{0,0,1}};1692 double vz_values[num grids];1658 const int numvertices=3; 1659 double gaussgrids[numvertices][numvertices]={{1,0,0},{0,1,0},{0,0,1}}; 1660 double vz_values[numvertices]; 1693 1661 double maxabsvz; 1694 1662 … … 1697 1665 1698 1666 /*retrive velocity values at nodes */ 1699 inputs->GetParameterValues(&vz_values[0],&gaussgrids[0][0],num grids,VzEnum);1667 inputs->GetParameterValues(&vz_values[0],&gaussgrids[0][0],numvertices,VzEnum); 1700 1668 1701 1669 /*process units if requested: */ 1702 if(process_units)UnitConversion(&vz_values[0],num grids,IuToExtEnum,VzEnum,this->parameters);1670 if(process_units)UnitConversion(&vz_values[0],numvertices,IuToExtEnum,VzEnum,this->parameters); 1703 1671 1704 1672 /*now, compute maximum:*/ 1705 1673 maxabsvz=fabs(vz_values[0]); 1706 for(i=1;i<num grids;i++){1674 for(i=1;i<numvertices;i++){ 1707 1675 if (fabs(vz_values[i])>maxabsvz)maxabsvz=fabs(vz_values[i]); 1708 1676 } … … 1717 1685 int i; 1718 1686 int dim; 1719 const int num grids=3;1720 double gaussgrids[num grids][numgrids]={{1,0,0},{0,1,0},{0,0,1}};1721 double vel_values[num grids];1687 const int numvertices=3; 1688 double gaussgrids[numvertices][numvertices]={{1,0,0},{0,1,0},{0,0,1}}; 1689 double vel_values[numvertices]; 1722 1690 double maxvel; 1723 1691 … … 1726 1694 1727 1695 /*retrive velocity values at nodes */ 1728 inputs->GetParameterValues(&vel_values[0],&gaussgrids[0][0],num grids,VelEnum);1696 inputs->GetParameterValues(&vel_values[0],&gaussgrids[0][0],numvertices,VelEnum); 1729 1697 1730 1698 /*process units if requested: */ 1731 if(process_units)UnitConversion(&vel_values[0],num grids,IuToExtEnum,VelEnum,this->parameters);1699 if(process_units)UnitConversion(&vel_values[0],numvertices,IuToExtEnum,VelEnum,this->parameters); 1732 1700 1733 1701 /*now, compute maximum:*/ 1734 1702 maxvel=vel_values[0]; 1735 for(i=1;i<num grids;i++){1703 for(i=1;i<numvertices;i++){ 1736 1704 if (vel_values[i]>maxvel)maxvel=vel_values[i]; 1737 1705 } … … 1747 1715 int i; 1748 1716 int dim; 1749 const int num grids=3;1750 double gaussgrids[num grids][numgrids]={{1,0,0},{0,1,0},{0,0,1}};1751 double vx_values[num grids];1717 const int numvertices=3; 1718 double gaussgrids[numvertices][numvertices]={{1,0,0},{0,1,0},{0,0,1}}; 1719 double vx_values[numvertices]; 1752 1720 double maxvx; 1753 1721 … … 1756 1724 1757 1725 /*retrive velocity values at nodes */ 1758 inputs->GetParameterValues(&vx_values[0],&gaussgrids[0][0],num grids,VxEnum);1726 inputs->GetParameterValues(&vx_values[0],&gaussgrids[0][0],numvertices,VxEnum); 1759 1727 1760 1728 /*process units if requested: */ 1761 if(process_units)UnitConversion(&vx_values[0],num grids,IuToExtEnum,VxEnum,this->parameters);1729 if(process_units)UnitConversion(&vx_values[0],numvertices,IuToExtEnum,VxEnum,this->parameters); 1762 1730 1763 1731 /*now, compute maximum:*/ 1764 1732 maxvx=vx_values[0]; 1765 for(i=1;i<num grids;i++){1733 for(i=1;i<numvertices;i++){ 1766 1734 if (vx_values[i]>maxvx)maxvx=vx_values[i]; 1767 1735 } … … 1777 1745 int i; 1778 1746 int dim; 1779 const int num grids=3;1780 double gaussgrids[num grids][numgrids]={{1,0,0},{0,1,0},{0,0,1}};1781 double vy_values[num grids];1747 const int numvertices=3; 1748 double gaussgrids[numvertices][numvertices]={{1,0,0},{0,1,0},{0,0,1}}; 1749 double vy_values[numvertices]; 1782 1750 double maxvy; 1783 1751 … … 1786 1754 1787 1755 /*retrive velocity values at nodes */ 1788 inputs->GetParameterValues(&vy_values[0],&gaussgrids[0][0],num grids,VyEnum);1756 inputs->GetParameterValues(&vy_values[0],&gaussgrids[0][0],numvertices,VyEnum); 1789 1757 1790 1758 /*process units if requested: */ 1791 if(process_units)UnitConversion(&vy_values[0],num grids,IuToExtEnum,VyEnum,this->parameters);1759 if(process_units)UnitConversion(&vy_values[0],numvertices,IuToExtEnum,VyEnum,this->parameters); 1792 1760 1793 1761 /*now, compute maximum:*/ 1794 1762 maxvy=vy_values[0]; 1795 for(i=1;i<num grids;i++){1763 for(i=1;i<numvertices;i++){ 1796 1764 if (vy_values[i]>maxvy)maxvy=vy_values[i]; 1797 1765 } … … 1807 1775 int i; 1808 1776 int dim; 1809 const int num grids=3;1810 double gaussgrids[num grids][numgrids]={{1,0,0},{0,1,0},{0,0,1}};1811 double vz_values[num grids];1777 const int numvertices=3; 1778 double gaussgrids[numvertices][numvertices]={{1,0,0},{0,1,0},{0,0,1}}; 1779 double vz_values[numvertices]; 1812 1780 double maxvz; 1813 1781 … … 1816 1784 1817 1785 /*retrive velocity values at nodes */ 1818 inputs->GetParameterValues(&vz_values[0],&gaussgrids[0][0],num grids,VzEnum);1786 inputs->GetParameterValues(&vz_values[0],&gaussgrids[0][0],numvertices,VzEnum); 1819 1787 1820 1788 /*process units if requested: */ 1821 if(process_units)UnitConversion(&vz_values[0],num grids,IuToExtEnum,VzEnum,this->parameters);1789 if(process_units)UnitConversion(&vz_values[0],numvertices,IuToExtEnum,VzEnum,this->parameters); 1822 1790 1823 1791 /*now, compute maximum:*/ 1824 1792 maxvz=vz_values[0]; 1825 for(i=1;i<num grids;i++){1793 for(i=1;i<numvertices;i++){ 1826 1794 if (vz_values[i]>maxvz)maxvz=vz_values[i]; 1827 1795 } … … 1837 1805 int i; 1838 1806 int dim; 1839 const int num grids=3;1840 double gaussgrids[num grids][numgrids]={{1,0,0},{0,1,0},{0,0,1}};1841 double vel_values[num grids];1807 const int numvertices=3; 1808 double gaussgrids[numvertices][numvertices]={{1,0,0},{0,1,0},{0,0,1}}; 1809 double vel_values[numvertices]; 1842 1810 double minvel; 1843 1811 … … 1846 1814 1847 1815 /*retrive velocity values at nodes */ 1848 inputs->GetParameterValues(&vel_values[0],&gaussgrids[0][0],num grids,VelEnum);1816 inputs->GetParameterValues(&vel_values[0],&gaussgrids[0][0],numvertices,VelEnum); 1849 1817 1850 1818 /*process units if requested: */ 1851 if(process_units)UnitConversion(&vel_values[0],num grids,IuToExtEnum,VelEnum,this->parameters);1819 if(process_units)UnitConversion(&vel_values[0],numvertices,IuToExtEnum,VelEnum,this->parameters); 1852 1820 1853 1821 /*now, compute minimum:*/ 1854 1822 minvel=vel_values[0]; 1855 for(i=1;i<num grids;i++){1823 for(i=1;i<numvertices;i++){ 1856 1824 if (vel_values[i]<minvel)minvel=vel_values[i]; 1857 1825 } … … 1867 1835 int i; 1868 1836 int dim; 1869 const int num grids=3;1870 double gaussgrids[num grids][numgrids]={{1,0,0},{0,1,0},{0,0,1}};1871 double vx_values[num grids];1837 const int numvertices=3; 1838 double gaussgrids[numvertices][numvertices]={{1,0,0},{0,1,0},{0,0,1}}; 1839 double vx_values[numvertices]; 1872 1840 double minvx; 1873 1841 … … 1876 1844 1877 1845 /*retrive velocity values at nodes */ 1878 inputs->GetParameterValues(&vx_values[0],&gaussgrids[0][0],num grids,VxEnum);1846 inputs->GetParameterValues(&vx_values[0],&gaussgrids[0][0],numvertices,VxEnum); 1879 1847 1880 1848 /*process units if requested: */ 1881 if(process_units)UnitConversion(&vx_values[0],num grids,IuToExtEnum,VxEnum,this->parameters);1849 if(process_units)UnitConversion(&vx_values[0],numvertices,IuToExtEnum,VxEnum,this->parameters); 1882 1850 1883 1851 /*now, compute minimum:*/ 1884 1852 minvx=vx_values[0]; 1885 for(i=1;i<num grids;i++){1853 for(i=1;i<numvertices;i++){ 1886 1854 if (vx_values[i]<minvx)minvx=vx_values[i]; 1887 1855 } … … 1897 1865 int i; 1898 1866 int dim; 1899 const int num grids=3;1900 double gaussgrids[num grids][numgrids]={{1,0,0},{0,1,0},{0,0,1}};1901 double vy_values[num grids];1867 const int numvertices=3; 1868 double gaussgrids[numvertices][numvertices]={{1,0,0},{0,1,0},{0,0,1}}; 1869 double vy_values[numvertices]; 1902 1870 double minvy; 1903 1871 … … 1906 1874 1907 1875 /*retrive velocity values at nodes */ 1908 inputs->GetParameterValues(&vy_values[0],&gaussgrids[0][0],num grids,VyEnum);1876 inputs->GetParameterValues(&vy_values[0],&gaussgrids[0][0],numvertices,VyEnum); 1909 1877 1910 1878 /*process units if requested: */ 1911 if(process_units)UnitConversion(&vy_values[0],num grids,IuToExtEnum,VyEnum,this->parameters);1879 if(process_units)UnitConversion(&vy_values[0],numvertices,IuToExtEnum,VyEnum,this->parameters); 1912 1880 1913 1881 /*now, compute minimum:*/ 1914 1882 minvy=vy_values[0]; 1915 for(i=1;i<num grids;i++){1883 for(i=1;i<numvertices;i++){ 1916 1884 if (vy_values[i]<minvy)minvy=vy_values[i]; 1917 1885 } … … 1927 1895 int i; 1928 1896 int dim; 1929 const int num grids=3;1930 double gaussgrids[num grids][numgrids]={{1,0,0},{0,1,0},{0,0,1}};1931 double vz_values[num grids];1897 const int numvertices=3; 1898 double gaussgrids[numvertices][numvertices]={{1,0,0},{0,1,0},{0,0,1}}; 1899 double vz_values[numvertices]; 1932 1900 double minvz; 1933 1901 … … 1936 1904 1937 1905 /*retrive velocity values at nodes */ 1938 inputs->GetParameterValues(&vz_values[0],&gaussgrids[0][0],num grids,VzEnum);1906 inputs->GetParameterValues(&vz_values[0],&gaussgrids[0][0],numvertices,VzEnum); 1939 1907 1940 1908 /*process units if requested: */ 1941 if(process_units)UnitConversion(&vz_values[0],num grids,IuToExtEnum,VzEnum,this->parameters);1909 if(process_units)UnitConversion(&vz_values[0],numvertices,IuToExtEnum,VzEnum,this->parameters); 1942 1910 1943 1911 /*now, compute minimum:*/ 1944 1912 minvz=vz_values[0]; 1945 for(i=1;i<num grids;i++){1913 for(i=1;i<numvertices;i++){ 1946 1914 if (vz_values[i]<minvz)minvz=vz_values[i]; 1947 1915 } … … 1961 1929 1962 1930 /* node data: */ 1963 const int num grids=3;1964 const int numdof=1*num grids;1931 const int numvertices=3; 1932 const int numdof=1*numvertices; 1965 1933 const int NDOF=1; 1966 double xyz_list[num grids][3];1934 double xyz_list[numvertices][3]; 1967 1935 1968 1936 /* gaussian points: */ … … 1974 1942 double gauss_weight; 1975 1943 double gauss_l1l2l3[3]; 1976 double gaussgrids[num grids][numgrids]={{1,0,0},{0,1,0},{0,0,1}};1944 double gaussgrids[numvertices][numvertices]={{1,0,0},{0,1,0},{0,0,1}}; 1977 1945 1978 1946 /* parameters: */ … … 1995 1963 1996 1964 /* Get node coordinates and dof list: */ 1997 GetVerticesCoordinates(&xyz_list[0][0], nodes, num grids);1965 GetVerticesCoordinates(&xyz_list[0][0], nodes, numvertices); 1998 1966 1999 1967 /*Retrieve all inputs we will be needing: */ … … 2043 2011 2044 2012 /* node data: */ 2045 const int num grids=3;2046 const int numdof=2*num grids;2013 const int numvertices=3; 2014 const int numdof=2*numvertices; 2047 2015 const int NDOF2=2; 2048 double xyz_list[num grids][3];2016 double xyz_list[numvertices][3]; 2049 2017 2050 2018 /* grid data: */ 2051 double vx_list[num grids];2052 double vy_list[num grids];2053 double obs_vx_list[num grids];2054 double obs_vy_list[num grids];2055 double misfit_square_list[num grids];2056 double misfit_list[num grids];2057 double weights_list[num grids];2019 double vx_list[numvertices]; 2020 double vy_list[numvertices]; 2021 double obs_vx_list[numvertices]; 2022 double obs_vy_list[numvertices]; 2023 double misfit_square_list[numvertices]; 2024 double misfit_list[numvertices]; 2025 double weights_list[numvertices]; 2058 2026 2059 2027 /* gaussian points: */ … … 2065 2033 double gauss_weight; 2066 2034 double gauss_l1l2l3[3]; 2067 double gaussgrids[num grids][numgrids]={{1,0,0},{0,1,0},{0,0,1}};2035 double gaussgrids[numvertices][numvertices]={{1,0,0},{0,1,0},{0,0,1}}; 2068 2036 2069 2037 /* parameters: */ … … 2086 2054 2087 2055 /* Get node coordinates and dof list: */ 2088 GetVerticesCoordinates(&xyz_list[0][0], nodes, num grids);2056 GetVerticesCoordinates(&xyz_list[0][0], nodes, numvertices); 2089 2057 2090 2058 /* Recover input data: */ … … 2116 2084 * 2117 2085 */ 2118 for (i=0;i<num grids;i++){2086 for (i=0;i<numvertices;i++){ 2119 2087 misfit_list[i]=0.5*(pow((vx_list[i]-obs_vx_list[i]),(double)2)+pow((vy_list[i]-obs_vy_list[i]),(double)2)); 2120 2088 } 2121 2089 /*Process units: */ 2122 if(process_units)UnitConversion(&misfit_list[0],num grids,IuToExtEnum,SurfaceAbsVelMisfitEnum,this->parameters);2090 if(process_units)UnitConversion(&misfit_list[0],numvertices,IuToExtEnum,SurfaceAbsVelMisfitEnum,this->parameters); 2123 2091 2124 2092 /*Apply weights to misfits*/ 2125 for (i=0;i<num grids;i++){2093 for (i=0;i<numvertices;i++){ 2126 2094 misfit_list[i]=weights_list[i]*misfit_list[i]; 2127 2095 } … … 2166 2134 2167 2135 /* node data: */ 2168 const int num grids=3;2169 const int numdof=2*num grids;2136 const int numvertices=3; 2137 const int numdof=2*numvertices; 2170 2138 const int NDOF2=2; 2171 double xyz_list[num grids][3];2139 double xyz_list[numvertices][3]; 2172 2140 2173 2141 /* grid data: */ 2174 double vx_list[num grids];2175 double vy_list[num grids];2176 double obs_vx_list[num grids];2177 double obs_vy_list[num grids];2178 double misfit_square_list[num grids];2179 double misfit_list[num grids];2180 double weights_list[num grids];2142 double vx_list[numvertices]; 2143 double vy_list[numvertices]; 2144 double obs_vx_list[numvertices]; 2145 double obs_vy_list[numvertices]; 2146 double misfit_square_list[numvertices]; 2147 double misfit_list[numvertices]; 2148 double weights_list[numvertices]; 2181 2149 2182 2150 /* gaussian points: */ … … 2188 2156 double gauss_weight; 2189 2157 double gauss_l1l2l3[3]; 2190 double gaussgrids[num grids][numgrids]={{1,0,0},{0,1,0},{0,0,1}};2158 double gaussgrids[numvertices][numvertices]={{1,0,0},{0,1,0},{0,0,1}}; 2191 2159 2192 2160 /* parameters: */ … … 2213 2181 2214 2182 /* Get node coordinates and dof list: */ 2215 GetVerticesCoordinates(&xyz_list[0][0], nodes, num grids);2183 GetVerticesCoordinates(&xyz_list[0][0], nodes, numvertices); 2216 2184 2217 2185 /* Recover input data: */ … … 2243 2211 * obs obs 2244 2212 */ 2245 for (i=0;i<num grids;i++){2213 for (i=0;i<numvertices;i++){ 2246 2214 scalex=pow(meanvel/(obs_vx_list[i]+epsvel),(double)2); 2247 2215 scaley=pow(meanvel/(obs_vy_list[i]+epsvel),(double)2); … … 2252 2220 2253 2221 /*Process units: */ 2254 if(process_units)UnitConversion(&misfit_list[0],num grids,IuToExtEnum,SurfaceRelVelMisfitEnum,this->parameters);2222 if(process_units)UnitConversion(&misfit_list[0],numvertices,IuToExtEnum,SurfaceRelVelMisfitEnum,this->parameters); 2255 2223 2256 2224 /*Apply weights to misfits*/ 2257 for (i=0;i<num grids;i++){2225 for (i=0;i<numvertices;i++){ 2258 2226 misfit_list[i]=weights_list[i]*misfit_list[i]; 2259 2227 } … … 2298 2266 2299 2267 /* node data: */ 2300 const int num grids=3;2301 const int numdof=2*num grids;2268 const int numvertices=3; 2269 const int numdof=2*numvertices; 2302 2270 const int NDOF2=2; 2303 double xyz_list[num grids][3];2271 double xyz_list[numvertices][3]; 2304 2272 2305 2273 /* grid data: */ 2306 double vx_list[num grids];2307 double vy_list[num grids];2308 double obs_vx_list[num grids];2309 double obs_vy_list[num grids];2310 double misfit_square_list[num grids];2311 double misfit_list[num grids];2312 double weights_list[num grids];2274 double vx_list[numvertices]; 2275 double vy_list[numvertices]; 2276 double obs_vx_list[numvertices]; 2277 double obs_vy_list[numvertices]; 2278 double misfit_square_list[numvertices]; 2279 double misfit_list[numvertices]; 2280 double weights_list[numvertices]; 2313 2281 2314 2282 /* gaussian points: */ … … 2320 2288 double gauss_weight; 2321 2289 double gauss_l1l2l3[3]; 2322 double gaussgrids[num grids][numgrids]={{1,0,0},{0,1,0},{0,0,1}};2290 double gaussgrids[numvertices][numvertices]={{1,0,0},{0,1,0},{0,0,1}}; 2323 2291 2324 2292 /* parameters: */ … … 2345 2313 2346 2314 /* Get node coordinates and dof list: */ 2347 GetVerticesCoordinates(&xyz_list[0][0], nodes, num grids);2315 GetVerticesCoordinates(&xyz_list[0][0], nodes, numvertices); 2348 2316 2349 2317 /* Recover input data: */ … … 2375 2343 * obs 2376 2344 */ 2377 for (i=0;i<num grids;i++){2345 for (i=0;i<numvertices;i++){ 2378 2346 velocity_mag=sqrt(pow(vx_list[i],(double)2)+pow(vy_list[i],(double)2))+epsvel; //epsvel to avoid velocity being nil. 2379 2347 obs_velocity_mag=sqrt(pow(obs_vx_list[i],(double)2)+pow(obs_vy_list[i],(double)2))+epsvel; //epsvel to avoid observed velocity being nil. … … 2382 2350 2383 2351 /*Process units: */ 2384 if(process_units)UnitConversion(&misfit_list[0],num grids,IuToExtEnum,SurfaceLogVelMisfitEnum,this->parameters);2352 if(process_units)UnitConversion(&misfit_list[0],numvertices,IuToExtEnum,SurfaceLogVelMisfitEnum,this->parameters); 2385 2353 2386 2354 /*Apply weights to misfits*/ 2387 for (i=0;i<num grids;i++){2355 for (i=0;i<numvertices;i++){ 2388 2356 misfit_list[i]=weights_list[i]*misfit_list[i]; 2389 2357 } … … 2428 2396 2429 2397 /* node data: */ 2430 const int num grids=3;2431 const int numdof=2*num grids;2398 const int numvertices=3; 2399 const int numdof=2*numvertices; 2432 2400 const int NDOF2=2; 2433 double xyz_list[num grids][3];2401 double xyz_list[numvertices][3]; 2434 2402 2435 2403 /* grid data: */ 2436 double vx_list[num grids];2437 double vy_list[num grids];2438 double obs_vx_list[num grids];2439 double obs_vy_list[num grids];2440 double misfit_square_list[num grids];2441 double misfit_list[num grids];2442 double weights_list[num grids];2404 double vx_list[numvertices]; 2405 double vy_list[numvertices]; 2406 double obs_vx_list[numvertices]; 2407 double obs_vy_list[numvertices]; 2408 double misfit_square_list[numvertices]; 2409 double misfit_list[numvertices]; 2410 double weights_list[numvertices]; 2443 2411 2444 2412 /* gaussian points: */ … … 2450 2418 double gauss_weight; 2451 2419 double gauss_l1l2l3[3]; 2452 double gaussgrids[num grids][numgrids]={{1,0,0},{0,1,0},{0,0,1}};2420 double gaussgrids[numvertices][numvertices]={{1,0,0},{0,1,0},{0,0,1}}; 2453 2421 2454 2422 /* parameters: */ … … 2477 2445 2478 2446 /* Get node coordinates and dof list: */ 2479 GetVerticesCoordinates(&xyz_list[0][0], nodes, num grids);2447 GetVerticesCoordinates(&xyz_list[0][0], nodes, numvertices); 2480 2448 2481 2449 /* Recover input data: */ … … 2507 2475 * obs obs 2508 2476 */ 2509 for (i=0;i<num grids;i++){2477 for (i=0;i<numvertices;i++){ 2510 2478 misfit_list[i]=0.5*pow(meanvel,(double)2)*( 2511 2479 pow(log((fabs(vx_list[i])+epsvel)/(fabs(obs_vx_list[i])+epsvel)),(double)2) + … … 2514 2482 2515 2483 /*Process units: */ 2516 if(process_units)UnitConversion(&misfit_list[0],num grids,IuToExtEnum,SurfaceLogVxVyMisfitEnum,this->parameters);2484 if(process_units)UnitConversion(&misfit_list[0],numvertices,IuToExtEnum,SurfaceLogVxVyMisfitEnum,this->parameters); 2517 2485 2518 2486 /*Apply weights to misfits*/ 2519 for (i=0;i<num grids;i++){2487 for (i=0;i<numvertices;i++){ 2520 2488 misfit_list[i]=weights_list[i]*misfit_list[i]; 2521 2489 } … … 2560 2528 2561 2529 /* node data: */ 2562 const int num grids=3;2563 const int numdof=2*num grids;2530 const int numvertices=3; 2531 const int numdof=2*numvertices; 2564 2532 const int NDOF2=2; 2565 double xyz_list[num grids][3];2533 double xyz_list[numvertices][3]; 2566 2534 2567 2535 /* grid data: */ 2568 double vx_list[num grids];2569 double vy_list[num grids];2570 double obs_vx_list[num grids];2571 double obs_vy_list[num grids];2572 double misfit_square_list[num grids];2573 double misfit_list[num grids];2574 double weights_list[num grids];2536 double vx_list[numvertices]; 2537 double vy_list[numvertices]; 2538 double obs_vx_list[numvertices]; 2539 double obs_vy_list[numvertices]; 2540 double misfit_square_list[numvertices]; 2541 double misfit_list[numvertices]; 2542 double weights_list[numvertices]; 2575 2543 2576 2544 /* gaussian points: */ … … 2582 2550 double gauss_weight; 2583 2551 double gauss_l1l2l3[3]; 2584 double gaussgrids[num grids][numgrids]={{1,0,0},{0,1,0},{0,0,1}};2552 double gaussgrids[numvertices][numvertices]={{1,0,0},{0,1,0},{0,0,1}}; 2585 2553 2586 2554 /* parameters: */ … … 2609 2577 2610 2578 /* Get node coordinates and dof list: */ 2611 GetVerticesCoordinates(&xyz_list[0][0], nodes, num grids);2579 GetVerticesCoordinates(&xyz_list[0][0], nodes, numvertices); 2612 2580 2613 2581 /* Recover input data: */ … … 2639 2607 * S obs obs 2640 2608 */ 2641 for (i=0;i<num grids;i++) misfit_square_list[i]=pow(vx_list[i]-obs_vx_list[i],2)+pow(vy_list[i]-obs_vx_list[i],2);2609 for (i=0;i<numvertices;i++) misfit_square_list[i]=pow(vx_list[i]-obs_vx_list[i],2)+pow(vy_list[i]-obs_vx_list[i],2); 2642 2610 2643 2611 /*Process units: */ 2644 if(process_units)UnitConversion(&misfit_square_list[0],num grids,IuToExtEnum,SurfaceAverageVelMisfitEnum,this->parameters);2612 if(process_units)UnitConversion(&misfit_square_list[0],numvertices,IuToExtEnum,SurfaceAverageVelMisfitEnum,this->parameters); 2645 2613 2646 2614 /*Take the square root, and scale by surface: */ 2647 for (i=0;i<num grids;i++)misfit_list[i]=pow(misfit_square_list[i],2)/S;2615 for (i=0;i<numvertices;i++)misfit_list[i]=pow(misfit_square_list[i],2)/S; 2648 2616 2649 2617 /*Apply weights to misfits*/ 2650 for (i=0;i<num grids;i++){2618 for (i=0;i<numvertices;i++){ 2651 2619 misfit_list[i]=weights_list[i]*misfit_list[i]; 2652 2620 } … … 2760 2728 2761 2729 /* node data: */ 2762 int num grids=3;2763 double xyz_list[num grids][3];2730 int numvertices=3; 2731 double xyz_list[numvertices][3]; 2764 2732 double v13[3]; 2765 2733 double v23[3]; … … 2776 2744 2777 2745 /* Get node coordinates and dof list: */ 2778 GetVerticesCoordinates(&xyz_list[0][0], nodes, num grids);2746 GetVerticesCoordinates(&xyz_list[0][0], nodes, numvertices); 2779 2747 2780 2748 for (i=0;i<3;i++){ … … 3026 2994 3027 2995 /* node data: */ 3028 const int num grids=3;2996 const int numvertices=3; 3029 2997 const int NDOF1=1; 3030 const int numdof=NDOF1*num grids;3031 double xyz_list[num grids][3];2998 const int numdof=NDOF1*numvertices; 2999 double xyz_list[numvertices][3]; 3032 3000 int* doflist=NULL; 3033 3001 … … 3042 3010 3043 3011 /* matrices: */ 3044 double L[num grids];3045 double B[2][num grids];3046 double Bprime[2][num grids];3012 double L[numvertices]; 3013 double B[2][numvertices]; 3014 double Bprime[2][numvertices]; 3047 3015 double DL[2][2]={0.0}; 3048 3016 double DLprime[2][2]={0.0}; … … 3073 3041 3074 3042 /* Get node coordinates and dof list: */ 3075 GetVerticesCoordinates(&xyz_list[0][0], nodes, num grids);3043 GetVerticesCoordinates(&xyz_list[0][0], nodes, numvertices); 3076 3044 GetDofList(&doflist); 3077 3045 … … 3192 3160 3193 3161 /* node data: */ 3194 const int num grids=3;3162 const int numvertices=3; 3195 3163 const int NDOF1=1; 3196 const int numdof=NDOF1*num grids;3197 double xyz_list[num grids][3];3164 const int numdof=NDOF1*numvertices; 3165 double xyz_list[numvertices][3]; 3198 3166 int* doflist=NULL; 3199 3167 … … 3208 3176 3209 3177 /* matrices: */ 3210 double B[2][num grids];3211 double Bprime[2][num grids];3178 double B[2][numvertices]; 3179 double Bprime[2][numvertices]; 3212 3180 double DL[2][2]={0.0}; 3213 3181 double DLprime[2][2]={0.0}; … … 3227 3195 3228 3196 /* Get node coordinates and dof list: */ 3229 GetVerticesCoordinates(&xyz_list[0][0], nodes, num grids);3197 GetVerticesCoordinates(&xyz_list[0][0], nodes, numvertices); 3230 3198 GetDofList(&doflist); 3231 3199 this->parameters->FindParam(&dim,DimEnum); … … 3293 3261 3294 3262 /* node data: */ 3295 const int num grids=3;3263 const int numvertices=3; 3296 3264 const int NDOF1=1; 3297 const int numdof=NDOF1*num grids;3298 double xyz_list[num grids][3];3265 const int numdof=NDOF1*numvertices; 3266 double xyz_list[numvertices][3]; 3299 3267 int* doflist=NULL; 3300 double gaussgrids[num grids][numgrids]={{1,0,0},{0,1,0},{0,0,1}};3268 double gaussgrids[numvertices][numvertices]={{1,0,0},{0,1,0},{0,0,1}}; 3301 3269 3302 3270 /* gaussian points: */ … … 3310 3278 3311 3279 /* matrices: */ 3312 double L[num grids];3313 double B[2][num grids];3314 double Bprime[2][num grids];3280 double L[numvertices]; 3281 double B[2][numvertices]; 3282 double Bprime[2][numvertices]; 3315 3283 double DL[2][2]={0.0}; 3316 3284 double DLprime[2][2]={0.0}; … … 3347 3315 3348 3316 /* Get node coordinates and dof list: */ 3349 GetVerticesCoordinates(&xyz_list[0][0], nodes, num grids);3317 GetVerticesCoordinates(&xyz_list[0][0], nodes, numvertices); 3350 3318 GetDofList(&doflist); 3351 3319 … … 3363 3331 /*Modify z so that it reflects the surface*/ 3364 3332 surface_input->GetParameterValues(&surface_list[0],&gaussgrids[0][0],3); 3365 for(i=0;i<num grids;i++) xyz_list[i][2]=surface_list[i];3333 for(i=0;i<numvertices;i++) xyz_list[i][2]=surface_list[i]; 3366 3334 3367 3335 /*Get normal vector to the surface*/ … … 3473 3441 3474 3442 /* node data: */ 3475 const int num grids=3;3476 const int numdof=2*num grids;3477 double xyz_list[num grids][3];3443 const int numvertices=3; 3444 const int numdof=2*numvertices; 3445 double xyz_list[numvertices][3]; 3478 3446 int* doflist=NULL; 3479 3447 … … 3533 3501 3534 3502 /* Get node coordinates and dof list: */ 3535 GetVerticesCoordinates(&xyz_list[0][0], nodes, num grids);3503 GetVerticesCoordinates(&xyz_list[0][0], nodes, numvertices); 3536 3504 GetDofList(&doflist,MacAyealApproximationEnum); 3537 3505 … … 4041 4009 int i; 4042 4010 int connectivity; 4043 const int num grids=3;4011 const int numvertices=3; 4044 4012 const int NDOF2=2; 4045 const int numdofs=num grids*NDOF2;4013 const int numdofs=numvertices*NDOF2; 4046 4014 int* doflist=NULL; 4047 4015 … … 4078 4046 4079 4047 /* node data: */ 4080 const int num grids=3;4048 const int numvertices=3; 4081 4049 const int NDOF1=1; 4082 const int numdof=NDOF1*num grids;4083 double xyz_list[num grids][3];4050 const int numdof=NDOF1*numvertices; 4051 double xyz_list[numvertices][3]; 4084 4052 int* doflist=NULL; 4085 4053 … … 4114 4082 4115 4083 /* Get node coordinates and dof list: */ 4116 GetVerticesCoordinates(&xyz_list[0][0], nodes, num grids);4084 GetVerticesCoordinates(&xyz_list[0][0], nodes, numvertices); 4117 4085 GetDofList(&doflist); 4118 4086 … … 4195 4163 int i,j; 4196 4164 4197 const int num grids=3;4165 const int numvertices=3; 4198 4166 const int NDOF1=1; 4199 const int numdof=num grids*NDOF1;4167 const int numdof=numvertices*NDOF1; 4200 4168 int* doflist=NULL; 4201 4169 4202 4170 /*Grid data: */ 4203 double xyz_list[num grids][3];4171 double xyz_list[numvertices][3]; 4204 4172 4205 4173 /*Material constants */ … … 4228 4196 4229 4197 /* Get node coordinates and dof list: */ 4230 GetVerticesCoordinates(&xyz_list[0][0], nodes, num grids);4198 GetVerticesCoordinates(&xyz_list[0][0], nodes, numvertices); 4231 4199 GetDofList(&doflist); 4232 4200 … … 4254 4222 MatrixMultiply(&tLD[0],numdof,1,0,&L[0],1,numdof,0,&Ke_gaussian[0][0],0); 4255 4223 4256 for(i=0;i<num grids;i++){4257 for(j=0;j<num grids;j++){4224 for(i=0;i<numvertices;i++){ 4225 for(j=0;j<numvertices;j++){ 4258 4226 K_terms[i][j]+=Ke_gaussian[i][j]; 4259 4227 } … … 4278 4246 4279 4247 /* node data: */ 4280 const int num grids=3;4248 const int numvertices=3; 4281 4249 const int NDOF1=1; 4282 const int numdof=NDOF1*num grids;4283 double xyz_list[num grids][3];4250 const int numdof=NDOF1*numvertices; 4251 double xyz_list[numvertices][3]; 4284 4252 int* doflist=NULL; 4285 4253 int numberofdofspernode=1; … … 4295 4263 4296 4264 /* matrices: */ 4297 double L[num grids];4298 double B[2][num grids];4299 double Bprime[2][num grids];4265 double L[numvertices]; 4266 double B[2][numvertices]; 4267 double Bprime[2][numvertices]; 4300 4268 double DL[2][2]={0.0}; 4301 4269 double DLprime[2][2]={0.0}; … … 4330 4298 4331 4299 /* Get node coordinates and dof list: */ 4332 GetVerticesCoordinates(&xyz_list[0][0], nodes, num grids);4300 GetVerticesCoordinates(&xyz_list[0][0], nodes, numvertices); 4333 4301 GetDofList(&doflist); 4334 4302 … … 4459 4427 4460 4428 /* node data: */ 4461 const int num grids=3;4429 const int numvertices=3; 4462 4430 const int NDOF1=1; 4463 const int numdof=NDOF1*num grids;4464 double xyz_list[num grids][3];4431 const int numdof=NDOF1*numvertices; 4432 double xyz_list[numvertices][3]; 4465 4433 int* doflist=NULL; 4466 4434 int numberofdofspernode=1; … … 4476 4444 4477 4445 /* matrices: */ 4478 double L[num grids];4479 double B[2][num grids];4480 double Bprime[2][num grids];4446 double L[numvertices]; 4447 double B[2][numvertices]; 4448 double Bprime[2][numvertices]; 4481 4449 double DL[2][2]={0.0}; 4482 4450 double DLprime[2][2]={0.0}; … … 4502 4470 4503 4471 /* Get node coordinates and dof list: */ 4504 GetVerticesCoordinates(&xyz_list[0][0], nodes, num grids);4472 GetVerticesCoordinates(&xyz_list[0][0], nodes, numvertices); 4505 4473 GetDofList(&doflist); 4506 4474 … … 4632 4600 4633 4601 /* node data: */ 4634 const int num grids=3;4602 const int numvertices=3; 4635 4603 const int NDOF1=1; 4636 const int numdof=NDOF1*num grids;4637 double xyz_list[num grids][3];4604 const int numdof=NDOF1*numvertices; 4605 double xyz_list[numvertices][3]; 4638 4606 int* doflist=NULL; 4639 4607 … … 4656 4624 double K_terms[numdof][numdof]={0.0}; 4657 4625 double Ke_gaussian[numdof][numdof]={0.0}; 4658 double l1l2l3[num grids];4626 double l1l2l3[numvertices]; 4659 4627 double tl1l2l3D[3]; 4660 4628 double D_scalar; … … 4667 4635 4668 4636 /* Get node coordinates and dof list: */ 4669 GetVerticesCoordinates(&xyz_list[0][0], nodes, num grids);4637 GetVerticesCoordinates(&xyz_list[0][0], nodes, numvertices); 4670 4638 GetDofList(&doflist); 4671 4639 … … 4726 4694 4727 4695 /* node data: */ 4728 const int num grids=3;4696 const int numvertices=3; 4729 4697 const int NDOF1=1; 4730 const int numdof=NDOF1*num grids;4731 double xyz_list[num grids][3];4698 const int numdof=NDOF1*numvertices; 4699 double xyz_list[numvertices][3]; 4732 4700 int* doflist=NULL; 4733 4701 int numberofdofspernode=1; … … 4743 4711 4744 4712 /* matrix */ 4745 double pe_g[num grids]={0.0};4746 double L[num grids];4713 double pe_g[numvertices]={0.0}; 4714 double L[numvertices]; 4747 4715 double Jdettria; 4748 4716 … … 4758 4726 4759 4727 /* Get node coordinates and dof list: */ 4760 GetVerticesCoordinates(&xyz_list[0][0], nodes, num grids);4728 GetVerticesCoordinates(&xyz_list[0][0], nodes, numvertices); 4761 4729 GetDofList(&doflist); 4762 4730 … … 4810 4778 4811 4779 /* node data: */ 4812 const int num grids=3;4780 const int numvertices=3; 4813 4781 const int NDOF1=1; 4814 const int numdof=NDOF1*num grids;4815 double xyz_list[num grids][3];4782 const int numdof=NDOF1*numvertices; 4783 double xyz_list[numvertices][3]; 4816 4784 int* doflist=NULL; 4817 4785 int numberofdofspernode=1; … … 4827 4795 4828 4796 /* matrix */ 4829 double pe_g[num grids]={0.0};4830 double L[num grids];4797 double pe_g[numvertices]={0.0}; 4798 double L[numvertices]; 4831 4799 double Jdettria; 4832 4800 … … 4842 4810 4843 4811 /* Get node coordinates and dof list: */ 4844 GetVerticesCoordinates(&xyz_list[0][0], nodes, num grids);4812 GetVerticesCoordinates(&xyz_list[0][0], nodes, numvertices); 4845 4813 GetDofList(&doflist); 4846 4814 … … 4894 4862 4895 4863 /* node data: */ 4896 const int num grids=3;4864 const int numvertices=3; 4897 4865 const int NDOF1=1; 4898 const int numdof=NDOF1*num grids;4899 double xyz_list[num grids][3];4866 const int numdof=NDOF1*numvertices; 4867 double xyz_list[numvertices][3]; 4900 4868 int* doflist=NULL; 4901 4869 int numberofdofspernode=1; … … 4911 4879 4912 4880 /* matrix */ 4913 double pe_g[num grids]={0.0};4914 double L[num grids];4881 double pe_g[numvertices]={0.0}; 4882 double L[numvertices]; 4915 4883 double Jdettria; 4916 4884 … … 4924 4892 4925 4893 /* Get node coordinates and dof list: */ 4926 GetVerticesCoordinates(&xyz_list[0][0], nodes, num grids);4894 GetVerticesCoordinates(&xyz_list[0][0], nodes, numvertices); 4927 4895 GetDofList(&doflist); 4928 4896 … … 4974 4942 4975 4943 /* node data: */ 4976 const int num grids=3;4944 const int numvertices=3; 4977 4945 const int NDOF1=1; 4978 const int numdof=NDOF1*num grids;4979 double xyz_list[num grids][3];4946 const int numdof=NDOF1*numvertices; 4947 double xyz_list[numvertices][3]; 4980 4948 int* doflist=NULL; 4981 4949 … … 5000 4968 5001 4969 /* matrices: */ 5002 double L[num grids];4970 double L[numvertices]; 5003 4971 5004 4972 /*input parameters for structural analysis (diagnostic): */ … … 5015 4983 5016 4984 /* Get node coordinates and dof list: */ 5017 GetVerticesCoordinates(&xyz_list[0][0], nodes, num grids);4985 GetVerticesCoordinates(&xyz_list[0][0], nodes, numvertices); 5018 4986 GetDofList(&doflist); 5019 4987 … … 5056 5024 5057 5025 /*Build gaussian vector: */ 5058 for(i=0;i<num grids;i++){5026 for(i=0;i<numvertices;i++){ 5059 5027 pe_g_gaussian[i]=-Jdet*gauss_weight*(vx*dbdx+vy*dbdy-meltingvalue)*L[i]; 5060 5028 } … … 5082 5050 5083 5051 /* node data: */ 5084 const int num grids=3;5085 const int numdof=2*num grids;5052 const int numvertices=3; 5053 const int numdof=2*numvertices; 5086 5054 const int NDOF2=2; 5087 double xyz_list[num grids][3];5055 double xyz_list[numvertices][3]; 5088 5056 int* doflist=NULL; 5089 5057 … … 5133 5101 5134 5102 /* Get node coordinates and dof list: */ 5135 GetVerticesCoordinates(&xyz_list[0][0], nodes, num grids);5103 GetVerticesCoordinates(&xyz_list[0][0], nodes, numvertices); 5136 5104 GetDofList(&doflist,MacAyealApproximationEnum); 5137 5105 … … 5169 5137 /*Build pe_g_gaussian vector: */ 5170 5138 if(drag_type==1){ 5171 for (i=0;i<num grids;i++){5139 for (i=0;i<numvertices;i++){ 5172 5140 for (j=0;j<NDOF2;j++){ 5173 5141 pe_g_gaussian[i*NDOF2+j]=(-driving_stress_baseline*slope[j]-plastic_stress)*Jdet*gauss_weight*l1l2l3[i]; … … 5176 5144 } 5177 5145 else { 5178 for (i=0;i<num grids;i++){5146 for (i=0;i<numvertices;i++){ 5179 5147 for (j=0;j<NDOF2;j++){ 5180 5148 pe_g_gaussian[i*NDOF2+j]=-driving_stress_baseline*slope[j]*Jdet*gauss_weight*l1l2l3[i]; … … 5205 5173 5206 5174 /* node data: */ 5207 const int num grids=3;5208 const int numdof=1*num grids;5209 double xyz_list[num grids][3];5175 const int numvertices=3; 5176 const int numdof=1*numvertices; 5177 double xyz_list[numvertices][3]; 5210 5178 int* doflist=NULL; 5211 5179 … … 5238 5206 5239 5207 /* Get node coordinates and dof list: */ 5240 GetVerticesCoordinates(&xyz_list[0][0], nodes, num grids);5208 GetVerticesCoordinates(&xyz_list[0][0], nodes, numvertices); 5241 5209 GetDofList(&doflist); 5242 5210 … … 5268 5236 weights_input->GetParameterValue(&weight, &gauss_l1l2l3[0]); 5269 5237 5270 for (i=0;i<num grids;i++){5238 for (i=0;i<numvertices;i++){ 5271 5239 pe_g_gaussian[i]=(thicknessobs-thickness)*weight*Jdet*gauss_weight*l1l2l3[i]; 5272 5240 } … … 5295 5263 5296 5264 /* node data: */ 5297 const int num grids=3;5298 const int numdof=2*num grids;5265 const int numvertices=3; 5266 const int numdof=2*numvertices; 5299 5267 const int NDOF2=2; 5300 double xyz_list[num grids][3];5268 double xyz_list[numvertices][3]; 5301 5269 int* doflist=NULL; 5302 double gaussgrids[num grids][numgrids]={{1,0,0},{0,1,0},{0,0,1}};5270 double gaussgrids[numvertices][numvertices]={{1,0,0},{0,1,0},{0,0,1}}; 5303 5271 5304 5272 /* grid data: */ 5305 double vx_list[num grids];5306 double vy_list[num grids];5307 double obs_vx_list[num grids];5308 double obs_vy_list[num grids];5309 double dux_list[num grids];5310 double duy_list[num grids];5311 double weights_list[num grids];5273 double vx_list[numvertices]; 5274 double vy_list[numvertices]; 5275 double obs_vx_list[numvertices]; 5276 double obs_vy_list[numvertices]; 5277 double dux_list[numvertices]; 5278 double duy_list[numvertices]; 5279 double weights_list[numvertices]; 5312 5280 5313 5281 /* gaussian points: */ … … 5347 5315 5348 5316 /* Get node coordinates and dof list: */ 5349 GetVerticesCoordinates(&xyz_list[0][0], nodes, num grids);5317 GetVerticesCoordinates(&xyz_list[0][0], nodes, numvertices); 5350 5318 GetDofList(&doflist); 5351 5319 … … 5388 5356 * du obs 5389 5357 */ 5390 for (i=0;i<num grids;i++){5358 for (i=0;i<numvertices;i++){ 5391 5359 dux_list[i]=obs_vx_list[i]-vx_list[i]; 5392 5360 duy_list[i]=obs_vy_list[i]-vy_list[i]; … … 5406 5374 * obs 5407 5375 */ 5408 for (i=0;i<num grids;i++){5376 for (i=0;i<numvertices;i++){ 5409 5377 scalex=pow(meanvel/(obs_vx_list[i]+epsvel),2); 5410 5378 scaley=pow(meanvel/(obs_vy_list[i]+epsvel),2); … … 5428 5396 * 5429 5397 */ 5430 for (i=0;i<num grids;i++){5398 for (i=0;i<numvertices;i++){ 5431 5399 velocity_mag=sqrt(pow(vx_list[i],2)+pow(vy_list[i],2))+epsvel; //epsvel to avoid velocity being nil. 5432 5400 obs_velocity_mag=sqrt(pow(obs_vx_list[i],2)+pow(obs_vy_list[i],2))+epsvel; //epsvel to avoid observed velocity being nil. … … 5447 5415 * du S 2 sqrt(...) obs 5448 5416 */ 5449 for (i=0;i<num grids;i++){5417 for (i=0;i<numvertices;i++){ 5450 5418 scale=1.0/(S*sqrt(pow(vx_list[i]-obs_vx_list[i],2)+pow(vy_list[i]-obs_vx_list[i],2))+epsvel); 5451 5419 dux_list[i]=scale*(obs_vx_list[i]-vx_list[i]); … … 5464 5432 * du |u| + eps |u| u + eps 5465 5433 */ 5466 for (i=0;i<num grids;i++){5434 for (i=0;i<numvertices;i++){ 5467 5435 dux_list[i] = - pow(meanvel,(double)2)*( 5468 5436 log((fabs(vx_list[i])+epsvel)/(fabs(obs_vx_list[i])+epsvel)) * 1/(vx_list[i]+epsvel)); … … 5477 5445 5478 5446 /*Apply weights to DU*/ 5479 for (i=0;i<num grids;i++){5447 for (i=0;i<numvertices;i++){ 5480 5448 dux_list[i]=weights_list[i]*dux_list[i]; 5481 5449 duy_list[i]=weights_list[i]*duy_list[i]; … … 5506 5474 5507 5475 /*compute Du*/ 5508 for (i=0;i<num grids;i++){5476 for (i=0;i<numvertices;i++){ 5509 5477 pe_g_gaussian[i*NDOF2+0]=dux*Jdet*gauss_weight*l1l2l3[i]; 5510 5478 pe_g_gaussian[i*NDOF2+1]=duy*Jdet*gauss_weight*l1l2l3[i]; … … 5534 5502 5535 5503 /* node data: */ 5536 const int num grids=3;5504 const int numvertices=3; 5537 5505 const int NDOF4=4; 5538 const int numdof=NDOF4*num grids;5539 double xyz_list[num grids][3];5506 const int numdof=NDOF4*numvertices; 5507 double xyz_list[numvertices][3]; 5540 5508 int* doflist=NULL; 5541 double gaussgrids[num grids][numgrids]={{1,0,0},{0,1,0},{0,0,1}};5509 double gaussgrids[numvertices][numvertices]={{1,0,0},{0,1,0},{0,0,1}}; 5542 5510 5543 5511 /* grid data: */ 5544 double vx_list[num grids];5545 double vy_list[num grids];5546 double obs_vx_list[num grids];5547 double obs_vy_list[num grids];5548 double dux_list[num grids];5549 double duy_list[num grids];5550 double weights_list[num grids];5512 double vx_list[numvertices]; 5513 double vy_list[numvertices]; 5514 double obs_vx_list[numvertices]; 5515 double obs_vy_list[numvertices]; 5516 double dux_list[numvertices]; 5517 double duy_list[numvertices]; 5518 double weights_list[numvertices]; 5551 5519 5552 5520 /* gaussian points: */ … … 5586 5554 5587 5555 /* Get node coordinates and dof list: */ 5588 GetVerticesCoordinates(&xyz_list[0][0], nodes, num grids);5556 GetVerticesCoordinates(&xyz_list[0][0], nodes, numvertices); 5589 5557 GetDofList(&doflist); 5590 5558 … … 5627 5595 * du obs 5628 5596 */ 5629 for (i=0;i<num grids;i++){5597 for (i=0;i<numvertices;i++){ 5630 5598 dux_list[i]=obs_vx_list[i]-vx_list[i]; 5631 5599 duy_list[i]=obs_vy_list[i]-vy_list[i]; … … 5645 5613 * obs 5646 5614 */ 5647 for (i=0;i<num grids;i++){5615 for (i=0;i<numvertices;i++){ 5648 5616 scalex=pow(meanvel/(obs_vx_list[i]+epsvel),2); 5649 5617 scaley=pow(meanvel/(obs_vy_list[i]+epsvel),2); … … 5667 5635 * 5668 5636 */ 5669 for (i=0;i<num grids;i++){5637 for (i=0;i<numvertices;i++){ 5670 5638 velocity_mag=sqrt(pow(vx_list[i],2)+pow(vy_list[i],2))+epsvel; //epsvel to avoid velocity being nil. 5671 5639 obs_velocity_mag=sqrt(pow(obs_vx_list[i],2)+pow(obs_vy_list[i],2))+epsvel; //epsvel to avoid observed velocity being nil. … … 5686 5654 * du S 2 sqrt(...) obs 5687 5655 */ 5688 for (i=0;i<num grids;i++){5656 for (i=0;i<numvertices;i++){ 5689 5657 scale=1.0/(S*sqrt(pow(vx_list[i]-obs_vx_list[i],2)+pow(vy_list[i]-obs_vx_list[i],2))+epsvel); 5690 5658 dux_list[i]=scale*(obs_vx_list[i]-vx_list[i]); … … 5703 5671 * du |u| + eps |u| u + eps 5704 5672 */ 5705 for (i=0;i<num grids;i++){5673 for (i=0;i<numvertices;i++){ 5706 5674 dux_list[i] = - pow(meanvel,(double)2)*( 5707 5675 log((fabs(vx_list[i])+epsvel)/(fabs(obs_vx_list[i])+epsvel)) * 1/(vx_list[i]+epsvel)); … … 5716 5684 5717 5685 /*Apply weights to DU*/ 5718 for (i=0;i<num grids;i++){5686 for (i=0;i<numvertices;i++){ 5719 5687 dux_list[i]=weights_list[i]*dux_list[i]; 5720 5688 duy_list[i]=weights_list[i]*duy_list[i]; … … 5745 5713 5746 5714 /*compute Du*/ 5747 for (i=0;i<num grids;i++){5715 for (i=0;i<numvertices;i++){ 5748 5716 pe_g[i*NDOF4+0]+=dux*Jdet*gauss_weight*l1l2l3[i]; 5749 5717 pe_g[i*NDOF4+1]+=duy*Jdet*gauss_weight*l1l2l3[i]; … … 5767 5735 /*Collapsed formulation: */ 5768 5736 int i; 5769 const int num grids=3;5737 const int numvertices=3; 5770 5738 const int NDOF2=2; 5771 const int numdofs=NDOF2*num grids;5739 const int numdofs=NDOF2*numvertices; 5772 5740 int* doflist=NULL; 5773 5741 double constant_part,ub,vb; … … 5784 5752 Input* slopey_input=NULL; 5785 5753 Input* thickness_input=NULL; 5786 double gauss[num grids][numgrids] = {{1,0,0},{0,1,0},{0,0,1}}; //TO BE DELETED5754 double gauss[numvertices][numvertices] = {{1,0,0},{0,1,0},{0,0,1}}; //TO BE DELETED 5787 5755 5788 5756 /*recover some inputs: */ … … 5840 5808 5841 5809 /* node data: */ 5842 const int num grids=3;5810 const int numvertices=3; 5843 5811 const int NDOF1=1; 5844 const int numdof=NDOF1*num grids;5845 double xyz_list[num grids][3];5812 const int numdof=NDOF1*numvertices; 5813 double xyz_list[numvertices][3]; 5846 5814 int* doflist=NULL; 5847 5815 int numberofdofspernode=1; … … 5857 5825 5858 5826 /* matrix */ 5859 double pe_g[num grids]={0.0};5860 double L[num grids];5827 double pe_g[numvertices]={0.0}; 5828 double L[numvertices]; 5861 5829 double Jdettria; 5862 5830 … … 5876 5844 5877 5845 /* Get node coordinates and dof list: */ 5878 GetVerticesCoordinates(&xyz_list[0][0], nodes, num grids);5846 GetVerticesCoordinates(&xyz_list[0][0], nodes, numvertices); 5879 5847 GetDofList(&doflist); 5880 5848 … … 5930 5898 5931 5899 /* node data: */ 5932 const int num grids=3;5900 const int numvertices=3; 5933 5901 const int NDOF1=1; 5934 const int numdof=NDOF1*num grids;5935 double xyz_list[num grids][3];5902 const int numdof=NDOF1*numvertices; 5903 double xyz_list[numvertices][3]; 5936 5904 int* doflist=NULL; 5937 5905 int numberofdofspernode=1; … … 5947 5915 5948 5916 /* matrix */ 5949 double pe_g[num grids]={0.0};5950 double L[num grids];5917 double pe_g[numvertices]={0.0}; 5918 double L[numvertices]; 5951 5919 double Jdettria; 5952 5920 … … 5964 5932 5965 5933 /* Get node coordinates and dof list: */ 5966 GetVerticesCoordinates(&xyz_list[0][0], nodes, num grids);5934 GetVerticesCoordinates(&xyz_list[0][0], nodes, numvertices); 5967 5935 GetDofList(&doflist); 5968 5936 … … 6016 5984 6017 5985 /* node data: */ 6018 const int num grids=3;5986 const int numvertices=3; 6019 5987 const int NDOF1=1; 6020 const int numdof=NDOF1*num grids;6021 double xyz_list[num grids][3];5988 const int numdof=NDOF1*numvertices; 5989 double xyz_list[numvertices][3]; 6022 5990 int* doflist=NULL; 6023 5991 … … 6050 6018 6051 6019 /* Get node coordinates and dof list: */ 6052 GetVerticesCoordinates(&xyz_list[0][0], nodes, num grids);6020 GetVerticesCoordinates(&xyz_list[0][0], nodes, numvertices); 6053 6021 GetDofList(&doflist); 6054 6022 … … 6109 6077 int i,found; 6110 6078 6111 const int num grids=3;6079 const int numvertices=3; 6112 6080 const int NDOF1=1; 6113 const int numdof=num grids*NDOF1;6081 const int numdof=numvertices*NDOF1; 6114 6082 int* doflist=NULL; 6115 double xyz_list[num grids][3];6083 double xyz_list[numvertices][3]; 6116 6084 6117 6085 double mixed_layer_capacity; … … 6139 6107 double Jdet; 6140 6108 double P_terms[numdof]={0.0}; 6141 double l1l2l3[num grids];6109 double l1l2l3[numvertices]; 6142 6110 6143 6111 double t_pmp; … … 6148 6116 6149 6117 /* Get node coordinates and dof list: */ 6150 GetVerticesCoordinates(&xyz_list[0][0], nodes, num grids);6118 GetVerticesCoordinates(&xyz_list[0][0], nodes, numvertices); 6151 6119 GetDofList(&doflist); 6152 6120 … … 6214 6182 int i,found; 6215 6183 6216 const int num grids=3;6184 const int numvertices=3; 6217 6185 const int NDOF1=1; 6218 const int numdof=num grids*NDOF1;6186 const int numdof=numvertices*NDOF1; 6219 6187 int* doflist=NULL; 6220 double xyz_list[num grids][3];6188 double xyz_list[numvertices][3]; 6221 6189 6222 6190 double rho_ice; … … 6232 6200 double alpha2,vx,vy; 6233 6201 double geothermalflux_value; 6234 double alpha2_list[num grids]; //TO BE DELETED6235 double gauss[num grids][numgrids] = {{1,0,0},{0,1,0},{0,0,1}}; //TO BE DELETED6236 double vx_list[num grids]; //TO BE DELETED6237 double vy_list[num grids]; //TO BE DELETED6238 double basalfriction_list[num grids]; //TO BE DELETED6202 double alpha2_list[numvertices]; //TO BE DELETED 6203 double gauss[numvertices][numvertices] = {{1,0,0},{0,1,0},{0,0,1}}; //TO BE DELETED 6204 double vx_list[numvertices]; //TO BE DELETED 6205 double vy_list[numvertices]; //TO BE DELETED 6206 double basalfriction_list[numvertices]; //TO BE DELETED 6239 6207 6240 6208 /* gaussian points: */ … … 6250 6218 double Jdet; 6251 6219 double P_terms[numdof]={0.0}; 6252 double l1l2l3[num grids];6220 double l1l2l3[numvertices]; 6253 6221 double scalar; 6254 6222 … … 6265 6233 6266 6234 /* Get node coordinates and dof list: */ 6267 GetVerticesCoordinates(&xyz_list[0][0], nodes, num grids);6235 GetVerticesCoordinates(&xyz_list[0][0], nodes, numvertices); 6268 6236 GetDofList(&doflist); 6269 6237 … … 6287 6255 6288 6256 /*COMPUT alpha2_list and basalfriction_list (TO BE DELETED)*/ 6289 for(i=0;i<num grids;i++){6257 for(i=0;i<numvertices;i++){ 6290 6258 friction->GetAlpha2(&alpha2_list[i],&gauss[i][0],VxEnum,VyEnum,VzEnum); //TO BE DELETED 6291 6259 } 6292 6260 vx_input->GetParameterValues(&vx_list[0],&gauss[0][0],3); //TO BE DELETED 6293 6261 vy_input->GetParameterValues(&vy_list[0],&gauss[0][0],3); //TO BE DELETED 6294 for(i=0;i<num grids;i++){6262 for(i=0;i<numvertices;i++){ 6295 6263 basalfriction_list[i]=alpha2_list[i]*(pow(vx_list[i],(double)2.0)+pow(vy_list[i],(double)2.0)); //TO BE DELETED 6296 6264 } … … 6347 6315 6348 6316 double area=0; 6349 const int num grids=3;6350 double xyz_list[num grids][3];6317 const int numvertices=3; 6318 double xyz_list[numvertices][3]; 6351 6319 double x1,y1,x2,y2,x3,y3; 6352 6320 6353 6321 /*Get xyz list: */ 6354 GetVerticesCoordinates(&xyz_list[0][0], nodes, num grids);6322 GetVerticesCoordinates(&xyz_list[0][0], nodes, numvertices); 6355 6323 x1=xyz_list[0][0]; y1=xyz_list[0][1]; 6356 6324 x2=xyz_list[1][0]; y2=xyz_list[1][1]; … … 6365 6333 /*Intermediaries*/ 6366 6334 double area = 0; 6367 const int num grids = 3;6368 double xyz_list[num grids][3];6335 const int numvertices = 3; 6336 double xyz_list[numvertices][3]; 6369 6337 double x1,y1,x2,y2,x3,y3; 6370 6338 … … 6373 6341 6374 6342 /*Get xyz list: */ 6375 GetVerticesCoordinates(&xyz_list[0][0], nodes, num grids);6343 GetVerticesCoordinates(&xyz_list[0][0], nodes, numvertices); 6376 6344 x1=xyz_list[0][0]; y1=xyz_list[0][1]; 6377 6345 x2=xyz_list[1][0]; y2=xyz_list[1][1]; … … 6735 6703 6736 6704 /* node data: */ 6737 const int num grids=3;6705 const int numvertices=3; 6738 6706 const int NDOF2=2; 6739 double xyz_list[num grids][3];6740 int doflist1[num grids];6741 double dh1dh3[NDOF2][num grids];6707 double xyz_list[numvertices][3]; 6708 int doflist1[numvertices]; 6709 double dh1dh3[NDOF2][numvertices]; 6742 6710 6743 6711 /* grid data: */ … … 6754 6722 double gauss_weight; 6755 6723 double gauss_l1l2l3[3]; 6756 double gaussgrids[num grids][numgrids]={{1,0,0},{0,1,0},{0,0,1}};6724 double gaussgrids[numvertices][numvertices]={{1,0,0},{0,1,0},{0,0,1}}; 6757 6725 6758 6726 /* parameters: */ … … 6765 6733 6766 6734 /*element vector at the gaussian points: */ 6767 double grade_g[num grids]={0.0};6768 double grade_g_gaussian[num grids];6735 double grade_g[numvertices]={0.0}; 6736 double grade_g_gaussian[numvertices]; 6769 6737 6770 6738 /* Jacobian: */ … … 6808 6776 6809 6777 /* Get node coordinates and dof list: */ 6810 GetVerticesCoordinates(&xyz_list[0][0], nodes, num grids);6778 GetVerticesCoordinates(&xyz_list[0][0], nodes, numvertices); 6811 6779 GetDofList1(&doflist1[0]); 6812 6780 … … 6861 6829 6862 6830 /*Build gradje_g_gaussian vector (actually -dJ/ddrag): */ 6863 for (i=0;i<num grids;i++){6831 for (i=0;i<numvertices;i++){ 6864 6832 //standard gradient dJ/dki 6865 6833 grade_g_gaussian[i]=( … … 6884 6852 6885 6853 /*Add gradje_g_gaussian vector to gradje_g: */ 6886 for( i=0; i<num grids; i++)grade_g[i]+=grade_g_gaussian[i];6854 for( i=0; i<numvertices; i++)grade_g[i]+=grade_g_gaussian[i]; 6887 6855 } 6888 6856 6889 6857 /*Add grade_g to global vector gradient: */ 6890 VecSetValues(gradient,num grids,doflist1,(const double*)grade_g,ADD_VALUES);6858 VecSetValues(gradient,numvertices,doflist1,(const double*)grade_g,ADD_VALUES); 6891 6859 6892 6860 /*Add grade_g to the inputs of this element: */ -
issm/trunk/src/c/objects/Elements/TriaRef.cpp
r5625 r5629 359 359 } 360 360 /*}}}*/ 361 /*FUNCTION TriaRef::GetJacobianInvert {{{1*/361 /*FUNCTION TriaRef::GetJacobianInvert(double* Jinv, double* xyz_list,double* gauss) {{{1*/ 362 362 void TriaRef::GetJacobianInvert(double* Jinv, double* xyz_list,double* gauss){ 363 364 /*Jacobian*/ 365 double J[2][2]; 366 367 /*Call Jacobian routine to get the jacobian:*/ 368 GetJacobian(&J[0][0], xyz_list, gauss); 369 370 /*Invert Jacobian matrix: */ 371 Matrix2x2Invert(Jinv,&J[0][0]); 372 373 } 374 /*}}}*/ 375 /*FUNCTION TriaRef::GetJacobianInvert(double* Jinv, double* xyz_list,GaussTria* gauss) {{{1*/ 376 void TriaRef::GetJacobianInvert(double* Jinv, double* xyz_list,GaussTria* gauss){ 363 377 364 378 /*Jacobian*/ … … 393 407 } 394 408 /*}}}*/ 395 /*FUNCTION TriaRef::GetNodalFunctionsDerivatives {{{1*/409 /*FUNCTION TriaRef::GetNodalFunctionsDerivatives(double* dh1dh3,double* xyz_list, double* gauss) {{{1*/ 396 410 void TriaRef::GetNodalFunctionsDerivatives(double* dh1dh3,double* xyz_list, double* gauss){ 397 411 … … 422 436 } 423 437 /*}}}*/ 424 /*FUNCTION TriaRef::GetNodalFunctionsDerivativesReference {{{1*/ 438 /*FUNCTION TriaRef::GetNodalFunctionsDerivatives(double* dh1dh3,double* xyz_list, GaussTria* gauss) {{{1*/ 439 void TriaRef::GetNodalFunctionsDerivatives(double* dh1dh3,double* xyz_list, GaussTria* gauss){ 440 441 /*This routine returns the values of the nodal functions derivatives (with respect to the 442 * actual coordinate system): */ 443 int i; 444 const int NDOF2 = 2; 445 const int numgrids = 3; 446 double dh1dh3_ref[NDOF2][numgrids]; 447 double Jinv[NDOF2][NDOF2]; 448 449 /*Get derivative values with respect to parametric coordinate system: */ 450 GetNodalFunctionsDerivativesReference(&dh1dh3_ref[0][0], gauss); 451 452 /*Get Jacobian invert: */ 453 GetJacobianInvert(&Jinv[0][0], xyz_list, gauss); 454 455 /*Build dh1dh3: 456 * 457 * [dhi/dx]= Jinv*[dhi/dr] 458 * [dhi/dy] [dhi/ds] 459 */ 460 for (i=0;i<numgrids;i++){ 461 dh1dh3[numgrids*0+i]=Jinv[0][0]*dh1dh3_ref[0][i]+Jinv[0][1]*dh1dh3_ref[1][i]; 462 dh1dh3[numgrids*1+i]=Jinv[1][0]*dh1dh3_ref[0][i]+Jinv[1][1]*dh1dh3_ref[1][i]; 463 } 464 465 } 466 /*}}}*/ 467 /*FUNCTION TriaRef::GetNodalFunctionsDerivativesReference(double* dl1dl3,double* gauss) {{{1*/ 425 468 void TriaRef::GetNodalFunctionsDerivativesReference(double* dl1dl3,double* gauss){ 426 469 … … 445 488 } 446 489 /*}}}*/ 447 /*FUNCTION TriaRef::GetParameterDerivativeValue {{{1*/ 490 /*FUNCTION TriaRef::GetNodalFunctionsDerivativesReference(double* dl1dl3,GaussTria* gauss) {{{1*/ 491 void TriaRef::GetNodalFunctionsDerivativesReference(double* dl1dl3,GaussTria* gauss){ 492 493 /*This routine returns the values of the nodal functions derivatives (with respect to the 494 * natural coordinate system) at the gaussian point. */ 495 496 const int NDOF2=2; 497 const int numgrids=3; 498 499 /*First nodal function: */ 500 *(dl1dl3+numgrids*0+0)=-0.5; 501 *(dl1dl3+numgrids*1+0)=-1.0/(2.0*SQRT3); 502 503 /*Second nodal function: */ 504 *(dl1dl3+numgrids*0+1)=0.5; 505 *(dl1dl3+numgrids*1+1)=-1.0/(2.0*SQRT3); 506 507 /*Third nodal function: */ 508 *(dl1dl3+numgrids*0+2)=0; 509 *(dl1dl3+numgrids*1+2)=1.0/SQRT3; 510 511 } 512 /*}}}*/ 513 /*FUNCTION TriaRef::GetParameterDerivativeValue(double* p, double* plist,double* xyz_list, double* gauss) {{{1*/ 448 514 void TriaRef::GetParameterDerivativeValue(double* p, double* plist,double* xyz_list, double* gauss){ 449 515 … … 468 534 } 469 535 /*}}}*/ 470 /*FUNCTION TriaRef::GetParameterValue{{{1*/ 536 /*FUNCTION TriaRef::GetParameterDerivativeValue(double* p, double* plist,double* xyz_list, GaussTria* gauss) {{{1*/ 537 void TriaRef::GetParameterDerivativeValue(double* p, double* plist,double* xyz_list, GaussTria* gauss){ 538 539 /*From node values of parameter p (plist[0],plist[1],plist[2]), return parameter derivative value at gaussian 540 * point specified by gauss_l1l2l3: 541 * dp/dx=plist[0]*dh1/dx+plist[1]*dh2/dx+plist[2]*dh3/dx 542 * dp/dx=plist[0]*dh1/dx+plist[1]*dh2/dx+plist[2]*dh3/dx 543 * 544 * p is a vector of size 2x1 already allocated. 545 */ 546 547 /*Nodal Derivatives*/ 548 double dh1dh3[2][3]; //nodal derivative functions in actual coordinate system. 549 550 /*Get dh1dh2dh3 in actual coordinate system: */ 551 GetNodalFunctionsDerivatives(&dh1dh3[0][0],xyz_list, gauss); 552 553 /*Assign values*/ 554 *(p+0)=plist[0]*dh1dh3[0][0]+plist[1]*dh1dh3[0][1]+plist[2]*dh1dh3[0][2]; 555 *(p+1)=plist[0]*dh1dh3[1][0]+plist[1]*dh1dh3[1][1]+plist[2]*dh1dh3[1][2]; 556 557 } 558 /*}}}*/ 559 /*FUNCTION TriaRef::GetParameterValue(double* p, double* plist, double* gauss){{{1*/ 471 560 void TriaRef::GetParameterValue(double* p, double* plist, double* gauss){ 472 561 … … 484 573 } 485 574 /*}}}*/ 575 /*FUNCTION TriaRef::GetParameterValue(double* p, double* plist, GaussTria* gauss){{{1*/ 576 void TriaRef::GetParameterValue(double* p, double* plist, GaussTria* gauss){ 577 578 /*From node values of parameter p (plist[0],plist[1],plist[2]), return parameter value at gaussian 579 * point specifie by gauss: */ 580 581 /*nodal functions annd output: */ 582 double l1l2l3[3]; 583 584 /*Get nodal functions*/ 585 GetNodalFunctions(l1l2l3, gauss); 586 587 /*Get parameter*/ 588 *p=l1l2l3[0]*plist[0]+l1l2l3[1]*plist[1]+l1l2l3[2]*plist[2]; 589 } 590 /*}}}*/ -
issm/trunk/src/c/objects/Elements/TriaRef.h
r5625 r5629 37 37 void GetJacobianDeterminant3d(double* Jdet, double* xyz_list,double* gauss); 38 38 void GetJacobianInvert(double* Jinv, double* xyz_list,double* gauss); 39 void GetJacobianInvert(double* Jinv, double* xyz_list,GaussTria* gauss); 39 40 void GetNodalFunctions(double* l1l2l3, double* gauss); 40 41 void GetNodalFunctions(double* l1l2l3,GaussTria* gauss); 41 42 void GetNodalFunctionsDerivatives(double* l1l2l3,double* xyz_list, double* gauss); 43 void GetNodalFunctionsDerivatives(double* l1l2l3,double* xyz_list, GaussTria* gauss); 42 44 void GetNodalFunctionsDerivativesReference(double* dl1dl3,double* gauss); 45 void GetNodalFunctionsDerivativesReference(double* dl1dl3,GaussTria* gauss); 43 46 void GetParameterValue(double* pp, double* plist, double* gauss); 47 void GetParameterValue(double* pp, double* plist, GaussTria* gauss); 44 48 void GetParameterDerivativeValue(double* pp, double* plist,double* xyz_list, double* gauss); 49 void GetParameterDerivativeValue(double* pp, double* plist,double* xyz_list, GaussTria* gauss); 45 50 46 51 }; -
issm/trunk/src/c/objects/Inputs/BoolInput.cpp
r5103 r5629 169 169 void BoolInput::GetParameterValue(double* pvalue,double* gauss){ISSMERROR(" not supported yet!");} 170 170 /*}}}*/ 171 /*FUNCTION BoolInput::GetParameterValue(double* pvalue,GaussTria* gauss){{{1*/ 172 void BoolInput::GetParameterValue(double* pvalue,GaussTria* gauss){ISSMERROR(" not supported yet!");} 173 /*}}}*/ 171 174 /*FUNCTION BoolInput::GetParameterValues{{{1*/ 172 175 void BoolInput::GetParameterValues(double* values,double* gauss_pointers, int numgauss){ISSMERROR(" not supported yet!");} 173 176 /*}}}*/ 174 /*FUNCTION BoolInput::GetParameterDerivativeValue {{{1*/177 /*FUNCTION BoolInput::GetParameterDerivativeValue(double* derivativevalues, double* xyz_list, double* gauss){{{1*/ 175 178 void BoolInput::GetParameterDerivativeValue(double* derivativevalues, double* xyz_list, double* gauss){ISSMERROR(" not supported yet!");} 179 /*}}}*/ 180 /*FUNCTION BoolInput::GetParameterDerivativeValue(double* derivativevalues, double* xyz_list, GaussTria* gauss){{{1*/ 181 void BoolInput::GetParameterDerivativeValue(double* derivativevalues, double* xyz_list, GaussTria* gauss){ISSMERROR(" not supported yet!");} 176 182 /*}}}*/ 177 183 /*FUNCTION BoolInput::ChangeEnum{{{1*/ -
issm/trunk/src/c/objects/Inputs/BoolInput.h
r5578 r5629 11 11 #include "./Input.h" 12 12 #include "../../include/include.h" 13 class GaussTria; 13 14 /*}}}*/ 14 15 … … 47 48 void GetParameterValue(double* pvalue); 48 49 void GetParameterValue(double* pvalue,double* gauss); 50 void GetParameterValue(double* pvalue,GaussTria* gauss); 49 51 void GetParameterValues(double* values,double* gauss_pointers, int numgauss); 50 52 void GetParameterDerivativeValue(double* derivativevalues, double* xyz_list, double* gauss); 53 void GetParameterDerivativeValue(double* derivativevalues, double* xyz_list, GaussTria* gauss); 51 54 void GetParameterAverage(double* pvalue){ISSMERROR("not implemented yet");}; 52 55 void GetVxStrainRate2d(double* epsilonvx,double* xyz_list, double* gauss){ISSMERROR("not implemented yet");}; -
issm/trunk/src/c/objects/Inputs/DoubleInput.cpp
r5103 r5629 182 182 void DoubleInput::GetParameterValue(double* pvalue,double* gauss){ISSMERROR(" not supported yet!");} 183 183 /*}}}*/ 184 /*FUNCTION DoubleInput::GetParameterValue(double* pvalue,GaussTria* gauss){{{1*/ 185 void DoubleInput::GetParameterValue(double* pvalue,GaussTria* gauss){ISSMERROR(" not supported yet!");} 186 /*}}}*/ 184 187 /*FUNCTION DoubleInput::GetParameterValues{{{1*/ 185 188 void DoubleInput::GetParameterValues(double* values,double* gauss_pointers, int numgauss){ISSMERROR(" not supported yet!");} 186 189 /*}}}*/ 187 /*FUNCTION DoubleInput::GetParameterDerivativeValue {{{1*/190 /*FUNCTION DoubleInput::GetParameterDerivativeValue(double* derivativevalues, double* xyz_list, double* gauss){{{1*/ 188 191 void DoubleInput::GetParameterDerivativeValue(double* derivativevalues, double* xyz_list, double* gauss){ISSMERROR(" not supported yet!");} 192 /*}}}*/ 193 /*FUNCTION DoubleInput::GetParameterDerivativeValue(double* derivativevalues, double* xyz_list, GaussTria* gauss){{{1*/ 194 void DoubleInput::GetParameterDerivativeValue(double* derivativevalues, double* xyz_list, GaussTria* gauss){ISSMERROR(" not supported yet!");} 189 195 /*}}}*/ 190 196 /*FUNCTION DoubleInput::ChangeEnum{{{1*/ -
issm/trunk/src/c/objects/Inputs/DoubleInput.h
r5578 r5629 11 11 #include "./Input.h" 12 12 #include "../../include/include.h" 13 class GaussTria; 13 14 /*}}}*/ 14 15 … … 46 47 void GetParameterValue(double* pvalue); 47 48 void GetParameterValue(double* pvalue,double* gauss); 49 void GetParameterValue(double* pvalue,GaussTria* gauss); 48 50 void GetParameterValues(double* values,double* gauss_pointers, int numgauss); 49 51 void GetParameterDerivativeValue(double* derivativevalues, double* xyz_list, double* gauss); 52 void GetParameterDerivativeValue(double* derivativevalues, double* xyz_list, GaussTria* gauss); 50 53 void GetParameterAverage(double* pvalue); 51 54 void GetVxStrainRate2d(double* epsilonvx,double* xyz_list, double* gauss){ISSMERROR("not implemented yet");}; -
issm/trunk/src/c/objects/Inputs/Input.h
r5578 r5629 12 12 class Node; 13 13 class ElementResult; 14 class GaussTria; 14 15 /*}}}*/ 15 16 … … 25 26 virtual void GetParameterValue(double* pvalue)=0; 26 27 virtual void GetParameterValue(double* pvalue,double* gauss)=0; 28 virtual void GetParameterValue(double* pvalue,GaussTria* gauss)=0; 27 29 virtual void GetParameterValues(double* values,double* gauss_pointers, int numgauss)=0; 28 30 virtual void GetParameterDerivativeValue(double* derivativevalues, double* xyz_list, double* gauss)=0; 31 virtual void GetParameterDerivativeValue(double* derivativevalues, double* xyz_list, GaussTria* gauss)=0; 29 32 virtual void GetParameterAverage(double* pvalue)=0; 30 33 virtual void GetVxStrainRate2d(double* epsilonvx,double* xyz_list, double* gauss)=0; -
issm/trunk/src/c/objects/Inputs/IntInput.cpp
r5103 r5629 170 170 void IntInput::GetParameterValue(double* pvalue,double* gauss){ISSMERROR(" not supported yet!");} 171 171 /*}}}*/ 172 /*FUNCTION IntInput::GetParameterValue(double* pvalue,GaussTria* gauss){{{1*/ 173 void IntInput::GetParameterValue(double* pvalue,GaussTria* gauss){ISSMERROR(" not supported yet!");} 174 /*}}}*/ 172 175 /*FUNCTION IntInput::GetParameterValues{{{1*/ 173 176 void IntInput::GetParameterValues(double* values,double* gauss_pointers, int numgauss){ISSMERROR(" not supported yet!");} 174 177 /*}}}*/ 175 /*FUNCTION IntInput::GetParameterDerivativeValue {{{1*/178 /*FUNCTION IntInput::GetParameterDerivativeValue(double* derivativevalues, double* xyz_list, double* gauss){{{1*/ 176 179 void IntInput::GetParameterDerivativeValue(double* derivativevalues, double* xyz_list, double* gauss){ISSMERROR(" not supported yet!");} 180 /*}}}*/ 181 /*FUNCTION IntInput::GetParameterDerivativeValue(double* derivativevalues, double* xyz_list, GaussTria* gauss){{{1*/ 182 void IntInput::GetParameterDerivativeValue(double* derivativevalues, double* xyz_list, GaussTria* gauss){ISSMERROR(" not supported yet!");} 177 183 /*}}}*/ 178 184 /*FUNCTION IntInput::ChangeEnum{{{1*/ -
issm/trunk/src/c/objects/Inputs/IntInput.h
r5578 r5629 11 11 #include "./Input.h" 12 12 #include "../../include/include.h" 13 class GaussTria; 13 14 /*}}}*/ 14 15 … … 47 48 void GetParameterValue(double* pvalue); 48 49 void GetParameterValue(double* pvalue,double* gauss); 50 void GetParameterValue(double* pvalue,GaussTria* gauss); 49 51 void GetParameterValues(double* values,double* gauss_pointers, int numgauss); 50 52 void GetParameterDerivativeValue(double* derivativevalues, double* xyz_list, double* gauss); 53 void GetParameterDerivativeValue(double* derivativevalues, double* xyz_list, GaussTria* gauss); 51 54 void GetParameterAverage(double* pvalue){ISSMERROR("not implemented yet");}; 52 55 void GetVxStrainRate2d(double* epsilonvx,double* xyz_list, double* gauss){ISSMERROR("not implemented yet");}; -
issm/trunk/src/c/objects/Inputs/PentaVertexInput.cpp
r5529 r5629 176 176 177 177 /*Object functions*/ 178 /*FUNCTION PentaVertexInput::GetParameterValue {{{1*/178 /*FUNCTION PentaVertexInput::GetParameterValue(double* pvalue,double* gauss){{{1*/ 179 179 void PentaVertexInput::GetParameterValue(double* pvalue,double* gauss){ 180 181 /*Call PentaRef function*/ 182 PentaRef::GetParameterValue(pvalue,&values[0],gauss); 183 184 } 185 /*}}}*/ 186 /*FUNCTION PentaVertexInput::GetParameterValue(double* pvalue,GaussTria* gauss){{{1*/ 187 void PentaVertexInput::GetParameterValue(double* pvalue,GaussTria* gauss){ 180 188 181 189 /*Call PentaRef function*/ … … 201 209 } 202 210 /*}}}*/ 203 /*FUNCTION PentaVertexInput::GetParameterDerivativeValue {{{1*/211 /*FUNCTION PentaVertexInput::GetParameterDerivativeValue(double* p, double* xyz_list, double* gauss){{{1*/ 204 212 void PentaVertexInput::GetParameterDerivativeValue(double* p, double* xyz_list, double* gauss){ 213 214 /*Call PentaRef function*/ 215 PentaRef::GetParameterDerivativeValue(p,&values[0],xyz_list,gauss); 216 } 217 /*}}}*/ 218 /*FUNCTION PentaVertexInput::GetParameterDerivativeValue(double* p, double* xyz_list, GaussTria* gauss){{{1*/ 219 void PentaVertexInput::GetParameterDerivativeValue(double* p, double* xyz_list, GaussTria* gauss){ 205 220 206 221 /*Call PentaRef function*/ -
issm/trunk/src/c/objects/Inputs/PentaVertexInput.h
r5578 r5629 11 11 #include "./Input.h" 12 12 #include "../Elements/PentaRef.h" 13 class GaussTria; 13 14 /*}}}*/ 14 15 … … 47 48 void GetParameterValue(double* pvalue){ISSMERROR("not implemented yet");}; 48 49 void GetParameterValue(double* pvalue,double* gauss); 50 void GetParameterValue(double* pvalue,GaussTria* gauss); 49 51 void GetParameterValues(double* values,double* gauss_pointers, int numgauss); 50 52 void GetParameterDerivativeValue(double* derivativevalues, double* xyz_list, double* gauss); 53 void GetParameterDerivativeValue(double* derivativevalues, double* xyz_list, GaussTria* gauss); 51 54 void GetParameterAverage(double* pvalue); 52 55 void GetVxStrainRate2d(double* epsilonvx,double* xyz_list, double* gauss){ISSMERROR("not implemented yet");}; -
issm/trunk/src/c/objects/Inputs/TriaVertexInput.cpp
r5578 r5629 165 165 166 166 /*Object functions*/ 167 /*FUNCTION TriaVertexInput::GetParameterValue {{{1*/167 /*FUNCTION TriaVertexInput::GetParameterValue(double* pvalue,double* gauss){{{1*/ 168 168 void TriaVertexInput::GetParameterValue(double* pvalue,double* gauss){ 169 170 /*Call TriaRef function*/ 171 TriaRef::GetParameterValue(pvalue,&values[0],gauss); 172 173 } 174 /*}}}*/ 175 /*FUNCTION TriaVertexInput::GetParameterValue(double* pvalue,GaussTria* gauss){{{1*/ 176 void TriaVertexInput::GetParameterValue(double* pvalue,GaussTria* gauss){ 169 177 170 178 /*Call TriaRef function*/ … … 191 199 } 192 200 /*}}}*/ 193 /*FUNCTION TriaVertexInput::GetParameterDerivativeValue {{{1*/201 /*FUNCTION TriaVertexInput::GetParameterDerivativeValue(double* p, double* xyz_list, double* gauss){{{1*/ 194 202 void TriaVertexInput::GetParameterDerivativeValue(double* p, double* xyz_list, double* gauss){ 203 204 /*Call TriaRef function*/ 205 TriaRef::GetParameterDerivativeValue(p,&values[0],xyz_list,gauss); 206 } 207 /*}}}*/ 208 /*FUNCTION TriaVertexInput::GetParameterDerivativeValue(double* p, double* xyz_list, GaussTria* gauss){{{1*/ 209 void TriaVertexInput::GetParameterDerivativeValue(double* p, double* xyz_list, GaussTria* gauss){ 195 210 196 211 /*Call TriaRef function*/ -
issm/trunk/src/c/objects/Inputs/TriaVertexInput.h
r5578 r5629 11 11 #include "./Input.h" 12 12 #include "../Elements/TriaRef.h" 13 class GaussTria; 13 14 /*}}}*/ 14 15 … … 47 48 void GetParameterValue(double* pvalue){ISSMERROR("not implemented yet");} 48 49 void GetParameterValue(double* pvalue,double* gauss); 50 void GetParameterValue(double* pvalue,GaussTria* gauss); 49 51 void GetParameterValues(double* values,double* gauss_pointers, int numgauss); 50 52 void GetParameterDerivativeValue(double* derivativevalues, double* xyz_list, double* gauss); 53 void GetParameterDerivativeValue(double* derivativevalues, double* xyz_list, GaussTria* gauss); 51 54 void GetParameterAverage(double* pvalue); 52 55 void GetVxStrainRate2d(double* epsilonvx,double* xyz_list, double* gauss);
Note:
See TracChangeset
for help on using the changeset viewer.