Changeset 17370


Ignore:
Timestamp:
03/03/14 09:48:20 (11 years ago)
Author:
Mathieu Morlighem
Message:

CHG: trying to fix AD

File:
1 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/analyses/LevelsetAnalysis.cpp

    r17368 r17370  
    9393
    9494        /*Intermediaries */
    95         const int  dim = 2; // solve for LSF in horizontal plane only
     95        int  dim = 2; // solve for LSF in horizontal plane only
    9696        int i, row, col;
    9797        IssmDouble kappa;
    9898        IssmDouble Jdet, dt, D_scalar;
    9999        IssmDouble h,hx,hy,hz;
    100         IssmDouble vel,v[dim],w[dim];
    101         IssmDouble calvingrate, c[dim];
     100        IssmDouble vel;
     101        IssmDouble calvingrate;
    102102        IssmDouble dlsf[dim], norm_dlsf, normal[dim];
    103103        IssmDouble* xyz_list = NULL;
     
    111111        IssmDouble*    B        = xNew<IssmDouble>(dim*numnodes);
    112112        IssmDouble*    Bprime   = xNew<IssmDouble>(dim*numnodes);
    113         IssmDouble     D[dim][dim];
     113        IssmDouble*    D        = xNew<IssmDouble>(dim*dim);
     114        IssmDouble*    v        = xNew<IssmDouble>(dim);
     115        IssmDouble*    w        = xNew<IssmDouble>(dim);
     116        IssmDouble*    c        = xNew<IssmDouble>(dim);
    114117
    115118        /*Retrieve all inputs and parameters*/
     
    165168                        for(col=0;col<dim;col++)
    166169                                if(row==col)
    167                                         D[row][col]=D_scalar*w[row];
     170                                        D[row*dim+col]=D_scalar*w[row];
    168171                                else
    169                                    D[row][col]=0.;
     172                                   D[row*dim+col]=0.;
    170173
    171174                TripleMultiply(B,dim,numnodes,1,
    172                                         &D[0][0],dim,dim,0,
     175                                        D,dim,dim,0,
    173176                                        Bprime,dim,numnodes,0,
    174177                                        &Ke->values[0],1);
     
    177180                int stabilization=2;
    178181                vel=0.;
    179                 for(i=0;i<dim;i++) vel+=pow(v[i],2);
     182                for(i=0;i<dim;i++) vel+=v[i]*v[i];
    180183                vel=sqrt(vel)+1.e-14;
    181184                switch(stabilization){
     
    191194                                        for(col=0;col<dim;col++)
    192195                                        if(row==col)
    193                                                 D[row][col]=D_scalar*kappa;
     196                                                D[row*dim+col]=D_scalar*kappa;
    194197                                        else
    195                                                 D[row][col]=0.;
     198                                                D[row*dim+col]=0.;
    196199
    197200                                TripleMultiply(Bprime,dim,numnodes,1,
    198                                                         &D[0][0],dim,dim,0,
     201                                                        D,dim,dim,0,
    199202                                                        Bprime,dim,numnodes,0,
    200203                                                        &Ke->values[0],1);
     
    206209                                for(row=0;row<dim;row++)
    207210                                        for(col=0;col<dim;col++)
    208                                                 D[row][col] = D_scalar*h/(2.*vel)*v[row]*v[col];
     211                                                D[row*dim+col] = D_scalar*h/(2.*vel)*v[row]*v[col];
    209212
    210213                                TripleMultiply(Bprime,dim,numnodes,1,
    211                                                         &D[0][0],dim,dim,0,
     214                                                        D,dim,dim,0,
    212215                                                        Bprime,dim,numnodes,0,
    213216                                                        &Ke->values[0],1);
     
    222225        xDelete<IssmDouble>(basis);
    223226        xDelete<IssmDouble>(B);
     227        xDelete<IssmDouble>(D);
    224228        xDelete<IssmDouble>(Bprime);
     229        xDelete<IssmDouble>(v);
     230        xDelete<IssmDouble>(w);
     231        xDelete<IssmDouble>(c);
    225232        delete gauss;
    226233        return Ke;
Note: See TracChangeset for help on using the changeset viewer.