Changeset 25722


Ignore:
Timestamp:
10/29/20 14:22:24 (4 years ago)
Author:
Mathieu Morlighem
Message:

CHG: use static allocation when possible for xyz_list

Location:
issm/trunk-jpl/src/c/classes/Elements
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/classes/Elements/Penta.cpp

    r25598 r25722  
    366366void       Penta::CalvingRateLevermann(){/*{{{*/
    367367
    368         IssmDouble  xyz_list[NUMVERTICES][3];
    369         GaussPenta* gauss=NULL;
    370368        IssmDouble  vx,vy,vel;
    371369        IssmDouble  strainparallel;
     
    376374        IssmDouble  calvingrate[NUMVERTICES];
    377375
    378         /* Get node coordinates and dof list: */
    379         ::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
    380 
    381376        /*Retrieve all inputs and parameters we will need*/
    382377        Input* vx_input=this->GetInput(VxEnum);                                                                                                                                         _assert_(vx_input);
     
    387382
    388383        /* Start looping on the number of vertices: */
    389         gauss=new GaussPenta();
     384        GaussPenta* gauss=new GaussPenta();
    390385        for (int iv=0;iv<NUMVERTICES;iv++){
    391386                gauss->GaussVertex(iv);
     
    415410        /*Clean up and return*/
    416411        delete gauss;
    417 
    418 }
    419 /*}}}*/
     412}/*}}}*/
    420413void       Penta::CalvingFluxLevelset(){/*{{{*/
    421414
  • issm/trunk-jpl/src/c/classes/Elements/Tria.cpp

    r25721 r25722  
    406406void       Tria::CalvingCrevasseDepth(){/*{{{*/
    407407
    408         IssmDouble  xyz_list[NUMVERTICES][3];
    409408        IssmDouble  calvingrate[NUMVERTICES];
    410409        IssmDouble  vx,vy,vel;
     
    414413        IssmDouble  s_xx,s_xy,s_yy,s1,s2,stmp;
    415414        int crevasse_opening_stress;
    416 
    417         /* Get node coordinates and dof list: */
    418         ::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
    419415
    420416        /*retrieve the type of crevasse_opening_stress*/
     
    504500void       Tria::CalvingRateLevermann(){/*{{{*/
    505501
    506         IssmDouble  xyz_list[NUMVERTICES][3];
    507502        IssmDouble  vx,vy,vel;
    508503        IssmDouble  strainparallel;
     
    513508        IssmDouble  calvingrate[NUMVERTICES];
    514509
    515         /* Get node coordinates and dof list: */
    516         ::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
    517 
    518510        /*Retrieve all inputs and parameters we will need*/
    519         Input* vx_input=this->GetInput(VxEnum);                                                                                                 _assert_(vx_input);
    520         Input* vy_input=this->GetInput(VyEnum);                                                                                                 _assert_(vy_input);
    521         Input* bs_input = this->GetInput(BaseEnum);                                 _assert_(bs_input);
    522         Input* strainparallel_input=this->GetInput(StrainRateparallelEnum);                     _assert_(strainparallel_input);
    523         Input* strainperpendicular_input=this->GetInput(StrainRateperpendicularEnum);_assert_(strainperpendicular_input);
    524         Input* levermanncoeff_input=this->GetInput(CalvinglevermannCoeffEnum);      _assert_(levermanncoeff_input);
     511        Input *vx_input                  = this->GetInput(VxEnum);                      _assert_(vx_input);
     512        Input *vy_input                  = this->GetInput(VyEnum);                      _assert_(vy_input);
     513        Input *bs_input                  = this->GetInput(BaseEnum);                    _assert_(bs_input);
     514        Input *strainparallel_input      = this->GetInput(StrainRateparallelEnum);      _assert_(strainparallel_input);
     515        Input *strainperpendicular_input = this->GetInput(StrainRateperpendicularEnum); _assert_(strainperpendicular_input);
     516        Input *levermanncoeff_input      = this->GetInput(CalvinglevermannCoeffEnum);   _assert_(levermanncoeff_input);
    525517
    526518        /* Start looping on the number of vertices: */
     
    556548        /*Clean up and return*/
    557549        delete gauss;
    558 
    559 }
    560 /*}}}*/
     550}/*}}}*/
    561551void       Tria::CalvingFluxLevelset(){/*{{{*/
    562552
     
    573563                IssmDouble        xyz_front[2][3];
    574564
    575                 IssmDouble *xyz_list = NULL;
    576                 this->GetVerticesCoordinates(&xyz_list);
     565                IssmDouble  xyz_list[NUMVERTICES][3];
     566                ::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
    577567
    578568                /*Recover parameters and values*/
     
    599589                                        pt1 = 1; pt2 = 0;
    600590                                }
    601                                 xyz_front[pt2][0]=xyz_list[3*2+0]+s1*(xyz_list[3*1+0]-xyz_list[3*2+0]);
    602                                 xyz_front[pt2][1]=xyz_list[3*2+1]+s1*(xyz_list[3*1+1]-xyz_list[3*2+1]);
    603                                 xyz_front[pt2][2]=xyz_list[3*2+2]+s1*(xyz_list[3*1+2]-xyz_list[3*2+2]);
    604                                 xyz_front[pt1][0]=xyz_list[3*2+0]+s2*(xyz_list[3*0+0]-xyz_list[3*2+0]);
    605                                 xyz_front[pt1][1]=xyz_list[3*2+1]+s2*(xyz_list[3*0+1]-xyz_list[3*2+1]);
    606                                 xyz_front[pt1][2]=xyz_list[3*2+2]+s2*(xyz_list[3*0+2]-xyz_list[3*2+2]);
     591                                xyz_front[pt2][0]=xyz_list[2][0]+s1*(xyz_list[1][0]-xyz_list[2][0]);
     592                                xyz_front[pt2][1]=xyz_list[2][1]+s1*(xyz_list[1][1]-xyz_list[2][1]);
     593                                xyz_front[pt2][2]=xyz_list[2][2]+s1*(xyz_list[1][2]-xyz_list[2][2]);
     594                                xyz_front[pt1][0]=xyz_list[2][0]+s2*(xyz_list[0][0]-xyz_list[2][0]);
     595                                xyz_front[pt1][1]=xyz_list[2][1]+s2*(xyz_list[0][1]-xyz_list[2][1]);
     596                                xyz_front[pt1][2]=xyz_list[2][2]+s2*(xyz_list[0][2]-xyz_list[2][2]);
    607597                        }
    608598                        else if(gl[1]*gl[2]>0){ //Nodes 1 and 2 are similar, so points must be found on segment 0-1 and 0-2
     
    615605                                }
    616606
    617                                 xyz_front[pt1][0]=xyz_list[3*0+0]+s1*(xyz_list[3*1+0]-xyz_list[3*0+0]);
    618                                 xyz_front[pt1][1]=xyz_list[3*0+1]+s1*(xyz_list[3*1+1]-xyz_list[3*0+1]);
    619                                 xyz_front[pt1][2]=xyz_list[3*0+2]+s1*(xyz_list[3*1+2]-xyz_list[3*0+2]);
    620                                 xyz_front[pt2][0]=xyz_list[3*0+0]+s2*(xyz_list[3*2+0]-xyz_list[3*0+0]);
    621                                 xyz_front[pt2][1]=xyz_list[3*0+1]+s2*(xyz_list[3*2+1]-xyz_list[3*0+1]);
    622                                 xyz_front[pt2][2]=xyz_list[3*0+2]+s2*(xyz_list[3*2+2]-xyz_list[3*0+2]);
     607                                xyz_front[pt1][0]=xyz_list[0][0]+s1*(xyz_list[1][0]-xyz_list[0][0]);
     608                                xyz_front[pt1][1]=xyz_list[0][1]+s1*(xyz_list[1][1]-xyz_list[0][1]);
     609                                xyz_front[pt1][2]=xyz_list[0][2]+s1*(xyz_list[1][2]-xyz_list[0][2]);
     610                                xyz_front[pt2][0]=xyz_list[0][0]+s2*(xyz_list[2][0]-xyz_list[0][0]);
     611                                xyz_front[pt2][1]=xyz_list[0][1]+s2*(xyz_list[2][1]-xyz_list[0][1]);
     612                                xyz_front[pt2][2]=xyz_list[0][2]+s2*(xyz_list[2][2]-xyz_list[0][2]);
    623613                        }
    624614                        else if(gl[0]*gl[2]>0){ //Nodes 0 and 2 are similar, so points must be found on segment 1-0 and 1-2
     
    631621                                }
    632622
    633                                 xyz_front[pt2][0]=xyz_list[3*1+0]+s1*(xyz_list[3*0+0]-xyz_list[3*1+0]);
    634                                 xyz_front[pt2][1]=xyz_list[3*1+1]+s1*(xyz_list[3*0+1]-xyz_list[3*1+1]);
    635                                 xyz_front[pt2][2]=xyz_list[3*1+2]+s1*(xyz_list[3*0+2]-xyz_list[3*1+2]);
    636                                 xyz_front[pt1][0]=xyz_list[3*1+0]+s2*(xyz_list[3*2+0]-xyz_list[3*1+0]);
    637                                 xyz_front[pt1][1]=xyz_list[3*1+1]+s2*(xyz_list[3*2+1]-xyz_list[3*1+1]);
    638                                 xyz_front[pt1][2]=xyz_list[3*1+2]+s2*(xyz_list[3*2+2]-xyz_list[3*1+2]);
     623                                xyz_front[pt2][0]=xyz_list[1][0]+s1*(xyz_list[0][0]-xyz_list[1][0]);
     624                                xyz_front[pt2][1]=xyz_list[1][1]+s1*(xyz_list[0][1]-xyz_list[1][1]);
     625                                xyz_front[pt2][2]=xyz_list[1][2]+s1*(xyz_list[0][2]-xyz_list[1][2]);
     626                                xyz_front[pt1][0]=xyz_list[1][0]+s2*(xyz_list[2][0]-xyz_list[1][0]);
     627                                xyz_front[pt1][1]=xyz_list[1][1]+s2*(xyz_list[2][1]-xyz_list[1][1]);
     628                                xyz_front[pt1][2]=xyz_list[1][2]+s2*(xyz_list[2][2]-xyz_list[1][2]);
    639629                        }
    640630                        else{
     
    673663
    674664                /*Start looping on Gaussian points*/
    675                 Gauss* gauss=this->NewGauss(xyz_list,&xyz_front[0][0],3);
     665                Gauss* gauss=this->NewGauss(&xyz_list[0][0],&xyz_front[0][0],3);
    676666                while(gauss->next()){
    677667                        thickness_input->GetInputValue(&thickness,gauss);
     
    707697                IssmDouble        xyz_front[2][3];
    708698
    709 
    710                 IssmDouble *xyz_list = NULL;
    711                 this->GetVerticesCoordinates(&xyz_list);
     699                IssmDouble  xyz_list[NUMVERTICES][3];
     700      ::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
    712701
    713702                /*Recover parameters and values*/
     
    734723                                        pt1 = 1; pt2 = 0;
    735724                                }
    736                                 xyz_front[pt2][0]=xyz_list[3*2+0]+s1*(xyz_list[3*1+0]-xyz_list[3*2+0]);
    737                                 xyz_front[pt2][1]=xyz_list[3*2+1]+s1*(xyz_list[3*1+1]-xyz_list[3*2+1]);
    738                                 xyz_front[pt2][2]=xyz_list[3*2+2]+s1*(xyz_list[3*1+2]-xyz_list[3*2+2]);
    739                                 xyz_front[pt1][0]=xyz_list[3*2+0]+s2*(xyz_list[3*0+0]-xyz_list[3*2+0]);
    740                                 xyz_front[pt1][1]=xyz_list[3*2+1]+s2*(xyz_list[3*0+1]-xyz_list[3*2+1]);
    741                                 xyz_front[pt1][2]=xyz_list[3*2+2]+s2*(xyz_list[3*0+2]-xyz_list[3*2+2]);
     725                                xyz_front[pt2][0]=xyz_list[2][0]+s1*(xyz_list[1][0]-xyz_list[2][0]);
     726                                xyz_front[pt2][1]=xyz_list[2][1]+s1*(xyz_list[1][1]-xyz_list[2][1]);
     727                                xyz_front[pt2][2]=xyz_list[2][2]+s1*(xyz_list[1][2]-xyz_list[2][2]);
     728                                xyz_front[pt1][0]=xyz_list[2][0]+s2*(xyz_list[0][0]-xyz_list[2][0]);
     729                                xyz_front[pt1][1]=xyz_list[2][1]+s2*(xyz_list[0][1]-xyz_list[2][1]);
     730                                xyz_front[pt1][2]=xyz_list[2][2]+s2*(xyz_list[0][2]-xyz_list[2][2]);
    742731                        }
    743732                        else if(gl[1]*gl[2]>0){ //Nodes 1 and 2 are similar, so points must be found on segment 0-1 and 0-2
     
    750739                                }
    751740
    752                                 xyz_front[pt1][0]=xyz_list[3*0+0]+s1*(xyz_list[3*1+0]-xyz_list[3*0+0]);
    753                                 xyz_front[pt1][1]=xyz_list[3*0+1]+s1*(xyz_list[3*1+1]-xyz_list[3*0+1]);
    754                                 xyz_front[pt1][2]=xyz_list[3*0+2]+s1*(xyz_list[3*1+2]-xyz_list[3*0+2]);
    755                                 xyz_front[pt2][0]=xyz_list[3*0+0]+s2*(xyz_list[3*2+0]-xyz_list[3*0+0]);
    756                                 xyz_front[pt2][1]=xyz_list[3*0+1]+s2*(xyz_list[3*2+1]-xyz_list[3*0+1]);
    757                                 xyz_front[pt2][2]=xyz_list[3*0+2]+s2*(xyz_list[3*2+2]-xyz_list[3*0+2]);
     741                                xyz_front[pt1][0]=xyz_list[0][0]+s1*(xyz_list[1][0]-xyz_list[0][0]);
     742                                xyz_front[pt1][1]=xyz_list[0][1]+s1*(xyz_list[1][1]-xyz_list[0][1]);
     743                                xyz_front[pt1][2]=xyz_list[0][2]+s1*(xyz_list[1][2]-xyz_list[0][2]);
     744                                xyz_front[pt2][0]=xyz_list[0][0]+s2*(xyz_list[2][0]-xyz_list[0][0]);
     745                                xyz_front[pt2][1]=xyz_list[0][1]+s2*(xyz_list[2][1]-xyz_list[0][1]);
     746                                xyz_front[pt2][2]=xyz_list[0][2]+s2*(xyz_list[2][2]-xyz_list[0][2]);
    758747                        }
    759748                        else if(gl[0]*gl[2]>0){ //Nodes 0 and 2 are similar, so points must be found on segment 1-0 and 1-2
     
    766755                                }
    767756
    768                                 xyz_front[pt2][0]=xyz_list[3*1+0]+s1*(xyz_list[3*0+0]-xyz_list[3*1+0]);
    769                                 xyz_front[pt2][1]=xyz_list[3*1+1]+s1*(xyz_list[3*0+1]-xyz_list[3*1+1]);
    770                                 xyz_front[pt2][2]=xyz_list[3*1+2]+s1*(xyz_list[3*0+2]-xyz_list[3*1+2]);
    771                                 xyz_front[pt1][0]=xyz_list[3*1+0]+s2*(xyz_list[3*2+0]-xyz_list[3*1+0]);
    772                                 xyz_front[pt1][1]=xyz_list[3*1+1]+s2*(xyz_list[3*2+1]-xyz_list[3*1+1]);
    773                                 xyz_front[pt1][2]=xyz_list[3*1+2]+s2*(xyz_list[3*2+2]-xyz_list[3*1+2]);
     757                                xyz_front[pt2][0]=xyz_list[1][0]+s1*(xyz_list[0][0]-xyz_list[1][0]);
     758                                xyz_front[pt2][1]=xyz_list[1][1]+s1*(xyz_list[0][1]-xyz_list[1][1]);
     759                                xyz_front[pt2][2]=xyz_list[1][2]+s1*(xyz_list[0][2]-xyz_list[1][2]);
     760                                xyz_front[pt1][0]=xyz_list[1][0]+s2*(xyz_list[2][0]-xyz_list[1][0]);
     761                                xyz_front[pt1][1]=xyz_list[1][1]+s2*(xyz_list[2][1]-xyz_list[1][1]);
     762                                xyz_front[pt1][2]=xyz_list[1][2]+s2*(xyz_list[2][2]-xyz_list[1][2]);
    774763                        }
    775764                        else{
     
    814803
    815804                /*Start looping on Gaussian points*/
    816                 Gauss* gauss=this->NewGauss(xyz_list,&xyz_front[0][0],3);
     805                Gauss* gauss=this->NewGauss(&xyz_list[0][0],&xyz_front[0][0],3);
    817806                while(gauss->next()){
    818807                        thickness_input->GetInputValue(&thickness,gauss);
     
    13721361        int         domaintype;
    13731362        IssmDouble  phi,scalefactor,floatingarea;
    1374         IssmDouble *xyz_list  = NULL;
    13751363
    13761364        if(!IsIceInElement())return 0.;
     
    13801368        if(domaintype!=Domain2DhorizontalEnum && domaintype!=Domain3DEnum) _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
    13811369
    1382         this->GetVerticesCoordinates(&xyz_list);
    1383         phi=this->GetGroundedPortion(xyz_list);
     1370        IssmDouble  xyz_list[NUMVERTICES][3];
     1371        ::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
     1372        phi=this->GetGroundedPortion(&xyz_list[0][0]);
    13841373        floatingarea=(1-phi)*this->GetArea();
    13851374        if(scaled==true){
     
    13901379
    13911380        /*Clean up and return*/
    1392         xDelete<IssmDouble>(xyz_list);
    13931381        return floatingarea;
    13941382}
     
    14051393        }
    14061394        /*Intermediaries*/
    1407         IssmDouble* xyz_list = NULL;
    14081395        IssmDouble  bed_normal[2],base[NUMVERTICES],bed[NUMVERTICES],surface[NUMVERTICES],phi[NUMVERTICES];
    14091396        IssmDouble  water_pressure[NUMVERTICES],pressureice[NUMVERTICES],pressure[NUMVERTICES];
     
    14191406        IssmDouble gravity   = FindParam(ConstantsGEnum);
    14201407
    1421         /* Get node coordinates and dof list: */
    1422         GetVerticesCoordinates(&xyz_list);
     1408        IssmDouble  xyz_list[NUMVERTICES][3];
     1409        ::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
     1410
    14231411        /*Retrieve all inputs we will be needing: */
    14241412        Input* vx_input       = this->GetInput(VxEnum);       _assert_(vx_input);
     
    14311419
    14321420                /*Compute strain rate viscosity and pressure: */
    1433                 this->StrainRateSSA(&epsilon[0],xyz_list,gauss,vx_input,vy_input);
    1434                 this->material->ViscosityFS(&viscosity,2,xyz_list,gauss,vx_input,vy_input,NULL);
     1421                this->StrainRateSSA(&epsilon[0],&xyz_list[0][0],gauss,vx_input,vy_input);
     1422                this->material->ViscosityFS(&viscosity,2,&xyz_list[0][0],gauss,vx_input,vy_input,NULL);
    14351423                /*FIXME: this is for Hongju only*/
    14361424        //      pressureice[iv]=gravity*rho_ice*(surface[iv]-base[iv]);
     
    14471435                /*If was grounded*/
    14481436                if (phi[i]>=0.){
    1449                         NormalBase(&bed_normal[0],xyz_list);
     1437                        NormalBase(&bed_normal[0],&xyz_list[0][0]);
    14501438                        sigma_nn[i]=-1*(sigmaxx[i]*bed_normal[0]*bed_normal[0] + sigmayy[i]*bed_normal[1]*bed_normal[1]+2*sigmaxy[i]*bed_normal[0]*bed_normal[1]);
    14511439                        water_pressure[i]=-gravity*rho_water*base[i];
     
    14651453        /*clean up*/
    14661454        delete gauss;
    1467         xDelete<IssmDouble>(xyz_list);
    14681455}
    14691456/*}}}*/
     
    24792466        int         domaintype;
    24802467        IssmDouble  phi,scalefactor,groundedarea;
    2481         IssmDouble *xyz_list  = NULL;
    24822468
    24832469        if(!IsIceInElement())return 0.;
     
    24872473        if(domaintype!=Domain2DhorizontalEnum && domaintype!=Domain3DEnum) _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
    24882474
    2489         this->GetVerticesCoordinates(&xyz_list);
    2490         phi=this->GetGroundedPortion(xyz_list);
     2475        IssmDouble  xyz_list[NUMVERTICES][3];
     2476        ::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
     2477        phi=this->GetGroundedPortion(&xyz_list[0][0]);
    24912478        groundedarea=phi*this->GetArea();
    24922479        if(scaled==true){
     
    24972484
    24982485        /*Clean up and return*/
    2499         xDelete<IssmDouble>(xyz_list);
    25002486        return groundedarea;
    25012487}
     
    25562542
    25572543        /*Get ice front coordinates*/
    2558         IssmDouble *xyz_list = NULL;
     2544        IssmDouble  xyz_list[NUMVERTICES][3];
     2545        ::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
    25592546        IssmDouble* xyz_front = NULL;
    2560         this->GetVerticesCoordinates(&xyz_list);
    2561         this->GetIcefrontCoordinates(&xyz_front,xyz_list,MaskIceLevelsetEnum);
     2547        this->GetIcefrontCoordinates(&xyz_front,&xyz_list[0][0],MaskIceLevelsetEnum);
    25622548
    25632549        /*Get normal vector*/
     
    25842570
    25852571        /*Start looping on Gaussian points*/
    2586         Gauss* gauss=this->NewGauss(xyz_list,xyz_front,3);
     2572        Gauss* gauss=this->NewGauss(&xyz_list[0][0],xyz_front,3);
    25872573        while(gauss->next()){
    25882574                thickness_input->GetInputValue(&thickness,gauss);
     
    25952581
    25962582        /*Cleanup and return*/
    2597         xDelete<IssmDouble>(xyz_list);
    25982583        xDelete<IssmDouble>(xyz_front);
    25992584        delete gauss;
     
    26152600        IssmDouble        xyz_front[2][3];
    26162601
    2617 
    2618         IssmDouble *xyz_list = NULL;
    2619         this->GetVerticesCoordinates(&xyz_list);
     2602        IssmDouble  xyz_list[NUMVERTICES][3];
     2603        ::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
    26202604
    26212605        /*Recover parameters and values*/
     
    26422626                                pt1 = 1; pt2 = 0;
    26432627                        }
    2644                         xyz_front[pt2][0]=xyz_list[3*2+0]+s1*(xyz_list[3*1+0]-xyz_list[3*2+0]);
    2645                         xyz_front[pt2][1]=xyz_list[3*2+1]+s1*(xyz_list[3*1+1]-xyz_list[3*2+1]);
    2646                         xyz_front[pt2][2]=xyz_list[3*2+2]+s1*(xyz_list[3*1+2]-xyz_list[3*2+2]);
    2647                         xyz_front[pt1][0]=xyz_list[3*2+0]+s2*(xyz_list[3*0+0]-xyz_list[3*2+0]);
    2648                         xyz_front[pt1][1]=xyz_list[3*2+1]+s2*(xyz_list[3*0+1]-xyz_list[3*2+1]);
    2649                         xyz_front[pt1][2]=xyz_list[3*2+2]+s2*(xyz_list[3*0+2]-xyz_list[3*2+2]);
     2628                        xyz_front[pt2][0]=xyz_list[2][0]+s1*(xyz_list[1][0]-xyz_list[2][0]);
     2629                        xyz_front[pt2][1]=xyz_list[2][1]+s1*(xyz_list[1][1]-xyz_list[2][1]);
     2630                        xyz_front[pt2][2]=xyz_list[2][2]+s1*(xyz_list[1][2]-xyz_list[2][2]);
     2631                        xyz_front[pt1][0]=xyz_list[2][0]+s2*(xyz_list[0][0]-xyz_list[2][0]);
     2632                        xyz_front[pt1][1]=xyz_list[2][1]+s2*(xyz_list[0][1]-xyz_list[2][1]);
     2633                        xyz_front[pt1][2]=xyz_list[2][2]+s2*(xyz_list[0][2]-xyz_list[2][2]);
    26502634                }
    26512635                else if(gl[1]*gl[2]>0){ //Nodes 1 and 2 are similar, so points must be found on segment 0-1 and 0-2
     
    26582642                        }
    26592643
    2660                         xyz_front[pt1][0]=xyz_list[3*0+0]+s1*(xyz_list[3*1+0]-xyz_list[3*0+0]);
    2661                         xyz_front[pt1][1]=xyz_list[3*0+1]+s1*(xyz_list[3*1+1]-xyz_list[3*0+1]);
    2662                         xyz_front[pt1][2]=xyz_list[3*0+2]+s1*(xyz_list[3*1+2]-xyz_list[3*0+2]);
    2663                         xyz_front[pt2][0]=xyz_list[3*0+0]+s2*(xyz_list[3*2+0]-xyz_list[3*0+0]);
    2664                         xyz_front[pt2][1]=xyz_list[3*0+1]+s2*(xyz_list[3*2+1]-xyz_list[3*0+1]);
    2665                         xyz_front[pt2][2]=xyz_list[3*0+2]+s2*(xyz_list[3*2+2]-xyz_list[3*0+2]);
     2644                        xyz_front[pt1][0]=xyz_list[0][0]+s1*(xyz_list[1][0]-xyz_list[0][0]);
     2645                        xyz_front[pt1][1]=xyz_list[0][1]+s1*(xyz_list[1][1]-xyz_list[0][1]);
     2646                        xyz_front[pt1][2]=xyz_list[0][2]+s1*(xyz_list[1][2]-xyz_list[0][2]);
     2647                        xyz_front[pt2][0]=xyz_list[0][0]+s2*(xyz_list[2][0]-xyz_list[0][0]);
     2648                        xyz_front[pt2][1]=xyz_list[0][1]+s2*(xyz_list[2][1]-xyz_list[0][1]);
     2649                        xyz_front[pt2][2]=xyz_list[0][2]+s2*(xyz_list[2][2]-xyz_list[0][2]);
    26662650                }
    26672651                else if(gl[0]*gl[2]>0){ //Nodes 0 and 2 are similar, so points must be found on segment 1-0 and 1-2
     
    26742658                        }
    26752659
    2676                         xyz_front[pt2][0]=xyz_list[3*1+0]+s1*(xyz_list[3*0+0]-xyz_list[3*1+0]);
    2677                         xyz_front[pt2][1]=xyz_list[3*1+1]+s1*(xyz_list[3*0+1]-xyz_list[3*1+1]);
    2678                         xyz_front[pt2][2]=xyz_list[3*1+2]+s1*(xyz_list[3*0+2]-xyz_list[3*1+2]);
    2679                         xyz_front[pt1][0]=xyz_list[3*1+0]+s2*(xyz_list[3*2+0]-xyz_list[3*1+0]);
    2680                         xyz_front[pt1][1]=xyz_list[3*1+1]+s2*(xyz_list[3*2+1]-xyz_list[3*1+1]);
    2681                         xyz_front[pt1][2]=xyz_list[3*1+2]+s2*(xyz_list[3*2+2]-xyz_list[3*1+2]);
     2660                        xyz_front[pt2][0]=xyz_list[1][0]+s1*(xyz_list[0][0]-xyz_list[1][0]);
     2661                        xyz_front[pt2][1]=xyz_list[1][1]+s1*(xyz_list[0][1]-xyz_list[1][1]);
     2662                        xyz_front[pt2][2]=xyz_list[1][2]+s1*(xyz_list[0][2]-xyz_list[1][2]);
     2663                        xyz_front[pt1][0]=xyz_list[1][0]+s2*(xyz_list[2][0]-xyz_list[1][0]);
     2664                        xyz_front[pt1][1]=xyz_list[1][1]+s2*(xyz_list[2][1]-xyz_list[1][1]);
     2665                        xyz_front[pt1][2]=xyz_list[1][2]+s2*(xyz_list[2][2]-xyz_list[1][2]);
    26822666                }
    26832667                else{
     
    27152699
    27162700        /*Start looping on Gaussian points*/
    2717         Gauss* gauss=this->NewGauss(xyz_list,&xyz_front[0][0],3);
     2701        Gauss* gauss=this->NewGauss(&xyz_list[0][0],&xyz_front[0][0],3);
    27182702        while(gauss->next()){
    27192703                thickness_input->GetInputValue(&thickness,gauss);
     
    27272711        /*Cleanup and return*/
    27282712        delete gauss;
    2729         xDelete<IssmDouble>(xyz_list);
    27302713        return flux;
    27312714}
     
    27462729        IssmDouble        xyz_front[2][3];
    27472730
    2748         IssmDouble *xyz_list = NULL;
    2749         this->GetVerticesCoordinates(&xyz_list);
     2731        IssmDouble  xyz_list[NUMVERTICES][3];
     2732        ::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
    27502733
    27512734        /*Recover parameters and values*/
     
    27722755                                pt1 = 1; pt2 = 0;
    27732756                        }
    2774                         xyz_front[pt2][0]=xyz_list[3*2+0]+s1*(xyz_list[3*1+0]-xyz_list[3*2+0]);
    2775                         xyz_front[pt2][1]=xyz_list[3*2+1]+s1*(xyz_list[3*1+1]-xyz_list[3*2+1]);
    2776                         xyz_front[pt2][2]=xyz_list[3*2+2]+s1*(xyz_list[3*1+2]-xyz_list[3*2+2]);
    2777                         xyz_front[pt1][0]=xyz_list[3*2+0]+s2*(xyz_list[3*0+0]-xyz_list[3*2+0]);
    2778                         xyz_front[pt1][1]=xyz_list[3*2+1]+s2*(xyz_list[3*0+1]-xyz_list[3*2+1]);
    2779                         xyz_front[pt1][2]=xyz_list[3*2+2]+s2*(xyz_list[3*0+2]-xyz_list[3*2+2]);
     2757                        xyz_front[pt2][0]=xyz_list[2][0]+s1*(xyz_list[1][0]-xyz_list[2][0]);
     2758                        xyz_front[pt2][1]=xyz_list[2][1]+s1*(xyz_list[1][1]-xyz_list[2][1]);
     2759                        xyz_front[pt2][2]=xyz_list[2][2]+s1*(xyz_list[1][2]-xyz_list[2][2]);
     2760                        xyz_front[pt1][0]=xyz_list[2][0]+s2*(xyz_list[0][0]-xyz_list[2][0]);
     2761                        xyz_front[pt1][1]=xyz_list[2][1]+s2*(xyz_list[0][1]-xyz_list[2][1]);
     2762                        xyz_front[pt1][2]=xyz_list[2][2]+s2*(xyz_list[0][2]-xyz_list[2][2]);
    27802763                }
    27812764                else if(gl[1]*gl[2]>0){ //Nodes 1 and 2 are similar, so points must be found on segment 0-1 and 0-2
     
    27882771                        }
    27892772
    2790                         xyz_front[pt1][0]=xyz_list[3*0+0]+s1*(xyz_list[3*1+0]-xyz_list[3*0+0]);
    2791                         xyz_front[pt1][1]=xyz_list[3*0+1]+s1*(xyz_list[3*1+1]-xyz_list[3*0+1]);
    2792                         xyz_front[pt1][2]=xyz_list[3*0+2]+s1*(xyz_list[3*1+2]-xyz_list[3*0+2]);
    2793                         xyz_front[pt2][0]=xyz_list[3*0+0]+s2*(xyz_list[3*2+0]-xyz_list[3*0+0]);
    2794                         xyz_front[pt2][1]=xyz_list[3*0+1]+s2*(xyz_list[3*2+1]-xyz_list[3*0+1]);
    2795                         xyz_front[pt2][2]=xyz_list[3*0+2]+s2*(xyz_list[3*2+2]-xyz_list[3*0+2]);
     2773                        xyz_front[pt1][0]=xyz_list[0][0]+s1*(xyz_list[1][0]-xyz_list[0][0]);
     2774                        xyz_front[pt1][1]=xyz_list[0][1]+s1*(xyz_list[1][1]-xyz_list[0][1]);
     2775                        xyz_front[pt1][2]=xyz_list[0][2]+s1*(xyz_list[1][2]-xyz_list[0][2]);
     2776                        xyz_front[pt2][0]=xyz_list[0][0]+s2*(xyz_list[2][0]-xyz_list[0][0]);
     2777                        xyz_front[pt2][1]=xyz_list[0][1]+s2*(xyz_list[2][1]-xyz_list[0][1]);
     2778                        xyz_front[pt2][2]=xyz_list[0][2]+s2*(xyz_list[2][2]-xyz_list[0][2]);
    27962779                }
    27972780                else if(gl[0]*gl[2]>0){ //Nodes 0 and 2 are similar, so points must be found on segment 1-0 and 1-2
     
    28042787                        }
    28052788
    2806                         xyz_front[pt2][0]=xyz_list[3*1+0]+s1*(xyz_list[3*0+0]-xyz_list[3*1+0]);
    2807                         xyz_front[pt2][1]=xyz_list[3*1+1]+s1*(xyz_list[3*0+1]-xyz_list[3*1+1]);
    2808                         xyz_front[pt2][2]=xyz_list[3*1+2]+s1*(xyz_list[3*0+2]-xyz_list[3*1+2]);
    2809                         xyz_front[pt1][0]=xyz_list[3*1+0]+s2*(xyz_list[3*2+0]-xyz_list[3*1+0]);
    2810                         xyz_front[pt1][1]=xyz_list[3*1+1]+s2*(xyz_list[3*2+1]-xyz_list[3*1+1]);
    2811                         xyz_front[pt1][2]=xyz_list[3*1+2]+s2*(xyz_list[3*2+2]-xyz_list[3*1+2]);
     2789                        xyz_front[pt2][0]=xyz_list[1][0]+s1*(xyz_list[0][0]-xyz_list[1][0]);
     2790                        xyz_front[pt2][1]=xyz_list[1][1]+s1*(xyz_list[0][1]-xyz_list[1][1]);
     2791                        xyz_front[pt2][2]=xyz_list[1][2]+s1*(xyz_list[0][2]-xyz_list[1][2]);
     2792                        xyz_front[pt1][0]=xyz_list[1][0]+s2*(xyz_list[2][0]-xyz_list[1][0]);
     2793                        xyz_front[pt1][1]=xyz_list[1][1]+s2*(xyz_list[2][1]-xyz_list[1][1]);
     2794                        xyz_front[pt1][2]=xyz_list[1][2]+s2*(xyz_list[2][2]-xyz_list[1][2]);
    28122795                }
    28132796                else{
     
    28432826
    28442827        /*Start looping on Gaussian points*/
    2845         Gauss* gauss=this->NewGauss(xyz_list,&xyz_front[0][0],3);
     2828        Gauss* gauss=this->NewGauss(&xyz_list[0][0],&xyz_front[0][0],3);
    28462829        while(gauss->next()){
    28472830                thickness_input->GetInputValue(&thickness,gauss);
     
    28552838        /*Cleanup and return*/
    28562839        delete gauss;
    2857         xDelete<IssmDouble>(xyz_list);
    28582840        return flux;
    28592841}
     
    32823264        IssmDouble  volume;
    32833265        IssmDouble  rho_ice;
    3284         IssmDouble* xyz_list=NULL;
    32853266        int         point1;
    32863267        IssmDouble  fraction1,fraction2;
     
    32913272
    32923273        /* Get node coordinates and dof list: */
    3293         GetVerticesCoordinates(&xyz_list);
     3274        IssmDouble  xyz_list[NUMVERTICES][3];
     3275        ::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
    32943276
    32953277        /*Retrieve inputs required:*/
     
    33133295        while(gauss->next()){
    33143296
    3315                 this->JacobianDeterminant(&Jdet,xyz_list,gauss);
     3297                this->JacobianDeterminant(&Jdet,&xyz_list[0][0],gauss);
    33163298                thickness_input->GetInputValue(&thickness, gauss);
    33173299
     
    33203302
    33213303        /* clean up and Return: */
    3322         xDelete<IssmDouble>(xyz_list);
    33233304        xDelete<IssmDouble>(values);
    33243305        delete gauss;
     
    40464027void       Tria::StrainRateparallel(){/*{{{*/
    40474028
    4048         IssmDouble *xyz_list = NULL;
    40494029        IssmDouble  epsilon[3];
    40504030        GaussTria* gauss=NULL;
     
    40564036
    40574037        /* Get node coordinates and dof list: */
    4058         this->GetVerticesCoordinates(&xyz_list);
     4038   IssmDouble  xyz_list[NUMVERTICES][3];
     4039   ::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
    40594040
    40604041        /*Retrieve all inputs we will need*/
    4061         Input* vx_input=this->GetInput(VxEnum);                                  _assert_(vx_input);
    4062         Input* vy_input=this->GetInput(VyEnum);                                  _assert_(vy_input);
     4042        Input *vx_input = this->GetInput(VxEnum); _assert_(vx_input);
     4043        Input *vy_input = this->GetInput(VyEnum); _assert_(vy_input);
    40634044
    40644045        /* Start looping on the number of vertices: */
     
    40734054
    40744055                /*Compute strain rate viscosity and pressure: */
    4075                 this->StrainRateSSA(&epsilon[0],xyz_list,gauss,vx_input,vy_input);
     4056                this->StrainRateSSA(&epsilon[0],&xyz_list[0][0],gauss,vx_input,vy_input);
    40764057                strainxx=epsilon[0];
    40774058                strainyy=epsilon[1];
     
    40874068        /*Clean up and return*/
    40884069        delete gauss;
    4089         xDelete<IssmDouble>(xyz_list);
    40904070}
    40914071/*}}}*/
    40924072void       Tria::StrainRateperpendicular(){/*{{{*/
    40934073
    4094         IssmDouble *xyz_list = NULL;
    40954074        GaussTria* gauss=NULL;
    40964075        IssmDouble  epsilon[3];
     
    41024081
    41034082        /* Get node coordinates and dof list: */
    4104         this->GetVerticesCoordinates(&xyz_list);
     4083   IssmDouble  xyz_list[NUMVERTICES][3];
     4084   ::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
    41054085
    41064086        /*Retrieve all inputs we will need*/
    4107         Input* vx_input=this->GetInput(VxEnum);                                  _assert_(vx_input);
    4108         Input* vy_input=this->GetInput(VyEnum);                                  _assert_(vy_input);
     4087        Input *vx_input = this->GetInput(VxEnum); _assert_(vx_input);
     4088        Input *vy_input = this->GetInput(VyEnum); _assert_(vy_input);
    41094089
    41104090        /* Start looping on the number of vertices: */
     
    41194099
    41204100                /*Compute strain rate viscosity and pressure: */
    4121                 this->StrainRateSSA(&epsilon[0],xyz_list,gauss,vx_input,vy_input);
     4101                this->StrainRateSSA(&epsilon[0],&xyz_list[0][0],gauss,vx_input,vy_input);
    41224102                strainxx=epsilon[0];
    41234103                strainyy=epsilon[1];
     
    41334113        /*Clean up and return*/
    41344114        delete gauss;
    4135         xDelete<IssmDouble>(xyz_list);
    41364115}
    41374116/*}}}*/
     
    42194198        IssmDouble        xyz_front[2][3];
    42204199
    4221 
    4222         IssmDouble *xyz_list = NULL;
    4223         this->GetVerticesCoordinates(&xyz_list);
     4200   IssmDouble  xyz_list[NUMVERTICES][3];
     4201   ::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
    42244202
    42254203        /*Recover parameters and values*/
     
    42464224                                pt1 = 1; pt2 = 0;
    42474225                        }
    4248                         xyz_front[pt2][0]=xyz_list[3*2+0]+s1*(xyz_list[3*1+0]-xyz_list[3*2+0]);
    4249                         xyz_front[pt2][1]=xyz_list[3*2+1]+s1*(xyz_list[3*1+1]-xyz_list[3*2+1]);
    4250                         xyz_front[pt2][2]=xyz_list[3*2+2]+s1*(xyz_list[3*1+2]-xyz_list[3*2+2]);
    4251                         xyz_front[pt1][0]=xyz_list[3*2+0]+s2*(xyz_list[3*0+0]-xyz_list[3*2+0]);
    4252                         xyz_front[pt1][1]=xyz_list[3*2+1]+s2*(xyz_list[3*0+1]-xyz_list[3*2+1]);
    4253                         xyz_front[pt1][2]=xyz_list[3*2+2]+s2*(xyz_list[3*0+2]-xyz_list[3*2+2]);
     4226                        xyz_front[pt2][0]=xyz_list[2][0]+s1*(xyz_list[1][0]-xyz_list[2][0]);
     4227                        xyz_front[pt2][1]=xyz_list[2][1]+s1*(xyz_list[1][1]-xyz_list[2][1]);
     4228                        xyz_front[pt2][2]=xyz_list[2][2]+s1*(xyz_list[1][2]-xyz_list[2][2]);
     4229                        xyz_front[pt1][0]=xyz_list[2][0]+s2*(xyz_list[0][0]-xyz_list[2][0]);
     4230                        xyz_front[pt1][1]=xyz_list[2][1]+s2*(xyz_list[0][1]-xyz_list[2][1]);
     4231                        xyz_front[pt1][2]=xyz_list[2][2]+s2*(xyz_list[0][2]-xyz_list[2][2]);
    42544232                }
    42554233                else if(gl[1]*gl[2]>0){ //Nodes 1 and 2 are similar, so points must be found on segment 0-1 and 0-2
     
    42624240                        }
    42634241
    4264                         xyz_front[pt1][0]=xyz_list[3*0+0]+s1*(xyz_list[3*1+0]-xyz_list[3*0+0]);
    4265                         xyz_front[pt1][1]=xyz_list[3*0+1]+s1*(xyz_list[3*1+1]-xyz_list[3*0+1]);
    4266                         xyz_front[pt1][2]=xyz_list[3*0+2]+s1*(xyz_list[3*1+2]-xyz_list[3*0+2]);
    4267                         xyz_front[pt2][0]=xyz_list[3*0+0]+s2*(xyz_list[3*2+0]-xyz_list[3*0+0]);
    4268                         xyz_front[pt2][1]=xyz_list[3*0+1]+s2*(xyz_list[3*2+1]-xyz_list[3*0+1]);
    4269                         xyz_front[pt2][2]=xyz_list[3*0+2]+s2*(xyz_list[3*2+2]-xyz_list[3*0+2]);
     4242                        xyz_front[pt1][0]=xyz_list[0][0]+s1*(xyz_list[1][0]-xyz_list[0][0]);
     4243                        xyz_front[pt1][1]=xyz_list[0][1]+s1*(xyz_list[1][1]-xyz_list[0][1]);
     4244                        xyz_front[pt1][2]=xyz_list[0][2]+s1*(xyz_list[1][2]-xyz_list[0][2]);
     4245                        xyz_front[pt2][0]=xyz_list[0][0]+s2*(xyz_list[2][0]-xyz_list[0][0]);
     4246                        xyz_front[pt2][1]=xyz_list[0][1]+s2*(xyz_list[2][1]-xyz_list[0][1]);
     4247                        xyz_front[pt2][2]=xyz_list[0][2]+s2*(xyz_list[2][2]-xyz_list[0][2]);
    42704248                }
    42714249                else if(gl[0]*gl[2]>0){ //Nodes 0 and 2 are similar, so points must be found on segment 1-0 and 1-2
     
    42784256                        }
    42794257
    4280                         xyz_front[pt2][0]=xyz_list[3*1+0]+s1*(xyz_list[3*0+0]-xyz_list[3*1+0]);
    4281                         xyz_front[pt2][1]=xyz_list[3*1+1]+s1*(xyz_list[3*0+1]-xyz_list[3*1+1]);
    4282                         xyz_front[pt2][2]=xyz_list[3*1+2]+s1*(xyz_list[3*0+2]-xyz_list[3*1+2]);
    4283                         xyz_front[pt1][0]=xyz_list[3*1+0]+s2*(xyz_list[3*2+0]-xyz_list[3*1+0]);
    4284                         xyz_front[pt1][1]=xyz_list[3*1+1]+s2*(xyz_list[3*2+1]-xyz_list[3*1+1]);
    4285                         xyz_front[pt1][2]=xyz_list[3*1+2]+s2*(xyz_list[3*2+2]-xyz_list[3*1+2]);
     4258                        xyz_front[pt2][0]=xyz_list[1][0]+s1*(xyz_list[0][0]-xyz_list[1][0]);
     4259                        xyz_front[pt2][1]=xyz_list[1][1]+s1*(xyz_list[0][1]-xyz_list[1][1]);
     4260                        xyz_front[pt2][2]=xyz_list[1][2]+s1*(xyz_list[0][2]-xyz_list[1][2]);
     4261                        xyz_front[pt1][0]=xyz_list[1][0]+s2*(xyz_list[2][0]-xyz_list[1][0]);
     4262                        xyz_front[pt1][1]=xyz_list[1][1]+s2*(xyz_list[2][1]-xyz_list[1][1]);
     4263                        xyz_front[pt1][2]=xyz_list[1][2]+s2*(xyz_list[2][2]-xyz_list[1][2]);
    42864264                }
    42874265                else{
     
    43194297
    43204298        /*Start looping on Gaussian points*/
    4321         Gauss* gauss=this->NewGauss(xyz_list,&xyz_front[0][0],3);
     4299        Gauss* gauss=this->NewGauss(&xyz_list[0][0],&xyz_front[0][0],3);
    43224300        while(gauss->next()){
    43234301                thickness_input->GetInputValue(&thickness,gauss);
     
    43314309        /*Clean up and return*/
    43324310        delete gauss;
    4333         xDelete<IssmDouble>(xyz_list);
    43344311        return flux;
    43354312}
     
    43494326        IssmDouble        xyz_front[2][3];
    43504327
    4351 
    4352         IssmDouble *xyz_list = NULL;
    4353         this->GetVerticesCoordinates(&xyz_list);
     4328   IssmDouble  xyz_list[NUMVERTICES][3];
     4329   ::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
    43544330
    43554331        /*Recover parameters and values*/
     
    43764352                                pt1 = 1; pt2 = 0;
    43774353                        }
    4378                         xyz_front[pt2][0]=xyz_list[3*2+0]+s1*(xyz_list[3*1+0]-xyz_list[3*2+0]);
    4379                         xyz_front[pt2][1]=xyz_list[3*2+1]+s1*(xyz_list[3*1+1]-xyz_list[3*2+1]);
    4380                         xyz_front[pt2][2]=xyz_list[3*2+2]+s1*(xyz_list[3*1+2]-xyz_list[3*2+2]);
    4381                         xyz_front[pt1][0]=xyz_list[3*2+0]+s2*(xyz_list[3*0+0]-xyz_list[3*2+0]);
    4382                         xyz_front[pt1][1]=xyz_list[3*2+1]+s2*(xyz_list[3*0+1]-xyz_list[3*2+1]);
    4383                         xyz_front[pt1][2]=xyz_list[3*2+2]+s2*(xyz_list[3*0+2]-xyz_list[3*2+2]);
     4354                        xyz_front[pt2][0]=xyz_list[2][0]+s1*(xyz_list[1][0]-xyz_list[2][0]);
     4355                        xyz_front[pt2][1]=xyz_list[2][1]+s1*(xyz_list[1][1]-xyz_list[2][1]);
     4356                        xyz_front[pt2][2]=xyz_list[2][2]+s1*(xyz_list[1][2]-xyz_list[2][2]);
     4357                        xyz_front[pt1][0]=xyz_list[2][0]+s2*(xyz_list[0][0]-xyz_list[2][0]);
     4358                        xyz_front[pt1][1]=xyz_list[2][1]+s2*(xyz_list[0][1]-xyz_list[2][1]);
     4359                        xyz_front[pt1][2]=xyz_list[2][2]+s2*(xyz_list[0][2]-xyz_list[2][2]);
    43844360                }
    43854361                else if(gl[1]*gl[2]>0){ //Nodes 1 and 2 are similar, so points must be found on segment 0-1 and 0-2
     
    43924368                        }
    43934369
    4394                         xyz_front[pt1][0]=xyz_list[3*0+0]+s1*(xyz_list[3*1+0]-xyz_list[3*0+0]);
    4395                         xyz_front[pt1][1]=xyz_list[3*0+1]+s1*(xyz_list[3*1+1]-xyz_list[3*0+1]);
    4396                         xyz_front[pt1][2]=xyz_list[3*0+2]+s1*(xyz_list[3*1+2]-xyz_list[3*0+2]);
    4397                         xyz_front[pt2][0]=xyz_list[3*0+0]+s2*(xyz_list[3*2+0]-xyz_list[3*0+0]);
    4398                         xyz_front[pt2][1]=xyz_list[3*0+1]+s2*(xyz_list[3*2+1]-xyz_list[3*0+1]);
    4399                         xyz_front[pt2][2]=xyz_list[3*0+2]+s2*(xyz_list[3*2+2]-xyz_list[3*0+2]);
     4370                        xyz_front[pt1][0]=xyz_list[0][0]+s1*(xyz_list[1][0]-xyz_list[0][0]);
     4371                        xyz_front[pt1][1]=xyz_list[0][1]+s1*(xyz_list[1][1]-xyz_list[0][1]);
     4372                        xyz_front[pt1][2]=xyz_list[0][2]+s1*(xyz_list[1][2]-xyz_list[0][2]);
     4373                        xyz_front[pt2][0]=xyz_list[0][0]+s2*(xyz_list[2][0]-xyz_list[0][0]);
     4374                        xyz_front[pt2][1]=xyz_list[0][1]+s2*(xyz_list[2][1]-xyz_list[0][1]);
     4375                        xyz_front[pt2][2]=xyz_list[0][2]+s2*(xyz_list[2][2]-xyz_list[0][2]);
    44004376                }
    44014377                else if(gl[0]*gl[2]>0){ //Nodes 0 and 2 are similar, so points must be found on segment 1-0 and 1-2
     
    44084384                        }
    44094385
    4410                         xyz_front[pt2][0]=xyz_list[3*1+0]+s1*(xyz_list[3*0+0]-xyz_list[3*1+0]);
    4411                         xyz_front[pt2][1]=xyz_list[3*1+1]+s1*(xyz_list[3*0+1]-xyz_list[3*1+1]);
    4412                         xyz_front[pt2][2]=xyz_list[3*1+2]+s1*(xyz_list[3*0+2]-xyz_list[3*1+2]);
    4413                         xyz_front[pt1][0]=xyz_list[3*1+0]+s2*(xyz_list[3*2+0]-xyz_list[3*1+0]);
    4414                         xyz_front[pt1][1]=xyz_list[3*1+1]+s2*(xyz_list[3*2+1]-xyz_list[3*1+1]);
    4415                         xyz_front[pt1][2]=xyz_list[3*1+2]+s2*(xyz_list[3*2+2]-xyz_list[3*1+2]);
     4386                        xyz_front[pt2][0]=xyz_list[1][0]+s1*(xyz_list[0][0]-xyz_list[1][0]);
     4387                        xyz_front[pt2][1]=xyz_list[1][1]+s1*(xyz_list[0][1]-xyz_list[1][1]);
     4388                        xyz_front[pt2][2]=xyz_list[1][2]+s1*(xyz_list[0][2]-xyz_list[1][2]);
     4389                        xyz_front[pt1][0]=xyz_list[1][0]+s2*(xyz_list[2][0]-xyz_list[1][0]);
     4390                        xyz_front[pt1][1]=xyz_list[1][1]+s2*(xyz_list[2][1]-xyz_list[1][1]);
     4391                        xyz_front[pt1][2]=xyz_list[1][2]+s2*(xyz_list[2][2]-xyz_list[1][2]);
    44164392                }
    44174393                else{
     
    44554431
    44564432        /*Start looping on Gaussian points*/
    4457         Gauss* gauss=this->NewGauss(xyz_list,&xyz_front[0][0],3);
     4433        Gauss* gauss=this->NewGauss(&xyz_list[0][0],&xyz_front[0][0],3);
    44584434        while(gauss->next()){
    44594435                thickness_input->GetInputValue(&thickness,gauss);
Note: See TracChangeset for help on using the changeset viewer.