Changeset 17368


Ignore:
Timestamp:
02/28/14 13:36:22 (11 years ago)
Author:
jbondzio
Message:

BUG: incompatibility of ternary operator with adolc

File:
1 edited

Legend:

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

    r17364 r17368  
    9898        IssmDouble Jdet, dt, D_scalar;
    9999        IssmDouble h,hx,hy,hz;
    100         IssmDouble vel,v[dim];
     100        IssmDouble vel,v[dim],w[dim];
    101101        IssmDouble calvingrate, c[dim];
    102102        IssmDouble dlsf[dim], norm_dlsf, normal[dim];
     
    153153                norm_dlsf=sqrt(norm_dlsf);
    154154
    155                 if(norm_dlsf>1.e-10)
    156                         for(i=0;i<dim;i++) c[i]=calvingrate*dlsf[i]/norm_dlsf;
     155                if(norm_dlsf>1.e-10){
     156                        for(i=0;i<dim;i++) normal[i]=dlsf[i]/norm_dlsf;
     157                        for(i=0;i<dim;i++) c[i]=calvingrate*normal[i];
     158                }
    157159                else
    158160                        for(i=0;i<dim;i++) c[i]=0.;
     161               
     162                for(i=0;i<dim;i++) w[i]=v[i]-c[i];
    159163
    160164                for(row=0;row<dim;row++)
    161165                        for(col=0;col<dim;col++)
    162                                 D[row][col]=((row==col)?D_scalar*(v[row]-c[row]):0.);
     166                                if(row==col)
     167                                        D[row][col]=D_scalar*w[row];
     168                                else
     169                                   D[row][col]=0.;
    163170
    164171                TripleMultiply(B,dim,numnodes,1,
     
    179186                                /* Artificial Diffusion */
    180187                                element->ElementSizes(&hx,&hy,&hz);
    181                                 h=sqrt( pow(hx*v[0]/vel,2) + pow(hy*v[1]/vel,2) ); //FIXME: is this correct?
    182 
    183                                 kappa=h*vel/2.; //FIXME: insert suitable value for kappa
     188                                h=sqrt( pow(hx*v[0]/vel,2) + pow(hy*v[1]/vel,2) );
     189                                kappa=h*vel/2.;
    184190                                for(row=0;row<dim;row++)
    185191                                        for(col=0;col<dim;col++)
    186                                                 D[row][col]=((row==col)?D_scalar*kappa:0.);
     192                                        if(row==col)
     193                                                D[row][col]=D_scalar*kappa;
     194                                        else
     195                                                D[row][col]=0.;
    187196
    188197                                TripleMultiply(Bprime,dim,numnodes,1,
Note: See TracChangeset for help on using the changeset viewer.