Changeset 6748


Ignore:
Timestamp:
12/17/10 10:04:20 (14 years ago)
Author:
Eric.Larour
Message:

New enums including state of rift segments.
A rift segment now has a state, ie: Free, Closed or Open.

Location:
issm/trunk/src
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk/src/c/EnumDefinitions/EnumDefinitions.h

    r6726 r6748  
    158158        AirEnum,
    159159        MelangeEnum,
     160        /*}}}*/
     161        /*Rift state {{{1*/
     162        FreeEnum,
     163        OpenEnum,
     164        ClosedEnum,
    160165        /*}}}*/
    161166        /*Inputs {{{1*/
  • issm/trunk/src/c/EnumDefinitions/EnumToString.cpp

    r6726 r6748  
    134134                case AirEnum : return "Air";
    135135                case MelangeEnum : return "Melange";
     136                case FreeEnum : return "Free";
     137                case OpenEnum : return "Open";
     138                case ClosedEnum : return "Closed";
    136139                case AccumulationRateEnum : return "AccumulationRate";
    137140                case AdjointxEnum : return "Adjointx";
  • issm/trunk/src/c/EnumDefinitions/StringToEnum.cpp

    r6726 r6748  
    132132        else if (strcmp(name,"Air")==0) return AirEnum;
    133133        else if (strcmp(name,"Melange")==0) return MelangeEnum;
     134        else if (strcmp(name,"Free")==0) return FreeEnum;
     135        else if (strcmp(name,"Open")==0) return OpenEnum;
     136        else if (strcmp(name,"Closed")==0) return ClosedEnum;
    134137        else if (strcmp(name,"AccumulationRate")==0) return AccumulationRateEnum;
    135138        else if (strcmp(name,"Adjointx")==0) return AdjointxEnum;
  • issm/trunk/src/c/modules/ModelProcessorx/ModelProcessorx.h

    r6235 r6748  
    66#define _MODEL_PROCESSORX_H_
    77
    8 #define RIFTINFOSIZE 11
     8#define RIFTINFOSIZE 12
    99
    1010class DataSet;
  • issm/trunk/src/c/objects/Loads/Riftfront.cpp

    r6413 r6748  
    8787        this->length=*(iomodel->riftinfo+RIFTINFOSIZE*i+6);
    8888        this->fraction=*(iomodel->riftinfo+RIFTINFOSIZE*i+9);
     89        this->state=*(iomodel->riftinfo+RIFTINFOSIZE*i+11);
    8990
    9091        //intialize inputs, and add as many inputs per element as requested:
     
    156157        printf("   fraction: %i\n",fraction);
    157158        printf("   fractionincrement: %i\n",fractionincrement);
     159        printf("   state: %i\n",state);
    158160        printf("   frozen: %s\n",frozen ? "true":"false");
    159161               
     
    209211        memcpy(marshalled_dataset,&fraction,sizeof(fraction));marshalled_dataset+=sizeof(fraction);
    210212        memcpy(marshalled_dataset,&frozen,sizeof(frozen));marshalled_dataset+=sizeof(frozen);
     213        memcpy(marshalled_dataset,&state,sizeof(state));marshalled_dataset+=sizeof(state);
    211214        memcpy(marshalled_dataset,&counter,sizeof(counter));marshalled_dataset+=sizeof(counter);
    212215        memcpy(marshalled_dataset,&prestable,sizeof(prestable));marshalled_dataset+=sizeof(prestable);
     
    243246                +sizeof(fraction)
    244247                +sizeof(frozen)
     248                +sizeof(state)
    245249                +sizeof(counter)
    246250                +sizeof(prestable)
     
    273277        memcpy(&fraction,marshalled_dataset,sizeof(fraction));marshalled_dataset+=sizeof(fraction);
    274278        memcpy(&frozen,marshalled_dataset,sizeof(frozen));marshalled_dataset+=sizeof(frozen);
     279        memcpy(&state,marshalled_dataset,sizeof(state));marshalled_dataset+=sizeof(state);
    275280        memcpy(&counter,marshalled_dataset,sizeof(counter));marshalled_dataset+=sizeof(counter);
    276281        memcpy(&prestable,marshalled_dataset,sizeof(prestable));marshalled_dataset+=sizeof(prestable);
     
    338343        riftfront->active=this->active;
    339344        riftfront->frozen=this->frozen;
     345        riftfront->state=this->state;
    340346        riftfront->counter=this->counter;
    341347        riftfront->prestable=this->prestable;
     
    702708        }
    703709
     710        /*Is this rift segment state specified by user input? :*/
     711        if (this->state==OpenEnum || this->state==ClosedEnum){
     712
     713                if(this->state==OpenEnum)this->active=0;
     714                if(this->state==ClosedEnum)this->active=1;
     715               
     716                /*this segment is like frozen, no instability here: */
     717                *punstable=0;
     718                return 1;
     719        }
     720
     721
    704722        /*recover parameters: */
    705723        this->inputs->GetParameterValue(&fractionincrement,FractionIncrementEnum);
  • issm/trunk/src/c/objects/Loads/Riftfront.h

    r6412 r6748  
    4141                double   length;
    4242                double   fraction;
     43                int      state;
    4344               
    4445                Parameters* parameters; //pointer to solution parameters
  • issm/trunk/src/c/shared/TriMesh/TriMeshUtils.cpp

    r6412 r6748  
    1010#include "../../include/include.h"
    1111
     12#define RIFTPENALTYPAIRSWIDTH 8
    1213int IsGridOnRift(int* riftsegments, int nriftsegs, int grid){
    1314
     
    986987
    987988                /*allocate riftpenaltypairs, and riftnumpenaltypairs: */
    988                 if((numsegs/2-1)!=0)riftpenaltypairs=(double*)xcalloc((numsegs/2-1)*7,sizeof(double));
     989                if((numsegs/2-1)!=0)riftpenaltypairs=(double*)xcalloc((numsegs/2-1)*RIFTPENALTYPAIRSWIDTH,sizeof(double));
    989990               
    990991                /*Go through only one flank of the rifts, not counting the tips: */
  • issm/trunk/src/m/model/presolve.m

    r6304 r6748  
    3131end
    3232
    33 md.riftinfo=zeros(numpairs,10); % 2 for grids + 2 for elements+ 2 for  normals + 1 for length + 1 for fill + 1 for friction + 1 for fraction.
     33md.riftinfo=zeros(numpairs,12); % 2 for grids + 2 for elements+ 2 for  normals + 1 for length + 1 for fill + 1 for friction + 1 for fraction + 1 for fractionincrement + 1 for state.
    3434
    3535count=1;
     
    4141        md.riftinfo(count:count+numpairsforthisrift-1,10)=md.rifts(i).fraction;
    4242        md.riftinfo(count:count+numpairsforthisrift-1,11)=md.rifts(i).fractionincrement;
     43        md.riftinfo(count:count+numpairsforthisrift-1,12)=md.rifts(i).state;
    4344        count=count+numpairsforthisrift;
    4445end
  • issm/trunk/src/mex/TriMeshProcessRifts/TriMeshProcessRifts.cpp

    r4526 r6748  
    2727        /*empty rifts structure: */
    2828        double* pNaN=NULL;
    29         const   char*   fnames[9];
     29        const   char*   fnames[10];
    3030        mwSize     ndim=2;
    3131        mwSize          dimensions[2] = {1,1};
     
    4747        double* segmentmarkers_in=NULL;
    4848
     49        /* state: */
     50        double* state=NULL;
     51
    4952        int     num_seg;
    5053
     
    238241                fnames[7] = "fraction";
    239242                fnames[8] = "fractionincrement";
     243                fnames[9] = "state";
    240244
    241245                dimensions[0]=out_numrifts;
    242246
    243                 pmxa_array=mxCreateStructArray( ndim,dimensions,9,fnames);
     247                pmxa_array=mxCreateStructArray( ndim,dimensions,10,fnames);
    244248               
    245249                for (i=0;i<out_numrifts;i++){
     
    287291                        mxSetField(pmxa_array,i,"fraction",mxCreateDoubleScalar(0)); //default is ice
    288292                        mxSetField(pmxa_array,i,"fractionincrement",mxCreateDoubleScalar(0.1));
     293
     294                        /*State: */
     295                        state=(double*)xmalloc(out_riftsnumpenaltypairs[i]*sizeof(double));
     296                        for(j=0;j<out_riftsnumpenaltypairs[i];j++)state[j]=FreeEnum;
     297                        pmxa_array2= mxCreateDoubleMatrix(0,0,mxREAL);
     298                        mxSetM(pmxa_array2,1);
     299                        mxSetN(pmxa_array2,out_riftsnumpenaltypairs[i]);
     300                        mxSetPr(pmxa_array2,state);
     301                        mexCallMATLAB( 1, &pmxa_array3, 1, &pmxa_array2, "transpose");
     302                       
     303                        mxSetField(pmxa_array,i,"state",pmxa_array3);
    289304                }
    290305        }
Note: See TracChangeset for help on using the changeset viewer.