Changeset 26135


Ignore:
Timestamp:
03/23/21 13:01:13 (4 years ago)
Author:
Mathieu Morlighem
Message:

BUG: fixing DenseMat with new indices

Location:
issm/trunk-jpl/src/c
Files:
3 edited

Legend:

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

    r26131 r26135  
    23402340                }
    23412341                else{
    2342                         values[i]=meltratefactor[i]*tanh((base[i]-bed[i])/thresholdthickness)*(upperdepthmelt-base[i]);
     2342                        values[i]=meltratefactor[i]*tanh((base[i]-bed[i])/thresholdthickness);//*(upperdepthmelt-base[i]);
    23432343                }
    23442344        }
  • issm/trunk-jpl/src/c/toolkits/issm/IssmDenseMat.h

    r24682 r26135  
    230230                        switch(mode){
    231231                                case ADD_VAL:
    232                                         for(i=0;i<m;i++) for(j=0;j<n;j++) this->matrix[N*idxm[i]+idxn[j]]+=values[n*i+j];
     232                                        for(i=0;i<m;i++){
     233                                                if(idxm[i]<0) continue;
     234                                                for(j=0;j<n;j++){
     235                                                        if(idxn[j]<0) continue;
     236                                                        this->matrix[N*idxm[i]+idxn[j]]+=values[n*i+j];
     237                                                }
     238                                        }
    233239                                        break;
    234240                                case INS_VAL:
    235                                         for(i=0;i<m;i++) for(j=0;j<n;j++) this->matrix[N*idxm[i]+idxn[j]]=values[n*i+j];
     241                                        for(i=0;i<m;i++){
     242                                                if(idxm[i]<0) continue;
     243                                                for(j=0;j<n;j++){
     244                                                        if(idxn[j]<0) continue;
     245                                                        this->matrix[N*idxm[i]+idxn[j]]=values[n*i+j];
     246                                                }
     247                                        }
    236248                                        break;
    237249                                default:
  • issm/trunk-jpl/src/c/toolkits/issm/IssmSeqVec.h

    r26110 r26135  
    101101                        switch(mode){
    102102                                case ADD_VAL:
    103                                         for(i=0;i<ssize;i++) this->vector[list[i]]+=values[i];
     103                                        for(i=0;i<ssize;i++) if(list[i]>=0) this->vector[list[i]]+=values[i];
    104104                                        break;
    105105                                case INS_VAL:
    106                                         for(i=0;i<ssize;i++) this->vector[list[i]]=values[i];
     106                                        for(i=0;i<ssize;i++) if(list[i]>=0) this->vector[list[i]]=values[i];
    107107                                        break;
    108108                                default:
     
    113113                }
    114114                /*}}}*/
    115                 void SetValue(int dof, doubletype value, InsMode mode){/*{{{*/
     115                void SetValue(int dof, doubletype value,InsMode mode){/*{{{*/
     116
     117                        _assert_(dof>=0);
    116118
    117119                        switch(mode){
Note: See TracChangeset for help on using the changeset viewer.