Changeset 5662


Ignore:
Timestamp:
09/03/10 09:38:58 (15 years ago)
Author:
Mathieu Morlighem
Message:

Added NUMVERTICES macro

Location:
issm/trunk/src/c/objects/Elements
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk/src/c/objects/Elements/Penta.cpp

    r5660 r5662  
    1818#include "../../Container/Container.h"
    1919/*}}}*/
     20
     21/*Element macros*/
     22#define NUMVERTICES 6
    2023
    2124/*Penta constructors and destructor*/
     
    482485
    483486        int i,j;
    484         const int numgrids=6;
    485         int    doflist[numgrids];
    486         double xyz_list[numgrids][3];
     487        int    doflist[NUMVERTICES];
     488        double xyz_list[NUMVERTICES][3];
    487489        double xyz_list_tria[3][3];
    488490
     
    555557
    556558        /* Get node coordinates and dof list: */
    557         GetVerticesCoordinates(&xyz_list[0][0], nodes, numgrids);
     559        GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES);
    558560        for(i=0;i<3;i++){
    559561                for(j=0;j<3;j++){
     
    968970
    969971        int i;
    970         const int numvertices=6;
    971         int doflist1[numvertices];
     972        int doflist1[NUMVERTICES];
    972973
    973974        /*Find NameEnum input in the inputs dataset, and get it to fill in the vector: */
     
    11071108
    11081109        /*Intermediaries*/
    1109         const int numvertices=6;
    11101110        bool onbed;
    11111111        int  step,i;
     
    11191119        Input* depth_averaged_input=NULL;
    11201120
    1121         double  xyz_list[numvertices][3];
    1122         double  Helem_list[numvertices];
    1123         double  zeros_list[numvertices]={0.0};
     1121        double  xyz_list[NUMVERTICES][3];
     1122        double  Helem_list[NUMVERTICES];
     1123        double  zeros_list[NUMVERTICES]={0.0};
    11241124
    11251125        /*recover parameters: */
     
    11571157
    11581158                /*Step2: Create element thickness input*/
    1159                 GetVerticesCoordinates(&xyz_list[0][0],penta->nodes,numvertices);
     1159                GetVerticesCoordinates(&xyz_list[0][0],penta->nodes,NUMVERTICES);
    11601160                for(i=0;i<3;i++){
    11611161                        Helem_list[i]=xyz_list[i+3][2]-xyz_list[i][2];
     
    17051705        /*output: */
    17061706        int     numrows     = 0;
    1707         int     numvertices = 0;
    17081707        int     numnodes    = 0;
    17091708
     
    17141713                numrows++;
    17151714                /*now, how many vertices and how many nodal values for this result? :*/
    1716                 numvertices=6; //this is a penta element, with 6 vertices
    17171715                numnodes=elementresult->NumberOfNodalValues(); //ask result object.
    17181716        }
     
    17201718        /*Assign output pointers:*/
    17211719        *pnumrows=numrows;
    1722         *pnumvertices=numvertices;
     1720        *pnumvertices=NUMVERTICES;
    17231721        *pnumnodes=numnodes;
    17241722       
     
    21532151
    21542152        /* node data: */
    2155         const int    numgridsm=3;  //MacAyealnumgrids
    2156         const int    numdofm=2*numgridsm;
    2157         const int    numgridsp=6; //Pattyn numgrids
    2158         const int    numdofp=2*numgridsp;
    2159         double       xyz_list[numgridsp][3];
     2153        const int    NUMVERTICESm=3;  //MacAyealNUMVERTICES
     2154        const int    numdofm=2*NUMVERTICESm;
     2155        const int    NUMVERTICESp=6; //Pattyn NUMVERTICES
     2156        const int    numdofp=2*NUMVERTICESp;
     2157        double       xyz_list[NUMVERTICESp][3];
    21602158        int*         doflistm=NULL;
    21612159        int*         doflistp=NULL;
     
    22262224
    22272225        /* Get node coordinates and dof list: */
    2228         GetVerticesCoordinates(&xyz_list[0][0], nodes, numgridsp);
     2226        GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICESp);
    22292227        tria->GetDofList(&doflistm,MacAyealApproximationEnum);  //Pattyn dof list
    22302228        GetDofList(&doflistp,PattynApproximationEnum); //MacAyeal dof list
     
    23042302        /*Collapsed formulation: */
    23052303        int       i;
    2306         const int numgrids=6;
    23072304        const int NDOF2=2;
    2308         const int numdofs=NDOF2*numgrids;
     2305        const int numdofs=NDOF2*NUMVERTICES;
    23092306        int*      doflist=NULL;
    23102307        double    Ke_gg[numdofs][numdofs]={0.0};
     
    23892386
    23902387        /* node data: */
    2391         const int    numgrids3d=6;
    2392         const int    numgrids2d=3;
    2393         const int    numdof2d=2*numgrids2d;
    2394         double       xyz_list[numgrids3d][3];
     2388        const int    NUMVERTICES3d=6;
     2389        const int    NUMVERTICES2d=3;
     2390        const int    numdof2d=2*NUMVERTICES2d;
     2391        double       xyz_list[NUMVERTICES3d][3];
    23952392        int*         doflist=NULL;
    23962393
     
    25002497
    25012498                /* Get node coordinates and dof list: */
    2502                 GetVerticesCoordinates(&xyz_list[0][0], nodes, numgrids3d);
     2499                GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES3d);
    25032500                tria->GetDofList(&doflist,MacAyealApproximationEnum);  //Pattyn dof list
    25042501
     
    25762573
    25772574        /* node data: */
    2578         const int    numgrids=6;
    2579         const int    numdof=2*numgrids;
    2580         double       xyz_list[numgrids][3];
     2575        const int    numdof=2*NUMVERTICES;
     2576        double       xyz_list[NUMVERTICES][3];
    25812577        int*         doflist=NULL;
    25822578
     
    26482644
    26492645        /* Get node coordinates and dof list: */
    2650         GetVerticesCoordinates(&xyz_list[0][0], nodes, numgrids);
     2646        GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES);
    26512647        GetDofList(&doflist,PattynApproximationEnum);
    26522648
     
    27192715
    27202716        int i,j;
    2721         const int numgrids=6;
    27222717        const int DOFPERGRID=4;
    2723         const int numdof=numgrids*DOFPERGRID;
     2718        const int numdof=NUMVERTICES*DOFPERGRID;
    27242719        int*      doflist=NULL;
    27252720
    2726         const int numgrids2d=3;
    2727         const int numdof2d=numgrids2d*DOFPERGRID;
     2721        const int NUMVERTICES2d=3;
     2722        const int numdof2d=NUMVERTICES2d*DOFPERGRID;
    27282723
    27292724        /*Collapsed formulation: */
     
    27312726
    27322727        /*Grid data: */
    2733         double     xyz_list[numgrids][3];
    2734         double    xyz_list_tria[numgrids2d][3];
     2728        double     xyz_list[NUMVERTICES][3];
     2729        double    xyz_list_tria[NUMVERTICES2d][3];
    27352730        double    bed_normal[3];
    27362731
     
    27592754        double* area_gauss_weights  =  NULL;
    27602755        double* vert_gauss_weights  =  NULL;
    2761         double  gaussgrids[numgrids][4]={{1,0,0,-1},{0,1,0,-1},{0,0,1,-1},{1,0,0,1},{0,1,0,1},{0,0,1,1}};
     2756        double  gaussgrids[NUMVERTICES][4]={{1,0,0,-1},{0,1,0,-1},{0,0,1,-1},{1,0,0,1},{0,1,0,1},{0,0,1,1}};
    27622757
    27632758        /* specific gaussian point: */
     
    28022797
    28032798        /* Get node coordinates and dof list: */
    2804         GetVerticesCoordinates(&xyz_list[0][0], nodes, numgrids);
     2799        GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES);
    28052800        GetDofList(&doflist,StokesApproximationEnum);
    28062801
     
    28772872                friction=new Friction("3d",inputs,matpar,analysis_type);
    28782873
    2879                 for(i=0;i<numgrids2d;i++){
     2874                for(i=0;i<NUMVERTICES2d;i++){
    28802875                        for(j=0;j<3;j++){
    28812876                                xyz_list_tria[i][j]=xyz_list[i][j];
     
    29752970
    29762971        /* node data: */
    2977         const int    numgrids=6;
    29782972        const int    NDOF1=1;
    2979         const int    numdof=NDOF1*numgrids;
    2980         double       xyz_list[numgrids][3];
     2973        const int    numdof=NDOF1*NUMVERTICES;
     2974        double       xyz_list[NUMVERTICES][3];
    29812975        int*         doflist=NULL;
    29822976
     
    29892983        double  Ke_gg_gaussian[numdof][numdof];
    29902984        double  Jdet;
    2991         double  B[NDOF1][numgrids];
    2992         double  Bprime[NDOF1][numgrids];
     2985        double  B[NDOF1][NUMVERTICES];
     2986        double  Bprime[NDOF1][NUMVERTICES];
    29932987        double  DL_scalar;
    29942988
     
    30183012
    30193013        /* Get node coordinates and dof list: */
    3020         GetVerticesCoordinates(&xyz_list[0][0], nodes, numgrids);
     3014        GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES);
    30213015        GetDofList(&doflist);
    30223016
     
    30363030
    30373031                /*  Do the triple product tB*D*Bprime: */
    3038                 TripleMultiply( &B[0][0],1,numgrids,1,
     3032                TripleMultiply( &B[0][0],1,NUMVERTICES,1,
    30393033                                        &DL_scalar,1,1,0,
    3040                                         &Bprime[0][0],1,numgrids,0,
     3034                                        &Bprime[0][0],1,NUMVERTICES,0,
    30413035                                        &Ke_gg_gaussian[0][0],0);
    30423036
     
    31543148
    31553149        /* node data: */
    3156         const int    numgrids=6;
    31573150        const int    NDOF1=1;
    3158         const int    numdof=NDOF1*numgrids;
    3159         double       xyz_list[numgrids][3];
     3151        const int    numdof=NDOF1*NUMVERTICES;
     3152        double       xyz_list[NUMVERTICES][3];
    31603153        int*         doflist=NULL;
    31613154
     
    32223215
    32233216        /* Get node coordinates and dof list: */
    3224         GetVerticesCoordinates(&xyz_list[0][0], nodes, numgrids);
     3217        GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES);
    32253218        GetDofList(&doflist);
    32263219
     
    34873480        int i,j,k;
    34883481       
    3489         const int numgrids=6;
    34903482        const int NDOF2=2;
    3491         const int numdofs=NDOF2*numgrids;
     3483        const int numdofs=NDOF2*NUMVERTICES;
    34923484        int*      doflist=NULL;
    34933485        double    pe_g[numdofs]={0.0};
    3494         double    xyz_list[numgrids][3];
    3495         double    z_list[numgrids];
     3486        double    xyz_list[NUMVERTICES][3];
     3487        double    z_list[NUMVERTICES];
    34963488        double    z_segment[2];
    34973489        double    slope2,constant_part;
     
    35553547        slopey_input=inputs->GetInput(SurfaceSlopeYEnum);
    35563548
    3557         GetVerticesCoordinates(&xyz_list[0][0], nodes, numgrids);
    3558         for(i=0;i<numgrids;i++)z_list[i]=xyz_list[i][2];
     3549        GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES);
     3550        for(i=0;i<NUMVERTICES;i++)z_list[i]=xyz_list[i][2];
    35593551
    35603552        //Get gaussian points and weights. order 2 since we have a product of 2 nodal functions
     
    36753667
    36763668        /* node data: */
    3677         const int    numgrids=6;
    36783669        const int    NDOF2=2;
    3679         const int    numdof=NDOF2*numgrids;
    3680         double       xyz_list[numgrids][3];
     3670        const int    numdof=NDOF2*NUMVERTICES;
     3671        double       xyz_list[NUMVERTICES][3];
    36813672        int*         doflist=NULL;
    36823673
     
    37143705
    37153706        /* Get node coordinates and dof list: */
    3716         GetVerticesCoordinates(&xyz_list[0][0], nodes, numgrids);
     3707        GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES);
    37173708        GetDofList(&doflist,PattynApproximationEnum);
    37183709
     
    37433734
    37443735                /*Build pe_g_gaussian vector: */
    3745                 for (i=0;i<numgrids;i++){
     3736                for (i=0;i<NUMVERTICES;i++){
    37463737                        for (j=0;j<NDOF2;j++){
    37473738                                pe_g_gaussian[i*NDOF2+j]=-driving_stress_baseline*slope[j]*Jdet*gauss->weight*l1l6[i];
     
    37663757        int i,j;
    37673758
    3768         const int numgrids=6;
    37693759        const int DOFPERGRID=4;
    3770         const int numdof=numgrids*DOFPERGRID;
    3771         const int numgrids2d=3;
    3772         int       numdof2d=numgrids2d*DOFPERGRID;
     3760        const int numdof=NUMVERTICES*DOFPERGRID;
     3761        const int NUMVERTICES2d=3;
     3762        int       numdof2d=NUMVERTICES2d*DOFPERGRID;
    37733763        int*      doflist=NULL;
    37743764
     
    37773767
    37783768        /*parameters: */
    3779         double             xyz_list_tria[numgrids2d][3];
    3780         double         xyz_list[numgrids][3];
     3769        double             xyz_list_tria[NUMVERTICES2d][3];
     3770        double         xyz_list[NUMVERTICES][3];
    37813771        double             bed_normal[3];
    37823772        double         bed;
     
    38573847
    38583848        /* Get node coordinates and dof list: */
    3859         GetVerticesCoordinates(&xyz_list[0][0], nodes, numgrids);
     3849        GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES);
    38603850        GetDofList(&doflist,StokesApproximationEnum);
    38613851
     
    38983888
    38993889                        /* Build gaussian vector */
    3900                         for(i=0;i<numgrids+1;i++){
     3890                        for(i=0;i<NUMVERTICES+1;i++){
    39013891                                Pe_gaussian[i*DOFPERGRID+2]=-rho_ice*gravity*Jdet*gauss_weight*l1l7[i];
    39023892                        }
     
    39443934        if ( (onbed==1) && (shelf==1)){
    39453935
    3946                 for(i=0;i<numgrids2d;i++){
     3936                for(i=0;i<NUMVERTICES2d;i++){
    39473937                        for(j=0;j<3;j++){
    39483938                                xyz_list_tria[i][j]=xyz_list[i][j];
     
    39803970                        BedNormal(&bed_normal[0],xyz_list_tria);
    39813971
    3982                         for(i=0;i<numgrids2d;i++){
     3972                        for(i=0;i<NUMVERTICES2d;i++){
    39833973                                for(j=0;j<3;j++){
    39843974                                        Pe_temp[i*DOFPERGRID+j]+=water_pressure*gauss_weight*Jdet2d*L[i]*bed_normal[j];
     
    40354025
    40364026        /* node data: */
    4037         const int    numgrids=6;
    40384027        const int    NDOF1=1;
    4039         const int    numdof=NDOF1*numgrids;
    4040         double       xyz_list[numgrids][3];
     4028        const int    numdof=NDOF1*NUMVERTICES;
     4029        double       xyz_list[NUMVERTICES][3];
    40414030        int*         doflist=NULL;
    40424031
     
    40844073        /*Now, handle the standard penta element: */
    40854074        /* Get node coordinates and dof list: */
    4086         GetVerticesCoordinates(&xyz_list[0][0], nodes, numgrids);
     4075        GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES);
    40874076        GetDofList(&doflist);
    40884077
     
    41104099
    41114100                /*Build pe_g_gaussian vector: */
    4112                 for (i=0;i<numgrids;i++){
     4101                for (i=0;i<NUMVERTICES;i++){
    41134102                        pe_g_gaussian[i]=(dudx+dvdy)*Jdet*gauss->weight*l1l6[i];
    41144103                }
     
    42004189        int found=0;
    42014190
    4202         const int  numgrids=6;
    42034191        const int  NDOF1=1;
    4204         const int  numdof=numgrids*NDOF1;
     4192        const int  numdof=NUMVERTICES*NDOF1;
    42054193        int*       doflist=NULL;
    42064194
    42074195        /*Grid data: */
    4208         double        xyz_list[numgrids][3];
     4196        double        xyz_list[NUMVERTICES][3];
    42094197
    42104198        /* gaussian points: */
     
    42124200        GaussPenta *gauss=NULL;
    42134201
    4214         double temperature_list[numgrids];
     4202        double temperature_list[NUMVERTICES];
    42154203        double temperature;
    42164204
     
    42694257
    42704258        /* Get node coordinates and dof list: */
    4271         GetVerticesCoordinates(&xyz_list[0][0], nodes, numgrids);
     4259        GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES);
    42724260        GetDofList(&doflist);
    42734261
     
    43094297                if(dt) scalar_def=scalar_def*dt;
    43104298
    4311                 for(i=0;i<numgrids;i++) P_terms[i]+=scalar_def*L[i];
     4299                for(i=0;i<NUMVERTICES;i++) P_terms[i]+=scalar_def*L[i];
    43124300
    43134301                /* Build transient now */
     
    43154303                        temperature_input->GetParameterValue(&temperature, gauss);
    43164304                        scalar_transient=temperature*Jdet*gauss->weight;
    4317                         for(i=0;i<numgrids;i++) P_terms[i]+=scalar_transient*L[i];
     4305                        for(i=0;i<NUMVERTICES;i++) P_terms[i]+=scalar_transient*L[i];
    43184306                }
    43194307        }
     
    44354423
    44364424        /*Intermediaries*/
    4437         const int  numvertices = 6;
    4438         double     value[numvertices];
     4425        double     value[NUMVERTICES];
    44394426        GaussPenta *gauss              = NULL;
    44404427
     
    44484435        /* Start looping on the number of vertices: */
    44494436        gauss=new GaussPenta();
    4450         for (int iv=0;iv<numvertices;iv++){
     4437        for (int iv=0;iv<NUMVERTICES;iv++){
    44514438                gauss->GaussVertex(iv);
    44524439                input->GetParameterValue(&pvalue[iv],gauss);
     
    44614448
    44624449        /*Intermediaries*/
    4463         const int  numvertices = 6;
    4464         double     value[numvertices];
     4450        double     value[NUMVERTICES];
    44654451        GaussPenta *gauss              = NULL;
    44664452
     
    44744460        if (input){
    44754461                gauss=new GaussPenta();
    4476                 for (int iv=0;iv<numvertices;iv++){
     4462                for (int iv=0;iv<NUMVERTICES;iv++){
    44774463                        gauss->GaussVertex(iv);
    44784464                        input->GetParameterValue(&pvalue[iv],gauss);
     
    44804466        }
    44814467        else{
    4482                 for (int iv=0;iv<numvertices;iv++) pvalue[iv]=defaultvalue;
     4468                for (int iv=0;iv<NUMVERTICES;iv++) pvalue[iv]=defaultvalue;
    44834469        }
    44844470
     
    46564642        int i;
    46574643
    4658         const int    numvertices=6;
    46594644        const int    numdofpervertex=2;
    4660         const int    numdof=numdofpervertex*numvertices;
    4661         double       gauss[numvertices][4]={{1,0,0,-1},{0,1,0,-1},{0,0,1,-1},{1,0,0,1},{0,1,0,1},{0,0,1,1}};
     4645        const int    numdof=numdofpervertex*NUMVERTICES;
     4646        double       gauss[NUMVERTICES][4]={{1,0,0,-1},{0,1,0,-1},{0,0,1,-1},{1,0,0,1},{0,1,0,1},{0,0,1,1}};
    46624647        int*         doflist=NULL;
    46634648        double       values[numdof];
     
    46804665        /*Ok, we have vx and vy in values, fill in vx and vy arrays: */
    46814666        /*P1 element only for now*/
    4682         for(i=0;i<numvertices;i++){
     4667        for(i=0;i<NUMVERTICES;i++){
    46834668
    46844669                /*Recover vx and vy*/
     
    47014686        int i;
    47024687
    4703         const int    numvertices=6;
    47044688        const int    numdofpervertex=2;
    4705         const int    numdof=numdofpervertex*numvertices;
    4706         double       gauss[numvertices][4]={{1,0,0,-1},{0,1,0,-1},{0,0,1,-1},{1,0,0,1},{0,1,0,1},{0,0,1,1}};
     4689        const int    numdof=numdofpervertex*NUMVERTICES;
     4690        double       gauss[NUMVERTICES][4]={{1,0,0,-1},{0,1,0,-1},{0,0,1,-1},{1,0,0,1},{0,1,0,1},{0,0,1,1}};
    47074691        int*         doflist=NULL;
    47084692        double       values[numdof];
     
    47154699        /*Ok, we have vx and vy in values, fill in vx and vy arrays: */
    47164700        /*P1 element only for now*/
    4717         for(i=0;i<numvertices;i++){
     4701        for(i=0;i<NUMVERTICES;i++){
    47184702
    47194703                /*Recover vx and vy*/
     
    47364720        int i;
    47374721
    4738         const int    numvertices=6;
    47394722        const int    numdofpervertex=1;
    4740         const int    numdof=numdofpervertex*numvertices;
    4741         double       gauss[numvertices][4]={{1,0,0,-1},{0,1,0,-1},{0,0,1,-1},{1,0,0,1},{0,1,0,1},{0,0,1,1}};
     4723        const int    numdof=numdofpervertex*NUMVERTICES;
     4724        double       gauss[NUMVERTICES][4]={{1,0,0,-1},{0,1,0,-1},{0,0,1,-1},{1,0,0,1},{0,1,0,1},{0,0,1,1}};
    47424725        int*         doflist=NULL;
    47434726        double       values[numdof];
     
    47494732        /*Ok, we have vx and vy in values, fill in vx and vy arrays: */
    47504733        /*P1 element only for now*/
    4751         for(i=0;i<numvertices;i++){
     4734        for(i=0;i<NUMVERTICES;i++){
    47524735
    47534736                /*Recover vz */
     
    47684751        int i;
    47694752
    4770         const int    numvertices=6;
    47714753        const int    numdofpervertex=4;
    4772         const int    numdof=numdofpervertex*numvertices;
    4773         double       gauss[numvertices][4]={{1,0,0,-1},{0,1,0,-1},{0,0,1,-1},{1,0,0,1},{0,1,0,1},{0,0,1,1}};
     4754        const int    numdof=numdofpervertex*NUMVERTICES;
     4755        double       gauss[NUMVERTICES][4]={{1,0,0,-1},{0,1,0,-1},{0,0,1,-1},{1,0,0,1},{0,1,0,1},{0,0,1,1}};
    47744756        int*         doflist=NULL;
    47754757        double       values[numdof];
     
    47854767        /*Ok, we have vx vy vz and P in values, fill in vx vy vz P arrays: */
    47864768        /*P1 element only for now*/
    4787         for(i=0;i<numvertices;i++){
     4769        for(i=0;i<NUMVERTICES;i++){
    47884770
    47894771                /*Recover vx and vy*/
     
    48104792        int i;
    48114793
    4812         const int    numvertices=6;
    48134794        const int    numdofpervertex=1;
    4814         const int    numdof=numdofpervertex*numvertices;
    4815         double       gauss[numvertices][4]={{1,0,0,-1},{0,1,0,-1},{0,0,1,-1},{1,0,0,1},{0,1,0,1},{0,0,1,1}};
     4795        const int    numdof=numdofpervertex*NUMVERTICES;
     4796        double       gauss[NUMVERTICES][4]={{1,0,0,-1},{0,1,0,-1},{0,0,1,-1},{1,0,0,1},{0,1,0,1},{0,0,1,1}};
    48164797        int*         doflist=NULL;
    48174798        double       values[numdof];
     
    48244805        /*Ok, we have vx and vy in values, fill in vx and vy arrays: */
    48254806        /*P1 element only for now*/
    4826         for(i=0;i<numvertices;i++){
     4807        for(i=0;i<NUMVERTICES;i++){
    48274808
    48284809                /*Recover vz */
     
    51965177        int i;
    51975178
    5198         const int    numvertices=6;
    51995179        const int    numdofpervertex=2;
    5200         const int    numdof=numdofpervertex*numvertices;
     5180        const int    numdof=numdofpervertex*NUMVERTICES;
    52015181        int*         doflist=NULL;
    52025182        double       values[numdof];
    5203         double       vx[numvertices];
    5204         double       vy[numvertices];
    5205         double       vz[numvertices];
    5206         double       vel[numvertices];
     5183        double       vx[NUMVERTICES];
     5184        double       vy[NUMVERTICES];
     5185        double       vz[NUMVERTICES];
     5186        double       vel[NUMVERTICES];
    52075187        int          dummy;
    5208         double       pressure[numvertices];
    5209         double       surface[numvertices];
     5188        double       pressure[NUMVERTICES];
     5189        double       surface[NUMVERTICES];
    52105190        double       rho_ice,g;
    5211         double       xyz_list[numvertices][3];
    5212         double       gauss[numvertices][4]={{1,0,0,-1},{0,1,0,-1},{0,0,1,-1},{1,0,0,1},{0,1,0,1},{0,0,1,1}};
     5191        double       xyz_list[NUMVERTICES][3];
     5192        double       gauss[NUMVERTICES][4]={{1,0,0,-1},{0,1,0,-1},{0,0,1,-1},{1,0,0,1},{0,1,0,1},{0,0,1,1}};
    52135193
    52145194        Input  *vz_input        = NULL;
     
    52435223
    52445224                /*Get node data: */
    5245                 GetVerticesCoordinates(&xyz_list[0][0],penta->nodes,numvertices);
     5225                GetVerticesCoordinates(&xyz_list[0][0],penta->nodes,NUMVERTICES);
    52465226
    52475227                /*Now Compute vel*/
     
    52505230                        if (vz_input->Enum()!=PentaVertexInputEnum) ISSMERROR("Cannot compute Vel as Vz is of type %s",EnumToString(vz_input->Enum()));
    52515231                        vz_input->GetValuesPtr(&vz_ptr,&dummy);
    5252                         for(i=0;i<numvertices;i++) vz[i]=vz_ptr[i];
    5253                 }
    5254                 else{for(i=0;i<numvertices;i++) vz[i]=0.0;}
    5255                 for(i=0;i<numvertices;i++) vel[i]=pow( pow(vx[i],2.0) + pow(vy[i],2.0) + pow(vz[i],2.0) , 0.5);
     5232                        for(i=0;i<NUMVERTICES;i++) vz[i]=vz_ptr[i];
     5233                }
     5234                else{for(i=0;i<NUMVERTICES;i++) vz[i]=0.0;}
     5235                for(i=0;i<NUMVERTICES;i++) vel[i]=pow( pow(vx[i],2.0) + pow(vy[i],2.0) + pow(vz[i],2.0) , 0.5);
    52565236
    52575237                /*Now compute pressure*/
    52585238                GetParameterListOnVertices(&surface[0],SurfaceEnum);
    5259                 for(i=0;i<numvertices;i++) pressure[i]=rho_ice*g*(surface[i]-xyz_list[i][2]);
     5239                for(i=0;i<NUMVERTICES;i++) pressure[i]=rho_ice*g*(surface[i]-xyz_list[i][2]);
    52605240
    52615241                /*Now, we have to move the previous Vx and Vy inputs  to old
     
    52875267        int i;
    52885268
    5289         const int    numvertices=6;
    5290         const int    numvertices2d=3;
     5269        const int    NUMVERTICES2d=3;
    52915270        const int    numdofpervertex=2;
    5292         const int    numdof=numdofpervertex*numvertices;
    5293         const int    numdof2d=numdofpervertex*numvertices2d;
     5271        const int    numdof=numdofpervertex*NUMVERTICES;
     5272        const int    numdof2d=numdofpervertex*NUMVERTICES2d;
    52945273        int*         doflistp=NULL;
    52955274        int*         doflistm=NULL;
    52965275        double       macayeal_values[numdof];
    52975276        double       pattyn_values[numdof];
    5298         double       vx[numvertices];
    5299         double       vy[numvertices];
    5300         double       vz[numvertices];
    5301         double       vel[numvertices];
     5277        double       vx[NUMVERTICES];
     5278        double       vy[NUMVERTICES];
     5279        double       vz[NUMVERTICES];
     5280        double       vel[NUMVERTICES];
    53025281        int          dummy;
    5303         double       pressure[numvertices];
    5304         double       surface[numvertices];
     5282        double       pressure[NUMVERTICES];
     5283        double       surface[NUMVERTICES];
    53055284        double       rho_ice,g;
    5306         double       xyz_list[numvertices][3];
    5307         double       gauss[numvertices][4]={{1,0,0,-1},{0,1,0,-1},{0,0,1,-1},{1,0,0,1},{0,1,0,1},{0,0,1,1}};
     5285        double       xyz_list[NUMVERTICES][3];
     5286        double       gauss[NUMVERTICES][4]={{1,0,0,-1},{0,1,0,-1},{0,0,1,-1},{1,0,0,1},{0,1,0,1},{0,0,1,1}};
    53085287
    53095288        Input  *vz_input       = NULL;
     
    53205299
    53215300        /*Get node data: */
    5322         GetVerticesCoordinates(&xyz_list[0][0], nodes, numvertices);
     5301        GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES);
    53235302
    53245303        /*Use the dof list to index into the solution vector: */
     
    53335312
    53345313        /*Ok, we have vx and vy in values, fill in vx and vy arrays: */
    5335         for(i=0;i<numvertices;i++){
     5314        for(i=0;i<NUMVERTICES;i++){
    53365315                vx[i]=macayeal_values[i*numdofpervertex+0]+pattyn_values[i*numdofpervertex+0];
    53375316                vy[i]=macayeal_values[i*numdofpervertex+1]+pattyn_values[i*numdofpervertex+1];
     
    53455324                }
    53465325                vz_input->GetValuesPtr(&vz_ptr,&dummy);
    5347                 for(i=0;i<numvertices;i++) vz[i]=vz_ptr[i];
     5326                for(i=0;i<NUMVERTICES;i++) vz[i]=vz_ptr[i];
    53485327        }
    53495328        else{
    5350                 for(i=0;i<numvertices;i++) vz[i]=0.0;
     5329                for(i=0;i<NUMVERTICES;i++) vz[i]=0.0;
    53515330        }
    53525331
    53535332        /*Now Compute vel*/
    5354         for(i=0;i<numvertices;i++) {
     5333        for(i=0;i<NUMVERTICES;i++) {
    53555334                vel[i]=pow( pow(vx[i],2.0) + pow(vy[i],2.0) + pow(vz[i],2.0) , 0.5);
    53565335        }
     
    53615340        g=matpar->GetG();
    53625341        GetParameterListOnVertices(&surface[0],SurfaceEnum);
    5363         for(i=0;i<numvertices;i++) pressure[i]=rho_ice*g*(surface[i]-xyz_list[i][2]);
     5342        for(i=0;i<NUMVERTICES;i++) pressure[i]=rho_ice*g*(surface[i]-xyz_list[i][2]);
    53645343
    53655344        /*Now, we have to move the previous Vx and Vy inputs  to old
     
    53855364        int i;
    53865365
    5387         const int    numvertices=6;
    53885366        const int    numdofpervertex=2;
    5389         const int    numdof=numdofpervertex*numvertices;
     5367        const int    numdof=numdofpervertex*NUMVERTICES;
    53905368        int*         doflist=NULL;
    53915369        double       values[numdof];
    5392         double       vx[numvertices];
    5393         double       vy[numvertices];
    5394         double       vz[numvertices];
    5395         double       vel[numvertices];
     5370        double       vx[NUMVERTICES];
     5371        double       vy[NUMVERTICES];
     5372        double       vz[NUMVERTICES];
     5373        double       vel[NUMVERTICES];
    53965374        int          dummy;
    5397         double       pressure[numvertices];
    5398         double       surface[numvertices];
     5375        double       pressure[NUMVERTICES];
     5376        double       surface[NUMVERTICES];
    53995377        double       rho_ice,g;
    5400         double       xyz_list[numvertices][3];
    5401         double       gauss[numvertices][4]={{1,0,0,-1},{0,1,0,-1},{0,0,1,-1},{1,0,0,1},{0,1,0,1},{0,0,1,1}};
     5378        double       xyz_list[NUMVERTICES][3];
     5379        double       gauss[NUMVERTICES][4]={{1,0,0,-1},{0,1,0,-1},{0,0,1,-1},{1,0,0,1},{0,1,0,1},{0,0,1,1}};
    54025380       
    54035381        Input  *vz_input        = NULL;
     
    54085386
    54095387        /*Get node data: */
    5410         GetVerticesCoordinates(&xyz_list[0][0], nodes, numvertices);
     5388        GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES);
    54115389
    54125390        /*Use the dof list to index into the solution vector: */
     
    54165394
    54175395        /*Ok, we have vx and vy in values, fill in vx and vy arrays: */
    5418         for(i=0;i<numvertices;i++){
     5396        for(i=0;i<NUMVERTICES;i++){
    54195397                vx[i]=values[i*numdofpervertex+0];
    54205398                vy[i]=values[i*numdofpervertex+1];
     
    54285406                }
    54295407                vz_input->GetValuesPtr(&vz_ptr,&dummy);
    5430                 for(i=0;i<numvertices;i++) vz[i]=vz_ptr[i];
     5408                for(i=0;i<NUMVERTICES;i++) vz[i]=vz_ptr[i];
    54315409        }
    54325410        else{
    5433                 for(i=0;i<numvertices;i++) vz[i]=0.0;
     5411                for(i=0;i<NUMVERTICES;i++) vz[i]=0.0;
    54345412        }
    54355413
    54365414        /*Now Compute vel*/
    5437         for(i=0;i<numvertices;i++) vel[i]=pow( pow(vx[i],2.0) + pow(vy[i],2.0) + pow(vz[i],2.0) , 0.5);
     5415        for(i=0;i<NUMVERTICES;i++) vel[i]=pow( pow(vx[i],2.0) + pow(vy[i],2.0) + pow(vz[i],2.0) , 0.5);
    54385416
    54395417        /*For pressure: we have not computed pressure in this analysis, for this element. We are in 3D,
     
    54425420        g=matpar->GetG();
    54435421        GetParameterListOnVertices(&surface[0],SurfaceEnum);
    5444         for(i=0;i<numvertices;i++) pressure[i]=rho_ice*g*(surface[i]-xyz_list[i][2]);
     5422        for(i=0;i<NUMVERTICES;i++) pressure[i]=rho_ice*g*(surface[i]-xyz_list[i][2]);
    54455423
    54465424        /*Now, we have to move the previous Vx and Vy inputs  to old
     
    54665444        int i;
    54675445
    5468         const int    numvertices=6;
    54695446        const int    numdofpervertex=2;
    5470         const int    numdof=numdofpervertex*numvertices;
     5447        const int    numdof=numdofpervertex*NUMVERTICES;
    54715448        int*         doflist=NULL;
    54725449        double       values[numdof];
    5473         double       vx[numvertices];
    5474         double       vy[numvertices];
    5475         double       vz[numvertices];
    5476         double       vel[numvertices];
     5450        double       vx[NUMVERTICES];
     5451        double       vy[NUMVERTICES];
     5452        double       vz[NUMVERTICES];
     5453        double       vel[NUMVERTICES];
    54775454        int          dummy;
    5478         double       pressure[numvertices];
    5479         double       surface[numvertices];
     5455        double       pressure[NUMVERTICES];
     5456        double       surface[NUMVERTICES];
    54805457        double       rho_ice,g;
    5481         double       xyz_list[numvertices][3];
    5482         double       gauss[numvertices][4]={{1,0,0,-1},{0,1,0,-1},{0,0,1,-1},{1,0,0,1},{0,1,0,1},{0,0,1,1}};
     5458        double       xyz_list[NUMVERTICES][3];
     5459        double       gauss[NUMVERTICES][4]={{1,0,0,-1},{0,1,0,-1},{0,0,1,-1},{1,0,0,1},{0,1,0,1},{0,0,1,1}};
    54835460       
    54845461        Input*       vz_input=NULL;
     
    54895466
    54905467        /*Get node data: */
    5491         GetVerticesCoordinates(&xyz_list[0][0], nodes, numvertices);
     5468        GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES);
    54925469
    54935470        /*Use the dof list to index into the solution vector: */
     
    54975474
    54985475        /*Ok, we have vx and vy in values, fill in vx and vy arrays: */
    5499         for(i=0;i<numvertices;i++){
     5476        for(i=0;i<NUMVERTICES;i++){
    55005477                vx[i]=values[i*numdofpervertex+0];
    55015478                vy[i]=values[i*numdofpervertex+1];
     
    55095486                }
    55105487                vz_input->GetValuesPtr(&vz_ptr,&dummy);
    5511                 for(i=0;i<numvertices;i++) vz[i]=vz_ptr[i];
     5488                for(i=0;i<NUMVERTICES;i++) vz[i]=vz_ptr[i];
    55125489        }
    55135490        else{
    5514                 for(i=0;i<numvertices;i++) vz[i]=0.0;
     5491                for(i=0;i<NUMVERTICES;i++) vz[i]=0.0;
    55155492        }
    55165493
    55175494        /*Now Compute vel*/
    5518         for(i=0;i<numvertices;i++) vel[i]=pow( pow(vx[i],2.0) + pow(vy[i],2.0) + pow(vz[i],2.0) , 0.5);
     5495        for(i=0;i<NUMVERTICES;i++) vel[i]=pow( pow(vx[i],2.0) + pow(vy[i],2.0) + pow(vz[i],2.0) , 0.5);
    55195496
    55205497        /*For pressure: we have not computed pressure in this analysis, for this element. We are in 3D,
     
    55235500        g=matpar->GetG();
    55245501        GetParameterListOnVertices(&surface[0],SurfaceEnum);
    5525         for(i=0;i<numvertices;i++) pressure[i]=rho_ice*g*(surface[i]-xyz_list[i][2]);
     5502        for(i=0;i<NUMVERTICES;i++) pressure[i]=rho_ice*g*(surface[i]-xyz_list[i][2]);
    55265503
    55275504        /*Now, we have to move the previous Vx and Vy inputs  to old
     
    55475524        int i;
    55485525
    5549         const int    numvertices=6;
    55505526        const int    numdofpervertex=1;
    5551         const int    numdof=numdofpervertex*numvertices;
     5527        const int    numdof=numdofpervertex*NUMVERTICES;
    55525528        int*         doflist=NULL;
    55535529        double       values[numdof];
    5554         double       vx[numvertices];
    5555         double       vy[numvertices];
    5556         double       vz[numvertices];
    5557         double       vel[numvertices];
     5530        double       vx[NUMVERTICES];
     5531        double       vy[NUMVERTICES];
     5532        double       vz[NUMVERTICES];
     5533        double       vel[NUMVERTICES];
    55585534        int          dummy;
    5559         double       pressure[numvertices];
    5560         double       surface[numvertices];
     5535        double       pressure[NUMVERTICES];
     5536        double       surface[NUMVERTICES];
    55615537        double       rho_ice,g;
    5562         double       xyz_list[numvertices][3];
    5563         double       gauss[numvertices][4]={{1,0,0,-1},{0,1,0,-1},{0,0,1,-1},{1,0,0,1},{0,1,0,1},{0,0,1,1}};
     5538        double       xyz_list[NUMVERTICES][3];
     5539        double       gauss[NUMVERTICES][4]={{1,0,0,-1},{0,1,0,-1},{0,0,1,-1},{1,0,0,1},{0,1,0,1},{0,0,1,1}};
    55645540
    55655541        Input*       vx_input=NULL;
     
    55725548
    55735549        /*Get node data: */
    5574         GetVerticesCoordinates(&xyz_list[0][0], nodes, numvertices);
     5550        GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES);
    55755551
    55765552        /*Use the dof list to index into the solution vector: */
     
    55805556
    55815557        /*Ok, we have vz in values, fill in vz array: */
    5582         for(i=0;i<numvertices;i++){
     5558        for(i=0;i<NUMVERTICES;i++){
    55835559                vz[i]=values[i*numdofpervertex+0];
    55845560        }
     
    55895565                if (vx_input->Enum()!=PentaVertexInputEnum) ISSMERROR("Cannot compute Vel as Vx is of type %s",EnumToString(vx_input->Enum()));
    55905566                vx_input->GetValuesPtr(&vx_ptr,&dummy);
    5591                 for(i=0;i<numvertices;i++) vx[i]=vx_ptr[i];
    5592         }
    5593         else for(i=0;i<numvertices;i++) vx[i]=0.0;
     5567                for(i=0;i<NUMVERTICES;i++) vx[i]=vx_ptr[i];
     5568        }
     5569        else for(i=0;i<NUMVERTICES;i++) vx[i]=0.0;
    55945570
    55955571        vy_input=inputs->GetInput(VyEnum);
     
    55975573                if (vy_input->Enum()!=PentaVertexInputEnum) ISSMERROR("Cannot compute Vel as Vy is of type %s",EnumToString(vy_input->Enum()));
    55985574                vy_input->GetValuesPtr(&vy_ptr,&dummy);
    5599                 for(i=0;i<numvertices;i++) vy[i]=vy_ptr[i];
    5600         }
    5601         else for(i=0;i<numvertices;i++) vy[i]=0.0;
     5575                for(i=0;i<NUMVERTICES;i++) vy[i]=vy_ptr[i];
     5576        }
     5577        else for(i=0;i<NUMVERTICES;i++) vy[i]=0.0;
    56025578
    56035579        /*Now Compute vel*/
    5604         for(i=0;i<numvertices;i++) vel[i]=pow( pow(vx[i],2.0) + pow(vy[i],2.0) + pow(vz[i],2.0) , 0.5);
     5580        for(i=0;i<NUMVERTICES;i++) vel[i]=pow( pow(vx[i],2.0) + pow(vy[i],2.0) + pow(vz[i],2.0) , 0.5);
    56055581
    56065582        /*For pressure: we have not computed pressure in this analysis, for this element. We are in 3D,
     
    56095585        g=matpar->GetG();
    56105586        GetParameterListOnVertices(&surface[0],SurfaceEnum);
    5611         for(i=0;i<numvertices;i++) pressure[i]=rho_ice*g*(surface[i]-xyz_list[i][2]);
     5587        for(i=0;i<NUMVERTICES;i++) pressure[i]=rho_ice*g*(surface[i]-xyz_list[i][2]);
    56125588
    56135589        /*Now, we have to move the previous Vz inputs to old
     
    56305606        int i;
    56315607
    5632         const int    numvertices=6;
    56335608        const int    numdofpervertex=4;
    5634         const int    numdof=numdofpervertex*numvertices;
     5609        const int    numdof=numdofpervertex*NUMVERTICES;
    56355610        int*         doflist=NULL;
    56365611        double       values[numdof];
    5637         double       vx[numvertices];
    5638         double       vy[numvertices];
    5639         double       vz[numvertices];
    5640         double       vel[numvertices];
    5641         double       pressure[numvertices];
     5612        double       vx[NUMVERTICES];
     5613        double       vy[NUMVERTICES];
     5614        double       vz[NUMVERTICES];
     5615        double       vel[NUMVERTICES];
     5616        double       pressure[NUMVERTICES];
    56425617        double       stokesreconditioning;
    56435618
     
    56515626
    56525627        /*Ok, we have vx and vy in values, fill in all arrays: */
    5653         for(i=0;i<numvertices;i++){
     5628        for(i=0;i<NUMVERTICES;i++){
    56545629                vx[i]=values[i*numdofpervertex+0];
    56555630                vy[i]=values[i*numdofpervertex+1];
     
    56605635        /*Recondition pressure: */
    56615636        this->parameters->FindParam(&stokesreconditioning,StokesReconditioningEnum);
    5662         for(i=0;i<numvertices;i++){
     5637        for(i=0;i<NUMVERTICES;i++){
    56635638                pressure[i]=pressure[i]*stokesreconditioning;
    56645639        }
    56655640
    56665641        /*Now Compute vel*/
    5667         for(i=0;i<numvertices;i++) vel[i]=pow( pow(vx[i],2.0) + pow(vy[i],2.0) + pow(vz[i],2.0) , 0.5);
     5642        for(i=0;i<NUMVERTICES;i++) vel[i]=pow( pow(vx[i],2.0) + pow(vy[i],2.0) + pow(vz[i],2.0) , 0.5);
    56685643       
    56695644        /*Now, we have to move the previous inputs  to old
     
    56915666        int i;
    56925667
    5693         const int    numvertices=6;
    56945668        const int    numdofpervertex=4;
    5695         const int    numdof=numdofpervertex*numvertices;
     5669        const int    numdof=numdofpervertex*NUMVERTICES;
    56965670        int*         doflist=NULL;
    56975671        double       values[numdof];
    5698         double       lambdax[numvertices];
    5699         double       lambday[numvertices];
    5700         double       lambdaz[numvertices];
    5701         double       lambdap[numvertices];
     5672        double       lambdax[NUMVERTICES];
     5673        double       lambday[NUMVERTICES];
     5674        double       lambdaz[NUMVERTICES];
     5675        double       lambdap[NUMVERTICES];
    57025676
    57035677        /*Get dof list: */
     
    57105684
    57115685        /*Ok, we have vx and vy in values, fill in vx and vy arrays: */
    5712         for(i=0;i<numvertices;i++){
     5686        for(i=0;i<NUMVERTICES;i++){
    57135687                lambdax[i]=values[i*numdofpervertex+0];
    57145688                lambday[i]=values[i*numdofpervertex+1];
     
    57325706        int i;
    57335707
    5734         const int    numvertices=6;
    57355708        const int    numdofpervertex=2;
    5736         const int    numdof=numdofpervertex*numvertices;
     5709        const int    numdof=numdofpervertex*NUMVERTICES;
    57375710        int*         doflist=NULL;
    57385711        double       values[numdof];
    5739         double       lambdax[numvertices];
    5740         double       lambday[numvertices];
     5712        double       lambdax[NUMVERTICES];
     5713        double       lambday[NUMVERTICES];
    57415714
    57425715        /*Get dof list: */
     
    57495722
    57505723        /*Ok, we have vx and vy in values, fill in vx and vy arrays: */
    5751         for(i=0;i<numvertices;i++){
     5724        for(i=0;i<NUMVERTICES;i++){
    57525725                lambdax[i]=values[i*numdofpervertex+0];
    57535726                lambday[i]=values[i*numdofpervertex+1];
     
    57675740        int i;
    57685741
    5769         const int    numvertices=6;
    57705742        const int    numdofpervertex=1;
    5771         const int    numdof=numdofpervertex*numvertices;
     5743        const int    numdof=numdofpervertex*NUMVERTICES;
    57725744        int*         doflist=NULL;
    57735745        double       values[numdof];
     
    58015773void  Penta::InputUpdateFromSolutionOneDof(double* solution,int enum_type){
    58025774
    5803         const int numvertices     = 6;
    58045775        const int numdofpervertex = 1;
    5805         const int numdof          = numdofpervertex *numvertices;
     5776        const int numdof          = numdofpervertex *NUMVERTICES;
    58065777        int*         doflist=NULL;
    58075778        double    values[numdof];
     
    58255796void  Penta::InputUpdateFromSolutionOneDofCollapsed(double* solution,int enum_type){
    58265797
    5827         const int  numvertices     = 6;
    58285798        const int  numdofpervertex = 1;
    5829         const int  numdof          = numdofpervertex *numvertices;
     5799        const int  numdof          = numdofpervertex *NUMVERTICES;
    58305800        const int  numdof2d        = numdof/2;
    58315801        int*         doflist=NULL;
  • issm/trunk/src/c/objects/Elements/Tria.cpp

    r5660 r5662  
    1818#include "../../include/include.h"
    1919/*}}}*/
     20
     21/*Element macros*/
     22#define NUMVERTICES 3
    2023
    2124/*Tria constructors and destructor*/
     
    449452void  Tria::InputUpdateFromVectorDakota(double* vector, int name, int type){
    450453       
    451         const int numvertices=3;
    452454        int i,j;
    453455
     
    535537
    536538        int       i,j;
    537         const int numvertices=3;
    538539        double    area;
    539540        double    mean;
    540         int       partition[numvertices];
    541         int       offset[numvertices];
     541        int       partition[NUMVERTICES];
     542        int       offset[NUMVERTICES];
    542543        double    values[3];
    543544        bool      already=false;
     
    549550        this->GetDofList1(&offset[0]);
    550551        mean=0;
    551         for(i=0;i<numvertices;i++){
     552        for(i=0;i<NUMVERTICES;i++){
    552553                partition[i]=(int)qmu_part[offset[i]];
    553                 mean=mean+1.0/numvertices*vertex_response[offset[i]];
     554                mean=mean+1.0/NUMVERTICES*vertex_response[offset[i]];
    554555        }
    555556
    556557        /*Add contribution: */
    557         for(i=0;i<numvertices;i++){
     558        for(i=0;i<NUMVERTICES;i++){
    558559                already=false;
    559560                for(j=0;j<i;j++){
     
    627628
    628629        /*constants: */
    629         const int    numvertices=3;
    630630        const int    NDOF2=2;
    631         const int    numdof=NDOF2*numvertices;
     631        const int    numdof=NDOF2*NUMVERTICES;
    632632
    633633        /* Intermediaries */
     
    638638        double     cm_noisedmp;
    639639        double     Jdet;
    640         double     xyz_list[numvertices][3];
     640        double     xyz_list[NUMVERTICES][3];
    641641        double     dk[NDOF2],dB[NDOF2];
    642642        GaussTria *gauss = NULL;
     
    654654        if(onwater) return 0;
    655655
    656         GetVerticesCoordinates(&xyz_list[0][0], nodes, numvertices);
     656        GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES);
    657657
    658658        /* Start looping on the number of gaussian points: */
     
    857857void  Tria::GetVectorFromInputs(Vec vector,int NameEnum){
    858858
    859         const int numvertices=3;
    860         int doflist1[numvertices];
     859        int doflist1[NUMVERTICES];
    861860
    862861        /*Find NameEnum input in the inputs dataset, and get it to fill in the vector: */
     
    901900
    902901        /* constants*/
    903         const int    numvertices=3;
    904902        const int    NDOF2=2;
    905903
     
    910908        double     vx,vy,lambda,mu,thickness;
    911909        double     cm_noisedmp;
    912         int        doflist[numvertices];
     910        int        doflist[NUMVERTICES];
    913911        double     dvx[NDOF2],dvy[NDOF2],dadjx[NDOF2],dadjy[NDOF2],dB[NDOF2];
    914         double     xyz_list[numvertices][3];
     912        double     xyz_list[NUMVERTICES][3];
    915913        double     basis[3];
    916         double     dbasis[NDOF2][numvertices];
    917         double     grad[numvertices]={0.0};
    918         double     grad_g[numvertices];
     914        double     dbasis[NDOF2][NUMVERTICES];
     915        double     grad[NUMVERTICES]={0.0};
     916        double     grad_g[NUMVERTICES];
    919917        double     epsilon[3]; /* epsilon=[exx,eyy,exy];*/
    920918        GaussTria *gauss = NULL;
     
    924922
    925923        /* Get node coordinates and dof list: */
    926         GetVerticesCoordinates(&xyz_list[0][0], nodes, numvertices);
     924        GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES);
    927925        GetDofList1(&doflist[0]);
    928926
     
    956954
    957955                /*standard gradient dJ/dki*/
    958                 for (i=0;i<numvertices;i++){
     956                for (i=0;i<NUMVERTICES;i++){
    959957                        grad_g[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*basis[i];
    960958                }
    961959                /*Add regularization term*/
    962                 for (i=0;i<numvertices;i++){
     960                for (i=0;i<NUMVERTICES;i++){
    963961                        grad_g[i]-=cm_noisedmp*Jdet*gauss->weight*(dbasis[0][i]*dB[0]+dbasis[1][i]*dB[1]);
    964962                }
    965963
    966                 for(i=0;i<numvertices;i++) grad[i]+=grad_g[i];
     964                for(i=0;i<NUMVERTICES;i++) grad[i]+=grad_g[i];
    967965        }
    968966
    969967        /*Add grade_g to global vector gradient: */
    970         VecSetValues(gradient,numvertices,doflist,(const double*)grad,ADD_VALUES);
     968        VecSetValues(gradient,NUMVERTICES,doflist,(const double*)grad,ADD_VALUES);
    971969
    972970        /*clean-up*/
     
    980978
    981979        /* node data: */
    982         const int    numvertices=3;
    983980        const int    NDOF2=2;
    984         double       xyz_list[numvertices][3];
    985         int          doflist1[numvertices];
    986         double       dh1dh3[NDOF2][numvertices];
     981        double       xyz_list[NUMVERTICES][3];
     982        int          doflist1[NUMVERTICES];
     983        double       dh1dh3[NDOF2][NUMVERTICES];
    987984
    988985        /* gaussian points: */
     
    1001998
    1002999        /*element vector at the gaussian points: */
    1003         double  grade_g[numvertices]={0.0};
    1004         double  grade_g_gaussian[numvertices];
     1000        double  grade_g[NUMVERTICES]={0.0};
     1001        double  grade_g_gaussian[NUMVERTICES];
    10051002
    10061003        /* Jacobian: */
     
    10391036
    10401037        /* Get node coordinates and dof list: */
    1041         GetVerticesCoordinates(&xyz_list[0][0], nodes, numvertices);
     1038        GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES);
    10421039        GetDofList1(&doflist1[0]);
    10431040
     
    10871084
    10881085                /*Build gradje_g_gaussian vector (actually -dJ/ddrag): */
    1089                 for (i=0;i<numvertices;i++){
     1086                for (i=0;i<NUMVERTICES;i++){
    10901087
    10911088                        //standard term dJ/dki
     
    10971094               
    10981095                /*Add gradje_g_gaussian vector to gradje_g: */
    1099                 for( i=0; i<numvertices; i++)grade_g[i]+=grade_g_gaussian[i];
     1096                for( i=0; i<NUMVERTICES; i++)grade_g[i]+=grade_g_gaussian[i];
    11001097        }
    11011098
    11021099        /*Add grade_g to global vector gradient: */
    1103         VecSetValues(gradient,numvertices,doflist1,(const double*)grade_g,ADD_VALUES);
     1100        VecSetValues(gradient,NUMVERTICES,doflist1,(const double*)grade_g,ADD_VALUES);
    11041101
    11051102        /*Clean up and return*/
     
    11151112
    11161113        /* node data: */
    1117         const int    numvertices=3;
    1118         int          doflist1[numvertices];
     1114        int          doflist1[NUMVERTICES];
    11191115
    11201116        /*Gauss*/
    1121         double  gauss[numvertices][numvertices]={{1,0,0},{0,1,0},{0,0,1}};
     1117        double  gauss[NUMVERTICES][NUMVERTICES]={{1,0,0},{0,1,0},{0,0,1}};
    11221118
    11231119        /* grid data: */
     
    11251121
    11261122        /*element vector at the gaussian points: */
    1127         double  gradient_g[numvertices];
     1123        double  gradient_g[NUMVERTICES];
    11281124
    11291125        /*Inputs*/
     
    11371133
    11381134        /* Start  looping on the vertices: */
    1139         for(i=0; i<numvertices;i++){
     1135        for(i=0; i<NUMVERTICES;i++){
    11401136                adjoint_input->GetParameterValue(&lambda,&gauss[i][0]);
    11411137                gradient_g[i]=-lambda;
     
    11431139
    11441140        /*Add grade_g to global vector gradient: */
    1145         VecSetValues(gradient,numvertices,doflist1,(const double*)gradient_g,INSERT_VALUES);
     1141        VecSetValues(gradient,NUMVERTICES,doflist1,(const double*)gradient_g,INSERT_VALUES);
    11461142}
    11471143/*}}}*/
     
    13401336        int i;
    13411337
    1342         const int    numvertices=3;
    13431338        const int    numdofs=2;
    13441339        double mass_flux=0;
    1345         double xyz_list[numvertices][3];
     1340        double xyz_list[NUMVERTICES][3];
    13461341        double gauss_1[3];
    13471342        double gauss_2[3];
     
    13631358
    13641359        /*Get xyz list: */
    1365         GetVerticesCoordinates(&xyz_list[0][0], nodes, numvertices);
     1360        GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES);
    13661361
    13671362        /*get area coordinates of 0 and 1 locations: */
     
    15521547
    15531548        /* Constants */
    1554         const int    numvertices=3;
    1555         const int    numdof=1*numvertices;
     1549        const int    numdof=1*NUMVERTICES;
    15561550
    15571551        /*Intermediaries*/
     
    15611555        double     Jdet;
    15621556        double     Jelem = 0;
    1563         double     xyz_list[numvertices][3];
     1557        double     xyz_list[NUMVERTICES][3];
    15641558        GaussTria *gauss = NULL;
    15651559
     
    15681562
    15691563        /* Get node coordinates and dof list: */
    1570         GetVerticesCoordinates(&xyz_list[0][0], nodes, numvertices);
     1564        GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES);
    15711565
    15721566        /*Retrieve all inputs we will be needing: */
     
    16081602
    16091603        /* node data: */
    1610         const int    numvertices=3;
    1611         const int    numdof=2*numvertices;
     1604        const int    numdof=2*NUMVERTICES;
    16121605        const int    NDOF2=2;
    1613         double       xyz_list[numvertices][3];
     1606        double       xyz_list[NUMVERTICES][3];
    16141607
    16151608        /* grid data: */
    1616         double vx_list[numvertices];
    1617         double vy_list[numvertices];
    1618         double obs_vx_list[numvertices];
    1619         double obs_vy_list[numvertices];
    1620         double misfit_square_list[numvertices];
    1621         double misfit_list[numvertices];
    1622         double weights_list[numvertices];
     1609        double vx_list[NUMVERTICES];
     1610        double vy_list[NUMVERTICES];
     1611        double obs_vx_list[NUMVERTICES];
     1612        double obs_vy_list[NUMVERTICES];
     1613        double misfit_square_list[NUMVERTICES];
     1614        double misfit_list[NUMVERTICES];
     1615        double weights_list[NUMVERTICES];
    16231616
    16241617        /* gaussian points: */
     
    16451638
    16461639        /* Get node coordinates and dof list: */
    1647         GetVerticesCoordinates(&xyz_list[0][0], nodes, numvertices);
     1640        GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES);
    16481641
    16491642        /* Recover input data: */
     
    16751668         *
    16761669         */
    1677         for (i=0;i<numvertices;i++){
     1670        for (i=0;i<NUMVERTICES;i++){
    16781671                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));
    16791672        }
    16801673        /*Process units: */
    1681         if(process_units)UnitConversion(&misfit_list[0],numvertices,IuToExtEnum,SurfaceAbsVelMisfitEnum,this->parameters);
     1674        if(process_units)UnitConversion(&misfit_list[0],NUMVERTICES,IuToExtEnum,SurfaceAbsVelMisfitEnum,this->parameters);
    16821675
    16831676        /*Apply weights to misfits*/
    1684         for (i=0;i<numvertices;i++){
     1677        for (i=0;i<NUMVERTICES;i++){
    16851678                misfit_list[i]=weights_list[i]*misfit_list[i];
    16861679        }
     
    17111704
    17121705        /* node data: */
    1713         const int    numvertices=3;
    1714         const int    numdof=2*numvertices;
     1706        const int    numdof=2*NUMVERTICES;
    17151707        const int    NDOF2=2;
    1716         double       xyz_list[numvertices][3];
     1708        double       xyz_list[NUMVERTICES][3];
    17171709
    17181710        /* grid data: */
    1719         double vx_list[numvertices];
    1720         double vy_list[numvertices];
    1721         double obs_vx_list[numvertices];
    1722         double obs_vy_list[numvertices];
    1723         double misfit_square_list[numvertices];
    1724         double misfit_list[numvertices];
    1725         double weights_list[numvertices];
     1711        double vx_list[NUMVERTICES];
     1712        double vy_list[NUMVERTICES];
     1713        double obs_vx_list[NUMVERTICES];
     1714        double obs_vy_list[NUMVERTICES];
     1715        double misfit_square_list[NUMVERTICES];
     1716        double misfit_list[NUMVERTICES];
     1717        double weights_list[NUMVERTICES];
    17261718
    17271719        /* gaussian points: */
     
    17521744
    17531745        /* Get node coordinates and dof list: */
    1754         GetVerticesCoordinates(&xyz_list[0][0], nodes, numvertices);
     1746        GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES);
    17551747
    17561748        /* Recover input data: */
     
    17821774         *              obs                        obs                     
    17831775         */
    1784         for (i=0;i<numvertices;i++){
     1776        for (i=0;i<NUMVERTICES;i++){
    17851777                scalex=pow(meanvel/(obs_vx_list[i]+epsvel),(double)2);
    17861778                scaley=pow(meanvel/(obs_vy_list[i]+epsvel),(double)2);
     
    17911783
    17921784        /*Process units: */
    1793         if(process_units)UnitConversion(&misfit_list[0],numvertices,IuToExtEnum,SurfaceRelVelMisfitEnum,this->parameters);
     1785        if(process_units)UnitConversion(&misfit_list[0],NUMVERTICES,IuToExtEnum,SurfaceRelVelMisfitEnum,this->parameters);
    17941786
    17951787        /*Apply weights to misfits*/
    1796         for (i=0;i<numvertices;i++){
     1788        for (i=0;i<NUMVERTICES;i++){
    17971789                misfit_list[i]=weights_list[i]*misfit_list[i];
    17981790        }
     
    18231815
    18241816        /* node data: */
    1825         const int    numvertices=3;
    1826         const int    numdof=2*numvertices;
     1817        const int    numdof=2*NUMVERTICES;
    18271818        const int    NDOF2=2;
    1828         double       xyz_list[numvertices][3];
     1819        double       xyz_list[NUMVERTICES][3];
    18291820
    18301821        /* grid data: */
    1831         double vx_list[numvertices];
    1832         double vy_list[numvertices];
    1833         double obs_vx_list[numvertices];
    1834         double obs_vy_list[numvertices];
    1835         double misfit_square_list[numvertices];
    1836         double misfit_list[numvertices];
    1837         double weights_list[numvertices];
     1822        double vx_list[NUMVERTICES];
     1823        double vy_list[NUMVERTICES];
     1824        double obs_vx_list[NUMVERTICES];
     1825        double obs_vy_list[NUMVERTICES];
     1826        double misfit_square_list[NUMVERTICES];
     1827        double misfit_list[NUMVERTICES];
     1828        double weights_list[NUMVERTICES];
    18381829
    18391830        /* gaussian points: */
     
    18631854
    18641855        /* Get node coordinates and dof list: */
    1865         GetVerticesCoordinates(&xyz_list[0][0], nodes, numvertices);
     1856        GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES);
    18661857
    18671858        /* Recover input data: */
     
    18931884         *                            obs
    18941885         */
    1895         for (i=0;i<numvertices;i++){
     1886        for (i=0;i<NUMVERTICES;i++){
    18961887                velocity_mag=sqrt(pow(vx_list[i],(double)2)+pow(vy_list[i],(double)2))+epsvel; //epsvel to avoid velocity being nil.
    18971888                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.
     
    19001891
    19011892        /*Process units: */
    1902         if(process_units)UnitConversion(&misfit_list[0],numvertices,IuToExtEnum,SurfaceLogVelMisfitEnum,this->parameters);
     1893        if(process_units)UnitConversion(&misfit_list[0],NUMVERTICES,IuToExtEnum,SurfaceLogVelMisfitEnum,this->parameters);
    19031894
    19041895        /*Apply weights to misfits*/
    1905         for (i=0;i<numvertices;i++){
     1896        for (i=0;i<NUMVERTICES;i++){
    19061897                misfit_list[i]=weights_list[i]*misfit_list[i];
    19071898        }
     
    19321923
    19331924        /* node data: */
    1934         const int    numvertices=3;
    1935         const int    numdof=2*numvertices;
     1925        const int    numdof=2*NUMVERTICES;
    19361926        const int    NDOF2=2;
    1937         double       xyz_list[numvertices][3];
     1927        double       xyz_list[NUMVERTICES][3];
    19381928
    19391929        /* grid data: */
    1940         double vx_list[numvertices];
    1941         double vy_list[numvertices];
    1942         double obs_vx_list[numvertices];
    1943         double obs_vy_list[numvertices];
    1944         double misfit_square_list[numvertices];
    1945         double misfit_list[numvertices];
    1946         double weights_list[numvertices];
     1930        double vx_list[NUMVERTICES];
     1931        double vy_list[NUMVERTICES];
     1932        double obs_vx_list[NUMVERTICES];
     1933        double obs_vy_list[NUMVERTICES];
     1934        double misfit_square_list[NUMVERTICES];
     1935        double misfit_list[NUMVERTICES];
     1936        double weights_list[NUMVERTICES];
    19471937
    19481938        /* gaussian points: */
     
    19751965
    19761966        /* Get node coordinates and dof list: */
    1977         GetVerticesCoordinates(&xyz_list[0][0], nodes, numvertices);
     1967        GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES);
    19781968
    19791969        /* Recover input data: */
     
    20051995         *                              obs                       obs
    20061996         */
    2007         for (i=0;i<numvertices;i++){
     1997        for (i=0;i<NUMVERTICES;i++){
    20081998                misfit_list[i]=0.5*pow(meanvel,(double)2)*(
    20091999                                        pow(log((fabs(vx_list[i])+epsvel)/(fabs(obs_vx_list[i])+epsvel)),(double)2) +
     
    20122002
    20132003        /*Process units: */
    2014         if(process_units)UnitConversion(&misfit_list[0],numvertices,IuToExtEnum,SurfaceLogVxVyMisfitEnum,this->parameters);
     2004        if(process_units)UnitConversion(&misfit_list[0],NUMVERTICES,IuToExtEnum,SurfaceLogVxVyMisfitEnum,this->parameters);
    20152005
    20162006        /*Apply weights to misfits*/
    2017         for (i=0;i<numvertices;i++){
     2007        for (i=0;i<NUMVERTICES;i++){
    20182008                misfit_list[i]=weights_list[i]*misfit_list[i];
    20192009        }
     
    20442034
    20452035        /* node data: */
    2046         const int    numvertices=3;
    2047         const int    numdof=2*numvertices;
     2036        const int    numdof=2*NUMVERTICES;
    20482037        const int    NDOF2=2;
    2049         double       xyz_list[numvertices][3];
     2038        double       xyz_list[NUMVERTICES][3];
    20502039
    20512040        /* grid data: */
    2052         double vx_list[numvertices];
    2053         double vy_list[numvertices];
    2054         double obs_vx_list[numvertices];
    2055         double obs_vy_list[numvertices];
    2056         double misfit_square_list[numvertices];
    2057         double misfit_list[numvertices];
    2058         double weights_list[numvertices];
     2041        double vx_list[NUMVERTICES];
     2042        double vy_list[NUMVERTICES];
     2043        double obs_vx_list[NUMVERTICES];
     2044        double obs_vy_list[NUMVERTICES];
     2045        double misfit_square_list[NUMVERTICES];
     2046        double misfit_list[NUMVERTICES];
     2047        double weights_list[NUMVERTICES];
    20592048
    20602049        /* gaussian points: */
     
    20872076
    20882077        /* Get node coordinates and dof list: */
    2089         GetVerticesCoordinates(&xyz_list[0][0], nodes, numvertices);
     2078        GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES);
    20902079
    20912080        /* Recover input data: */
     
    21172106         *      S                obs            obs
    21182107         */
    2119         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);
     2108        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);
    21202109
    21212110        /*Process units: */
    2122         if(process_units)UnitConversion(&misfit_square_list[0],numvertices,IuToExtEnum,SurfaceAverageVelMisfitEnum,this->parameters);
     2111        if(process_units)UnitConversion(&misfit_square_list[0],NUMVERTICES,IuToExtEnum,SurfaceAverageVelMisfitEnum,this->parameters);
    21232112
    21242113        /*Take the square root, and scale by surface: */
    2125         for (i=0;i<numvertices;i++)misfit_list[i]=pow(misfit_square_list[i],2)/S;
     2114        for (i=0;i<NUMVERTICES;i++)misfit_list[i]=pow(misfit_square_list[i],2)/S;
    21262115
    21272116        /*Apply weights to misfits*/
    2128         for (i=0;i<numvertices;i++){
     2117        for (i=0;i<NUMVERTICES;i++){
    21292118                misfit_list[i]=weights_list[i]*misfit_list[i];
    21302119        }
     
    21822171        /*output: */
    21832172        int     numrows     = 0;
    2184         int     numvertices = 0;
    21852173        int     numnodes    = 0;
    21862174
     
    21912179                numrows++;
    21922180                /*now, how many vertices and how many nodal values for this result? :*/
    2193                 numvertices=3; //this is a tria element, with 3 vertices
    21942181                numnodes=elementresult->NumberOfNodalValues(); //ask result object.
    21952182        }
     
    21972184        /*Assign output pointers:*/
    21982185        *pnumrows=numrows;
    2199         *pnumvertices=numvertices;
     2186        *pnumvertices=NUMVERTICES;
    22002187        *pnumnodes=numnodes;
    22012188       
     
    22232210
    22242211        /* node data: */
    2225         int numvertices=3;
    2226         double xyz_list[numvertices][3];
     2212        double xyz_list[NUMVERTICES][3];
    22272213        double v13[3];
    22282214        double v23[3];
     
    22392225
    22402226        /* Get node coordinates and dof list: */
    2241         GetVerticesCoordinates(&xyz_list[0][0], nodes, numvertices);
     2227        GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES);
    22422228
    22432229        for (i=0;i<3;i++){
     
    24892475
    24902476        /* node data: */
    2491         const int    numvertices=3;
    24922477        const int    NDOF1=1;
    2493         const int    numdof=NDOF1*numvertices;
    2494         double       xyz_list[numvertices][3];
     2478        const int    numdof=NDOF1*NUMVERTICES;
     2479        double       xyz_list[NUMVERTICES][3];
    24952480        int*         doflist=NULL;
    24962481
     
    25002485
    25012486        /* matrices: */
    2502         double L[numvertices];
    2503         double B[2][numvertices];
    2504         double Bprime[2][numvertices];
     2487        double L[NUMVERTICES];
     2488        double B[2][NUMVERTICES];
     2489        double Bprime[2][NUMVERTICES];
    25052490        double DL[2][2]={0.0};
    25062491        double DLprime[2][2]={0.0};
     
    25312516
    25322517        /* Get node coordinates and dof list: */
    2533         GetVerticesCoordinates(&xyz_list[0][0], nodes, numvertices);
     2518        GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES);
    25342519        GetDofList(&doflist);
    25352520
     
    26452630
    26462631        /* node data: */
    2647         const int    numvertices=3;
    26482632        const int    NDOF1=1;
    2649         const int    numdof=NDOF1*numvertices;
    2650         double       xyz_list[numvertices][3];
     2633        const int    numdof=NDOF1*NUMVERTICES;
     2634        double       xyz_list[NUMVERTICES][3];
    26512635        int*         doflist=NULL;
    26522636
     
    26562640
    26572641        /* matrices: */
    2658         double B[2][numvertices];
    2659         double Bprime[2][numvertices];
     2642        double B[2][NUMVERTICES];
     2643        double Bprime[2][NUMVERTICES];
    26602644        double DL[2][2]={0.0};
    26612645        double DLprime[2][2]={0.0};
     
    26752659
    26762660        /* Get node coordinates and dof list: */
    2677         GetVerticesCoordinates(&xyz_list[0][0], nodes, numvertices);
     2661        GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES);
    26782662        GetDofList(&doflist);
    26792663        this->parameters->FindParam(&dim,DimEnum);
     
    27342718
    27352719        /* node data: */
    2736         const int    numvertices=3;
    27372720        const int    NDOF1=1;
    2738         const int    numdof=NDOF1*numvertices;
    2739         double       xyz_list[numvertices][3];
     2721        const int    numdof=NDOF1*NUMVERTICES;
     2722        double       xyz_list[NUMVERTICES][3];
    27402723        int*         doflist=NULL;
    27412724
     
    27452728
    27462729        /* matrices: */
    2747         double L[numvertices];
    2748         double B[2][numvertices];
    2749         double Bprime[2][numvertices];
     2730        double L[NUMVERTICES];
     2731        double B[2][NUMVERTICES];
     2732        double Bprime[2][NUMVERTICES];
    27502733        double DL[2][2]={0.0};
    27512734        double DLprime[2][2]={0.0};
     
    27822765
    27832766        /* Get node coordinates and dof list: */
    2784         GetVerticesCoordinates(&xyz_list[0][0], nodes, numvertices);
     2767        GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES);
    27852768        GetDofList(&doflist);
    27862769
     
    27982781        /*Modify z so that it reflects the surface*/
    27992782        GetParameterListOnVertices(&surface_list[0],SurfaceEnum);
    2800         for(i=0;i<numvertices;i++) xyz_list[i][2]=surface_list[i];
     2783        for(i=0;i<NUMVERTICES;i++) xyz_list[i][2]=surface_list[i];
    28012784
    28022785        /*Get normal vector to the surface*/
     
    29032886
    29042887        /* node data: */
    2905         const int    numvertices=3;
    2906         const int    numdof=2*numvertices;
    2907         double       xyz_list[numvertices][3];
     2888        const int    numdof=2*NUMVERTICES;
     2889        double       xyz_list[NUMVERTICES][3];
    29082890        int*         doflist=NULL;
    29092891
     
    29582940
    29592941        /* Get node coordinates and dof list: */
    2960         GetVerticesCoordinates(&xyz_list[0][0], nodes, numvertices);
     2942        GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES);
    29612943        GetDofList(&doflist,MacAyealApproximationEnum);
    29622944
     
    30343016
    30353017        /* node data: */
    3036         const int numvertices = 3;
    3037         const int numdof   = 2 *numvertices;
    3038         double    xyz_list[numvertices][3];
     3018        const int numdof   = 2 *NUMVERTICES;
     3019        double    xyz_list[NUMVERTICES][3];
    30393020        int*      doflistm=NULL;
    30403021        int*      doflistp=NULL;
     
    30873068       
    30883069        /* Get node coordinates and dof list: */
    3089         GetVerticesCoordinates(&xyz_list[0][0], nodes, numvertices);
     3070        GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES);
    30903071        GetDofList(&doflistm,MacAyealApproximationEnum);
    30913072        GetDofList(&doflistp,PattynApproximationEnum);
     
    31593140
    31603141        /* node data: */
    3161         const int numvertices = 3;
    3162         const int numdof   = 2 *numvertices;
    3163         double    xyz_list[numvertices][3];
     3142        const int numdof   = 2 *NUMVERTICES;
     3143        double    xyz_list[NUMVERTICES][3];
    31643144        int*      doflist=NULL;
    31653145        int       numberofdofspernode=2;
     
    32113191       
    32123192        /* Get node coordinates and dof list: */
    3213         GetVerticesCoordinates(&xyz_list[0][0], nodes, numvertices);
     3193        GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES);
    32143194        GetDofList(&doflist,MacAyealApproximationEnum);
    32153195
     
    32803260
    32813261        /* node data: */
    3282         const int numvertices = 3;
    3283         const int numdof   = 2 *numvertices;
    3284         double    xyz_list[numvertices][3];
     3262        const int numdof   = 2 *NUMVERTICES;
     3263        double    xyz_list[NUMVERTICES][3];
    32853264        int*      doflist=NULL;
    32863265        int       numberofdofspernode=2;
     
    33323311       
    33333312        /* Get node coordinates and dof list: */
    3334         GetVerticesCoordinates(&xyz_list[0][0], nodes, numvertices);
     3313        GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES);
    33353314        GetDofList(&doflist,PattynApproximationEnum);
    33363315
     
    33993378        int    i;
    34003379        int    connectivity;
    3401         const int numvertices=3;
    34023380        const int NDOF2=2;
    3403         const int numdofs=numvertices*NDOF2;
     3381        const int numdofs=NUMVERTICES*NDOF2;
    34043382        int*         doflist=NULL;
    34053383
     
    34363414
    34373415        /* node data: */
    3438         const int    numvertices=3;
    34393416        const int    NDOF1=1;
    3440         const int    numdof=NDOF1*numvertices;
    3441         double       xyz_list[numvertices][3];
     3417        const int    numdof=NDOF1*NUMVERTICES;
     3418        double       xyz_list[NUMVERTICES][3];
    34423419        int*         doflist=NULL;
    34433420
     
    34663443
    34673444        /* Get node coordinates and dof list: */
    3468         GetVerticesCoordinates(&xyz_list[0][0], nodes, numvertices);
     3445        GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES);
    34693446        GetDofList(&doflist);
    34703447
     
    35393516        int i,j;
    35403517
    3541         const int  numvertices=3;
    35423518        const int  NDOF1=1;
    3543         const int  numdof=numvertices*NDOF1;
     3519        const int  numdof=NUMVERTICES*NDOF1;
    35443520        int*       doflist=NULL;
    35453521
    35463522        /*Grid data: */
    3547         double     xyz_list[numvertices][3];
     3523        double     xyz_list[NUMVERTICES][3];
    35483524
    35493525        /*Material constants */
     
    35673543
    35683544        /* Get node coordinates and dof list: */
    3569         GetVerticesCoordinates(&xyz_list[0][0], nodes, numvertices);
     3545        GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES);
    35703546        GetDofList(&doflist);
    35713547
     
    35893565                MatrixMultiply(&tLD[0],numdof,1,0,&L[0],1,numdof,0,&Ke_gaussian[0][0],0);
    35903566
    3591                 for(i=0;i<numvertices;i++){
    3592                         for(j=0;j<numvertices;j++){
     3567                for(i=0;i<NUMVERTICES;i++){
     3568                        for(j=0;j<NUMVERTICES;j++){
    35933569                                K_terms[i][j]+=Ke_gaussian[i][j];
    35943570                        }
     
    36113587
    36123588        /* node data: */
    3613         const int    numvertices=3;
    36143589        const int    NDOF1=1;
    3615         const int    numdof=NDOF1*numvertices;
    3616         double       xyz_list[numvertices][3];
     3590        const int    numdof=NDOF1*NUMVERTICES;
     3591        double       xyz_list[NUMVERTICES][3];
    36173592        int*         doflist=NULL;
    36183593        int          numberofdofspernode=1;
     
    36233598
    36243599        /* matrices: */
    3625         double L[numvertices];
    3626         double B[2][numvertices];
    3627         double Bprime[2][numvertices];
     3600        double L[NUMVERTICES];
     3601        double B[2][NUMVERTICES];
     3602        double Bprime[2][NUMVERTICES];
    36283603        double DL[2][2]={0.0};
    36293604        double DLprime[2][2]={0.0};
     
    36583633
    36593634        /* Get node coordinates and dof list: */
    3660         GetVerticesCoordinates(&xyz_list[0][0], nodes, numvertices);
     3635        GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES);
    36613636        GetDofList(&doflist);
    36623637
     
    37813756
    37823757        /* node data: */
    3783         const int    numvertices=3;
    37843758        const int    NDOF1=1;
    3785         const int    numdof=NDOF1*numvertices;
    3786         double       xyz_list[numvertices][3];
     3759        const int    numdof=NDOF1*NUMVERTICES;
     3760        double       xyz_list[NUMVERTICES][3];
    37873761        int*         doflist=NULL;
    37883762        int          numberofdofspernode=1;
     
    37933767
    37943768        /* matrices: */
    3795         double L[numvertices];
    3796         double B[2][numvertices];
    3797         double Bprime[2][numvertices];
     3769        double L[NUMVERTICES];
     3770        double B[2][NUMVERTICES];
     3771        double Bprime[2][NUMVERTICES];
    37983772        double DL[2][2]={0.0};
    37993773        double DLprime[2][2]={0.0};
     
    38193793
    38203794        /* Get node coordinates and dof list: */
    3821         GetVerticesCoordinates(&xyz_list[0][0], nodes, numvertices);
     3795        GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES);
    38223796        GetDofList(&doflist);
    38233797
     
    39413915       
    39423916        /* node data: */
    3943         const int    numvertices=3;
    39443917        const int    NDOF1=1;
    3945         const int    numdof=NDOF1*numvertices;
    3946         double       xyz_list[numvertices][3];
     3918        const int    numdof=NDOF1*NUMVERTICES;
     3919        double       xyz_list[NUMVERTICES][3];
    39473920        int*         doflist=NULL;
    39483921
     
    39603933        double  K_terms[numdof][numdof]={0.0};
    39613934        double  Ke_gaussian[numdof][numdof]={0.0};
    3962         double  l1l2l3[numvertices];
     3935        double  l1l2l3[NUMVERTICES];
    39633936        double     tl1l2l3D[3];
    39643937        double  D_scalar;
     
    39713944
    39723945        /* Get node coordinates and dof list: */
    3973         GetVerticesCoordinates(&xyz_list[0][0], nodes, numvertices);
     3946        GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES);
    39743947        GetDofList(&doflist);
    39753948
     
    40263999
    40274000        /* node data: */
    4028         const int    numvertices=3;
    40294001        const int    NDOF1=1;
    4030         const int    numdof=NDOF1*numvertices;
    4031         double       xyz_list[numvertices][3];
     4002        const int    numdof=NDOF1*NUMVERTICES;
     4003        double       xyz_list[NUMVERTICES][3];
    40324004        int*         doflist=NULL;
    40334005        int          numberofdofspernode=1;
     
    40384010
    40394011        /* matrix */
    4040         double pe_g[numvertices]={0.0};
    4041         double L[numvertices];
     4012        double pe_g[NUMVERTICES]={0.0};
     4013        double L[NUMVERTICES];
    40424014        double Jdettria;
    40434015
     
    40534025
    40544026        /* Get node coordinates and dof list: */
    4055         GetVerticesCoordinates(&xyz_list[0][0], nodes, numvertices);
     4027        GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES);
    40564028        GetDofList(&doflist);
    40574029
     
    40984070
    40994071        /* node data: */
    4100         const int    numvertices=3;
    41014072        const int    NDOF1=1;
    4102         const int    numdof=NDOF1*numvertices;
    4103         double       xyz_list[numvertices][3];
     4073        const int    numdof=NDOF1*NUMVERTICES;
     4074        double       xyz_list[NUMVERTICES][3];
    41044075        int*         doflist=NULL;
    41054076        int          numberofdofspernode=1;
     
    41104081
    41114082        /* matrix */
    4112         double pe_g[numvertices]={0.0};
    4113         double L[numvertices];
     4083        double pe_g[NUMVERTICES]={0.0};
     4084        double L[NUMVERTICES];
    41144085        double Jdettria;
    41154086
     
    41254096
    41264097        /* Get node coordinates and dof list: */
    4127         GetVerticesCoordinates(&xyz_list[0][0], nodes, numvertices);
     4098        GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES);
    41284099        GetDofList(&doflist);
    41294100
     
    41704141
    41714142        /* node data: */
    4172         const int    numvertices=3;
    41734143        const int    NDOF1=1;
    4174         const int    numdof=NDOF1*numvertices;
    4175         double       xyz_list[numvertices][3];
     4144        const int    numdof=NDOF1*NUMVERTICES;
     4145        double       xyz_list[NUMVERTICES][3];
    41764146        int*         doflist=NULL;
    41774147        int          numberofdofspernode=1;
     
    41824152
    41834153        /* matrix */
    4184         double pe_g[numvertices]={0.0};
    4185         double L[numvertices];
     4154        double pe_g[NUMVERTICES]={0.0};
     4155        double L[NUMVERTICES];
    41864156        double Jdettria;
    41874157
     
    41954165
    41964166        /* Get node coordinates and dof list: */
    4197         GetVerticesCoordinates(&xyz_list[0][0], nodes, numvertices);
     4167        GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES);
    41984168        GetDofList(&doflist);
    41994169
     
    42374207
    42384208        /* node data: */
    4239         const int    numvertices=3;
    42404209        const int    NDOF1=1;
    4241         const int    numdof=NDOF1*numvertices;
    4242         double       xyz_list[numvertices][3];
     4210        const int    numdof=NDOF1*NUMVERTICES;
     4211        double       xyz_list[NUMVERTICES][3];
    42434212        int*         doflist=NULL;
    42444213
     
    42584227
    42594228        /* matrices: */
    4260         double L[numvertices];
     4229        double L[NUMVERTICES];
    42614230
    42624231        /*input parameters for structural analysis (diagnostic): */
     
    42734242
    42744243        /* Get node coordinates and dof list: */
    4275         GetVerticesCoordinates(&xyz_list[0][0], nodes, numvertices);
     4244        GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES);
    42764245        GetDofList(&doflist);
    42774246
     
    43084277
    43094278                /*Build gaussian vector: */
    4310                 for(i=0;i<numvertices;i++){
     4279                for(i=0;i<NUMVERTICES;i++){
    43114280                        pe_g_gaussian[i]=-Jdet*gauss->weight*(vx*dbdx+vy*dbdy-meltingvalue)*L[i];
    43124281                }
     
    43314300
    43324301        /* node data: */
    4333         const int    numvertices=3;
    4334         const int    numdof=2*numvertices;
     4302        const int    numdof=2*NUMVERTICES;
    43354303        const int    NDOF2=2;
    4336         double       xyz_list[numvertices][3];
     4304        double       xyz_list[NUMVERTICES][3];
    43374305        int*         doflist=NULL;
    43384306       
     
    43824350
    43834351        /* Get node coordinates and dof list: */
    4384         GetVerticesCoordinates(&xyz_list[0][0], nodes, numvertices);
     4352        GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES);
    43854353        GetDofList(&doflist,MacAyealApproximationEnum);
    43864354
     
    44184386                /*Build pe_g_gaussian vector: */
    44194387                if(drag_type==1){
    4420                         for (i=0;i<numvertices;i++){
     4388                        for (i=0;i<NUMVERTICES;i++){
    44214389                                for (j=0;j<NDOF2;j++){
    44224390                                        pe_g_gaussian[i*NDOF2+j]=(-driving_stress_baseline*slope[j]-plastic_stress)*Jdet*gauss_weight*l1l2l3[i];
     
    44254393                }
    44264394                else {
    4427                         for (i=0;i<numvertices;i++){
     4395                        for (i=0;i<NUMVERTICES;i++){
    44284396                                for (j=0;j<NDOF2;j++){
    44294397                                        pe_g_gaussian[i*NDOF2+j]=-driving_stress_baseline*slope[j]*Jdet*gauss_weight*l1l2l3[i];
     
    44544422
    44554423        /* node data: */
    4456         const int    numvertices=3;
    4457         const int    numdof=1*numvertices;
    4458         double       xyz_list[numvertices][3];
     4424        const int    numdof=1*NUMVERTICES;
     4425        double       xyz_list[NUMVERTICES][3];
    44594426        int*         doflist=NULL;
    44604427
     
    44824449
    44834450        /* Get node coordinates and dof list: */
    4484         GetVerticesCoordinates(&xyz_list[0][0], nodes, numvertices);
     4451        GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES);
    44854452        GetDofList(&doflist);
    44864453
     
    45074474                weights_input->GetParameterValue(&weight, gauss);
    45084475
    4509                 for (i=0;i<numvertices;i++){
     4476                for (i=0;i<NUMVERTICES;i++){
    45104477                        pe_g_gaussian[i]=(thicknessobs-thickness)*weight*Jdet*gauss->weight*l1l2l3[i];
    45114478                }
     
    45314498
    45324499        /* node data: */
    4533         const int    numvertices=3;
    4534         const int    numdof=2*numvertices;
     4500        const int    numdof=2*NUMVERTICES;
    45354501        const int    NDOF2=2;
    4536         double       xyz_list[numvertices][3];
     4502        double       xyz_list[NUMVERTICES][3];
    45374503        int*         doflist=NULL;
    45384504
    45394505        /* grid data: */
    4540         double vx_list[numvertices];
    4541         double vy_list[numvertices];
    4542         double obs_vx_list[numvertices];
    4543         double obs_vy_list[numvertices];
    4544         double dux_list[numvertices];
    4545         double duy_list[numvertices];
    4546         double weights_list[numvertices];
     4506        double vx_list[NUMVERTICES];
     4507        double vy_list[NUMVERTICES];
     4508        double obs_vx_list[NUMVERTICES];
     4509        double obs_vy_list[NUMVERTICES];
     4510        double dux_list[NUMVERTICES];
     4511        double duy_list[NUMVERTICES];
     4512        double weights_list[NUMVERTICES];
    45474513
    45484514        /* gaussian points: */
     
    45774543
    45784544        /* Get node coordinates and dof list: */
    4579         GetVerticesCoordinates(&xyz_list[0][0], nodes, numvertices);
     4545        GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES);
    45804546        GetDofList(&doflist);
    45814547
     
    46164582                 *        du     obs
    46174583                 */
    4618                 for (i=0;i<numvertices;i++){
     4584                for (i=0;i<NUMVERTICES;i++){
    46194585                        dux_list[i]=obs_vx_list[i]-vx_list[i];
    46204586                        duy_list[i]=obs_vy_list[i]-vy_list[i];
     
    46344600                 *               obs
    46354601                 */
    4636                 for (i=0;i<numvertices;i++){
     4602                for (i=0;i<NUMVERTICES;i++){
    46374603                        scalex=pow(meanvel/(obs_vx_list[i]+epsvel),2);
    46384604                        scaley=pow(meanvel/(obs_vy_list[i]+epsvel),2);
     
    46564622                 *           
    46574623                 */
    4658                 for (i=0;i<numvertices;i++){
     4624                for (i=0;i<NUMVERTICES;i++){
    46594625                        velocity_mag=sqrt(pow(vx_list[i],2)+pow(vy_list[i],2))+epsvel; //epsvel to avoid velocity being nil.
    46604626                        obs_velocity_mag=sqrt(pow(obs_vx_list[i],2)+pow(obs_vy_list[i],2))+epsvel; //epsvel to avoid observed velocity being nil.
     
    46754641                 *        du      S  2 sqrt(...)           obs
    46764642                 */
    4677                 for (i=0;i<numvertices;i++){
     4643                for (i=0;i<NUMVERTICES;i++){
    46784644                        scale=1.0/(S*sqrt(pow(vx_list[i]-obs_vx_list[i],2)+pow(vy_list[i]-obs_vx_list[i],2))+epsvel);
    46794645                        dux_list[i]=scale*(obs_vx_list[i]-vx_list[i]);
     
    46924658                 *        du                         |u| + eps  |u|                           u + eps
    46934659                 */
    4694                 for (i=0;i<numvertices;i++){
     4660                for (i=0;i<NUMVERTICES;i++){
    46954661                        dux_list[i] = - pow(meanvel,(double)2)*(
    46964662                                                log((fabs(vx_list[i])+epsvel)/(fabs(obs_vx_list[i])+epsvel)) * 1/(vx_list[i]+epsvel));
     
    47054671
    47064672        /*Apply weights to DU*/
    4707         for (i=0;i<numvertices;i++){
     4673        for (i=0;i<NUMVERTICES;i++){
    47084674                dux_list[i]=weights_list[i]*dux_list[i];
    47094675                duy_list[i]=weights_list[i]*duy_list[i];
     
    47294695
    47304696                /*compute Du*/
    4731                 for (i=0;i<numvertices;i++){
     4697                for (i=0;i<NUMVERTICES;i++){
    47324698                        pe_g_gaussian[i*NDOF2+0]=dux*Jdet*gauss->weight*l1l2l3[i];
    47334699                        pe_g_gaussian[i*NDOF2+1]=duy*Jdet*gauss->weight*l1l2l3[i];
     
    47544720
    47554721        /* node data: */
    4756         const int    numvertices=3;
    47574722        const int    NDOF4=4;
    4758         const int    numdof=NDOF4*numvertices;
    4759         double       xyz_list[numvertices][3];
     4723        const int    numdof=NDOF4*NUMVERTICES;
     4724        double       xyz_list[NUMVERTICES][3];
    47604725        int*         doflist=NULL;
    47614726
    47624727        /* grid data: */
    4763         double vx_list[numvertices];
    4764         double vy_list[numvertices];
    4765         double obs_vx_list[numvertices];
    4766         double obs_vy_list[numvertices];
    4767         double dux_list[numvertices];
    4768         double duy_list[numvertices];
    4769         double weights_list[numvertices];
     4728        double vx_list[NUMVERTICES];
     4729        double vy_list[NUMVERTICES];
     4730        double obs_vx_list[NUMVERTICES];
     4731        double obs_vy_list[NUMVERTICES];
     4732        double dux_list[NUMVERTICES];
     4733        double duy_list[NUMVERTICES];
     4734        double weights_list[NUMVERTICES];
    47704735
    47714736        /* gaussian points: */
     
    48004765
    48014766        /* Get node coordinates and dof list: */
    4802         GetVerticesCoordinates(&xyz_list[0][0], nodes, numvertices);
     4767        GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES);
    48034768        GetDofList(&doflist);
    48044769
     
    48394804                 *        du     obs
    48404805                 */
    4841                 for (i=0;i<numvertices;i++){
     4806                for (i=0;i<NUMVERTICES;i++){
    48424807                        dux_list[i]=obs_vx_list[i]-vx_list[i];
    48434808                        duy_list[i]=obs_vy_list[i]-vy_list[i];
     
    48574822                 *               obs
    48584823                 */
    4859                 for (i=0;i<numvertices;i++){
     4824                for (i=0;i<NUMVERTICES;i++){
    48604825                        scalex=pow(meanvel/(obs_vx_list[i]+epsvel),2);
    48614826                        scaley=pow(meanvel/(obs_vy_list[i]+epsvel),2);
     
    48794844                 *           
    48804845                 */
    4881                 for (i=0;i<numvertices;i++){
     4846                for (i=0;i<NUMVERTICES;i++){
    48824847                        velocity_mag=sqrt(pow(vx_list[i],2)+pow(vy_list[i],2))+epsvel; //epsvel to avoid velocity being nil.
    48834848                        obs_velocity_mag=sqrt(pow(obs_vx_list[i],2)+pow(obs_vy_list[i],2))+epsvel; //epsvel to avoid observed velocity being nil.
     
    48984863                 *        du      S  2 sqrt(...)           obs
    48994864                 */
    4900                 for (i=0;i<numvertices;i++){
     4865                for (i=0;i<NUMVERTICES;i++){
    49014866                        scale=1.0/(S*sqrt(pow(vx_list[i]-obs_vx_list[i],2)+pow(vy_list[i]-obs_vx_list[i],2))+epsvel);
    49024867                        dux_list[i]=scale*(obs_vx_list[i]-vx_list[i]);
     
    49154880                 *        du                         |u| + eps  |u|                           u + eps
    49164881                 */
    4917                 for (i=0;i<numvertices;i++){
     4882                for (i=0;i<NUMVERTICES;i++){
    49184883                        dux_list[i] = - pow(meanvel,(double)2)*(
    49194884                                                log((fabs(vx_list[i])+epsvel)/(fabs(obs_vx_list[i])+epsvel)) * 1/(vx_list[i]+epsvel));
     
    49284893
    49294894        /*Apply weights to DU*/
    4930         for (i=0;i<numvertices;i++){
     4895        for (i=0;i<NUMVERTICES;i++){
    49314896                dux_list[i]=weights_list[i]*dux_list[i];
    49324897                duy_list[i]=weights_list[i]*duy_list[i];
     
    49524917
    49534918                /*compute Du*/
    4954                 for (i=0;i<numvertices;i++){
     4919                for (i=0;i<NUMVERTICES;i++){
    49554920                        pe_g[i*NDOF4+0]+=dux*Jdet*gauss->weight*l1l2l3[i];
    49564921                        pe_g[i*NDOF4+1]+=duy*Jdet*gauss->weight*l1l2l3[i];
     
    49714936        /*Collapsed formulation: */
    49724937        int       i;
    4973         const int numvertices=3;
    49744938        const int NDOF2=2;
    4975         const int numdofs=NDOF2*numvertices;
     4939        const int numdofs=NDOF2*NUMVERTICES;
    49764940        int*         doflist=NULL;
    49774941        double    constant_part,ub,vb;
     
    50114975        /*Spawn 3 sing elements: */
    50124976        gauss=new GaussTria();
    5013         for(i=0;i<numvertices;i++){
     4977        for(i=0;i<NUMVERTICES;i++){
    50144978
    50154979                gauss->GaussVertex(i);
     
    50485012
    50495013        /* node data: */
    5050         const int    numvertices=3;
    50515014        const int    NDOF1=1;
    5052         const int    numdof=NDOF1*numvertices;
    5053         double       xyz_list[numvertices][3];
     5015        const int    numdof=NDOF1*NUMVERTICES;
     5016        double       xyz_list[NUMVERTICES][3];
    50545017        int*         doflist=NULL;
    50555018        int          numberofdofspernode=1;
     
    50605023
    50615024        /* matrix */
    5062         double pe_g[numvertices]={0.0};
    5063         double L[numvertices];
     5025        double pe_g[NUMVERTICES]={0.0};
     5026        double L[NUMVERTICES];
    50645027        double Jdettria;
    50655028
     
    50795042
    50805043        /* Get node coordinates and dof list: */
    5081         GetVerticesCoordinates(&xyz_list[0][0], nodes, numvertices);
     5044        GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES);
    50825045        GetDofList(&doflist);
    50835046
     
    51255088
    51265089        /* node data: */
    5127         const int    numvertices=3;
    51285090        const int    NDOF1=1;
    5129         const int    numdof=NDOF1*numvertices;
    5130         double       xyz_list[numvertices][3];
     5091        const int    numdof=NDOF1*NUMVERTICES;
     5092        double       xyz_list[NUMVERTICES][3];
    51315093        int*         doflist=NULL;
    51325094        int          numberofdofspernode=1;
     
    51375099
    51385100        /* matrix */
    5139         double pe_g[numvertices]={0.0};
    5140         double L[numvertices];
     5101        double pe_g[NUMVERTICES]={0.0};
     5102        double L[NUMVERTICES];
    51415103        double Jdettria;
    51425104
     
    51545116
    51555117        /* Get node coordinates and dof list: */
    5156         GetVerticesCoordinates(&xyz_list[0][0], nodes, numvertices);
     5118        GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES);
    51575119        GetDofList(&doflist);
    51585120
     
    51985160
    51995161        /* node data: */
    5200         const int    numvertices=3;
    52015162        const int    NDOF1=1;
    5202         const int    numdof=NDOF1*numvertices;
    5203         double       xyz_list[numvertices][3];
     5163        const int    numdof=NDOF1*NUMVERTICES;
     5164        double       xyz_list[NUMVERTICES][3];
    52045165        int*         doflist=NULL;
    52055166       
     
    52275188
    52285189        /* Get node coordinates and dof list: */
    5229         GetVerticesCoordinates(&xyz_list[0][0], nodes, numvertices);
     5190        GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES);
    52305191        GetDofList(&doflist);
    52315192
     
    52785239        int i,found;
    52795240       
    5280         const int  numvertices=3;
    52815241        const int  NDOF1=1;
    5282         const int  numdof=numvertices*NDOF1;
     5242        const int  numdof=NUMVERTICES*NDOF1;
    52835243        int*         doflist=NULL;
    5284         double       xyz_list[numvertices][3];
     5244        double       xyz_list[NUMVERTICES][3];
    52855245
    52865246        double mixed_layer_capacity;
     
    53035263        double  Jdet;
    53045264        double  P_terms[numdof]={0.0};
    5305         double  l1l2l3[numvertices];
     5265        double  l1l2l3[NUMVERTICES];
    53065266
    53075267        double  t_pmp;
     
    53125272
    53135273        /* Get node coordinates and dof list: */
    5314         GetVerticesCoordinates(&xyz_list[0][0], nodes, numvertices);
     5274        GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES);
    53155275        GetDofList(&doflist);
    53165276
     
    53725332        int i,found;
    53735333       
    5374         const int  numvertices=3;
    53755334        const int  NDOF1=1;
    5376         const int  numdof=numvertices*NDOF1;
     5335        const int  numdof=NUMVERTICES*NDOF1;
    53775336        int*       doflist=NULL;
    5378         double     xyz_list[numvertices][3];
     5337        double     xyz_list[NUMVERTICES][3];
    53795338
    53805339        double rho_ice;
     
    53985357        double  Jdet;
    53995358        double  P_terms[numdof]={0.0};
    5400         double  l1l2l3[numvertices];
     5359        double  l1l2l3[NUMVERTICES];
    54015360        double  scalar;
    54025361
     
    54135372       
    54145373        /* Get node coordinates and dof list: */
    5415         GetVerticesCoordinates(&xyz_list[0][0], nodes, numvertices);
     5374        GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES);
    54165375        GetDofList(&doflist);
    54175376
     
    54795438
    54805439        double area=0;
    5481         const int    numvertices=3;
    5482         double xyz_list[numvertices][3];
     5440        double xyz_list[NUMVERTICES][3];
    54835441        double x1,y1,x2,y2,x3,y3;
    54845442
    54855443        /*Get xyz list: */
    5486         GetVerticesCoordinates(&xyz_list[0][0], nodes, numvertices);
     5444        GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES);
    54875445        x1=xyz_list[0][0]; y1=xyz_list[0][1];
    54885446        x2=xyz_list[1][0]; y2=xyz_list[1][1];
     
    54975455        /*Intermediaries*/
    54985456        double    area = 0;
    5499         const int numvertices = 3;
    5500         double    xyz_list[numvertices][3];
     5457        double    xyz_list[NUMVERTICES][3];
    55015458        double    x1,y1,x2,y2,x3,y3;
    55025459
     
    55055462
    55065463        /*Get xyz list: */
    5507         GetVerticesCoordinates(&xyz_list[0][0], nodes, numvertices);
     5464        GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES);
    55085465        x1=xyz_list[0][0]; y1=xyz_list[0][1];
    55095466        x2=xyz_list[1][0]; y2=xyz_list[1][1];
     
    55775534
    55785535        /*Intermediaries*/
    5579         const int  numvertices        = 3;
    5580         double     value[numvertices];
     5536        double     value[NUMVERTICES];
    55815537        GaussTria *gauss              = NULL;
    55825538
     
    55905546        /* Start looping on the number of vertices: */
    55915547        gauss=new GaussTria();
    5592         for (int iv=0;iv<numvertices;iv++){
     5548        for (int iv=0;iv<NUMVERTICES;iv++){
    55935549                gauss->GaussVertex(iv);
    55945550                input->GetParameterValue(&pvalue[iv],gauss);
     
    56035559
    56045560        /*Intermediaries*/
    5605         const int  numvertices        = 3;
    5606         double     value[numvertices];
     5561        double     value[NUMVERTICES];
    56075562        GaussTria *gauss              = NULL;
    56085563
     
    56165571        if (input){
    56175572                gauss=new GaussTria();
    5618                 for (int iv=0;iv<numvertices;iv++){
     5573                for (int iv=0;iv<NUMVERTICES;iv++){
    56195574                        gauss->GaussVertex(iv);
    56205575                        input->GetParameterValue(&pvalue[iv],gauss);
     
    56225577        }
    56235578        else{
    5624                 for (int iv=0;iv<numvertices;iv++) pvalue[iv]=defaultvalue;
     5579                for (int iv=0;iv<NUMVERTICES;iv++) pvalue[iv]=defaultvalue;
    56255580        }
    56265581
     
    57865741
    57875742        int i;
    5788         const int    numvertices=3;
    57895743        const int    numdofpervertex=2;
    5790         const int    numdof=numdofpervertex*numvertices;
     5744        const int    numdof=numdofpervertex*NUMVERTICES;
    57915745        int*         doflist=NULL;
    57925746        double       values[numdof];
     
    58055759        /*P1 element only for now*/
    58065760        gauss=new GaussTria();
    5807         for(i=0;i<numvertices;i++){
     5761        for(i=0;i<NUMVERTICES;i++){
    58085762
    58095763                gauss->GaussVertex(i);
     
    58295783
    58305784        int i;
    5831         const int    numvertices=3;
    58325785        const int    numdofpervertex=2;
    5833         const int    numdof=numdofpervertex*numvertices;
     5786        const int    numdof=numdofpervertex*NUMVERTICES;
    58345787        int*         doflist=NULL;
    58355788        double       values[numdof];
     
    58495802        /*P1 element only for now*/
    58505803        gauss=new GaussTria();
    5851         for(i=0;i<numvertices;i++){
     5804        for(i=0;i<NUMVERTICES;i++){
    58525805
    58535806                gauss->GaussVertex(i);
     
    59275880
    59285881        /* node data: */
    5929         const int    numvertices=3;
    59305882        const int    NDOF2=2;
    5931         double       xyz_list[numvertices][3];
    5932         int          doflist1[numvertices];
    5933         double       dh1dh3[NDOF2][numvertices];
     5883        double       xyz_list[NUMVERTICES][3];
     5884        int          doflist1[NUMVERTICES];
     5885        double       dh1dh3[NDOF2][NUMVERTICES];
    59345886
    59355887        /* grid data: */
     
    59565908
    59575909        /*element vector at the gaussian points: */
    5958         double  grade_g[numvertices]={0.0};
    5959         double  grade_g_gaussian[numvertices];
     5910        double  grade_g[NUMVERTICES]={0.0};
     5911        double  grade_g_gaussian[NUMVERTICES];
    59605912
    59615913        /* Jacobian: */
     
    59915943
    59925944        /* Get node coordinates and dof list: */
    5993         GetVerticesCoordinates(&xyz_list[0][0], nodes, numvertices);
     5945        GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES);
    59945946        GetDofList1(&doflist1[0]);
    59955947
     
    60445996
    60455997                /*Build gradje_g_gaussian vector (actually -dJ/ddrag): */
    6046                 for (i=0;i<numvertices;i++){
     5998                for (i=0;i<NUMVERTICES;i++){
    60475999                        //standard gradient dJ/dki
    60486000                        grade_g_gaussian[i]=(
     
    60576009
    60586010                /*Add gradje_g_gaussian vector to gradje_g: */
    6059                 for( i=0; i<numvertices; i++)grade_g[i]+=grade_g_gaussian[i];
     6011                for( i=0; i<NUMVERTICES; i++)grade_g[i]+=grade_g_gaussian[i];
    60606012        }
    60616013
    60626014        /*Add grade_g to global vector gradient: */
    6063         VecSetValues(gradient,numvertices,doflist1,(const double*)grade_g,ADD_VALUES);
     6015        VecSetValues(gradient,NUMVERTICES,doflist1,(const double*)grade_g,ADD_VALUES);
    60646016
    60656017        /*Add grade_g to the inputs of this element: */
     
    60796031        int i;
    60806032
    6081         const int    numvertices=3;
    60826033        const int    numdofpervertex=1;
    6083         const int    numdof=numdofpervertex*numvertices;
     6034        const int    numdof=numdofpervertex*NUMVERTICES;
    60846035        int*         doflist=NULL;
    60856036        double       values[numdof];
    6086         double       lambda[numvertices];
     6037        double       lambda[NUMVERTICES];
    60876038
    60886039        /*Get dof list: */
     
    61126063        int i;
    61136064
    6114         const int    numvertices=3;
    61156065        const int    numdofpervertex=2;
    6116         const int    numdof=numdofpervertex*numvertices;
     6066        const int    numdof=numdofpervertex*NUMVERTICES;
    61176067        int*         doflist=NULL;
    61186068        double       values[numdof];
    6119         double       lambdax[numvertices];
    6120         double       lambday[numvertices];
     6069        double       lambdax[NUMVERTICES];
     6070        double       lambday[NUMVERTICES];
    61216071
    61226072        /*Get dof list: */
     
    61296079
    61306080        /*Ok, we have vx and vy in values, fill in vx and vy arrays: */
    6131         for(i=0;i<numvertices;i++){
     6081        for(i=0;i<NUMVERTICES;i++){
    61326082                lambdax[i]=values[i*numdofpervertex+0];
    61336083                lambday[i]=values[i*numdofpervertex+1];
     
    61486098        int i;
    61496099
    6150         const int    numvertices=3;
    61516100        const int    numdofpervertex=2;
    6152         const int    numdof=numdofpervertex*numvertices;
     6101        const int    numdof=numdofpervertex*NUMVERTICES;
    61536102        int*         doflist=NULL;
    61546103        double       values[numdof];
    6155         double       vx[numvertices];
    6156         double       vy[numvertices];
    6157         double       vz[numvertices];
    6158         double       vel[numvertices];
    6159         double       pressure[numvertices];
    6160         double       thickness[numvertices];
     6104        double       vx[NUMVERTICES];
     6105        double       vy[NUMVERTICES];
     6106        double       vz[NUMVERTICES];
     6107        double       vel[NUMVERTICES];
     6108        double       pressure[NUMVERTICES];
     6109        double       thickness[NUMVERTICES];
    61616110        double       rho_ice,g;
    61626111        int          dummy;
     
    61716120
    61726121        /*Ok, we have vx and vy in values, fill in vx and vy arrays: */
    6173         for(i=0;i<numvertices;i++){
     6122        for(i=0;i<NUMVERTICES;i++){
    61746123                vx[i]=values[i*numdofpervertex+0];
    61756124                vy[i]=values[i*numdofpervertex+1];
     
    61806129
    61816130        /*Now Compute vel*/
    6182         for(i=0;i<numvertices;i++) vel[i]=pow( pow(vx[i],2.0) + pow(vy[i],2.0) + pow(vz[i],2.0) , 0.5);
     6131        for(i=0;i<NUMVERTICES;i++) vel[i]=pow( pow(vx[i],2.0) + pow(vy[i],2.0) + pow(vz[i],2.0) , 0.5);
    61836132
    61846133        /*For pressure: we have not computed pressure in this analysis, for this element. We are in 2D,
     
    61876136        g=matpar->GetG();
    61886137        GetParameterListOnVertices(&thickness[0],ThicknessEnum);
    6189         for(i=0;i<numvertices;i++) pressure[i]=rho_ice*g*thickness[i];
     6138        for(i=0;i<NUMVERTICES;i++) pressure[i]=rho_ice*g*thickness[i];
    61906139
    61916140        /*Now, we have to move the previous Vx and Vy inputs  to old
     
    62116160        int i;
    62126161
    6213         const int    numvertices=3;
    62146162        const int    numdofpervertex=2;
    6215         const int    numdof=numdofpervertex*numvertices;
     6163        const int    numdof=numdofpervertex*NUMVERTICES;
    62166164        int*         doflist=NULL;
    62176165        double       values[numdof];
    6218         double       vx[numvertices];
    6219         double       vy[numvertices];
    6220         double       vz[numvertices];
    6221         double       vel[numvertices];
    6222         double       pressure[numvertices];
    6223         double       thickness[numvertices];
     6166        double       vx[NUMVERTICES];
     6167        double       vy[NUMVERTICES];
     6168        double       vz[NUMVERTICES];
     6169        double       vel[NUMVERTICES];
     6170        double       pressure[NUMVERTICES];
     6171        double       thickness[NUMVERTICES];
    62246172        double       rho_ice,g;
    62256173        Input*       vz_input=NULL;
     
    62366184
    62376185        /*Ok, we have vx and vy in values, fill in vx and vy arrays: */
    6238         for(i=0;i<numvertices;i++){
     6186        for(i=0;i<NUMVERTICES;i++){
    62396187                vx[i]=values[i*numdofpervertex+0];
    62406188                vy[i]=values[i*numdofpervertex+1];
     
    62486196                }
    62496197                vz_input->GetValuesPtr(&vz_ptr,&dummy);
    6250                 for(i=0;i<numvertices;i++) vz[i]=vz_ptr[i];
     6198                for(i=0;i<NUMVERTICES;i++) vz[i]=vz_ptr[i];
    62516199        }
    62526200        else{
    6253                 for(i=0;i<numvertices;i++) vz[i]=0.0;
     6201                for(i=0;i<NUMVERTICES;i++) vz[i]=0.0;
    62546202        }
    62556203
    62566204        /*Now Compute vel*/
    6257         for(i=0;i<numvertices;i++) vel[i]=pow( pow(vx[i],2.0) + pow(vy[i],2.0) + pow(vz[i],2.0) , 0.5);
     6205        for(i=0;i<NUMVERTICES;i++) vel[i]=pow( pow(vx[i],2.0) + pow(vy[i],2.0) + pow(vz[i],2.0) , 0.5);
    62586206
    62596207        /*For pressure: we have not computed pressure in this analysis, for this element. We are in 2D,
     
    62636211        GetParameterListOnVertices(&thickness[0],ThicknessEnum);
    62646212       
    6265         for(i=0;i<numvertices;i++){
     6213        for(i=0;i<NUMVERTICES;i++){
    62666214                pressure[i]=rho_ice*g*thickness[i];
    62676215        }
     
    62876235void  Tria::InputUpdateFromSolutionOneDof(double* solution,int enum_type){
    62886236
    6289         const int numvertices     = 3;
    62906237        const int numdofpervertex = 1;
    6291         const int numdof          = numdofpervertex *numvertices;
     6238        const int numdof          = numdofpervertex *NUMVERTICES;
    62926239        int*         doflist=NULL;
    62936240        double    values[numdof];
  • issm/trunk/src/c/objects/Elements/Tria.h

    r5661 r5662  
    2222#include "../../EnumDefinitions/EnumDefinitions.h"
    2323/*}}}*/
    24 
    25 /*Element macros*/
    26 #define NUMVERTICES 3
    2724
    2825class Tria: public Element,public TriaHook,public TriaRef{
Note: See TracChangeset for help on using the changeset viewer.