Changeset 9465


Ignore:
Timestamp:
08/26/11 14:13:42 (14 years ago)
Author:
Mathieu Morlighem
Message:

moved rheology_law to a string

Location:
issm/trunk
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk/src/c/modules/ModelProcessorx/CreateParameters.cpp

    r9405 r9465  
    1818        Parameters *parameters       = NULL;
    1919        double     *requestedoutputs = NULL;
     20        char       *rheology_law     = NULL;
    2021       
    2122        if(*pparameters)return; //do not create parameters twice!
     
    2324        /*Initialize dataset: */
    2425        parameters = iomodel->CopyConstants();
     26
     27        /*Convert some parameters to Enums*/
     28        iomodel->FetchData(&rheology_law,RheologyLawEnum);
     29        if      (strcmp(rheology_law,"none")==0)      parameters->AddObject(new IntParam(RheologyLawEnum,NoneEnum));
     30        else if (strcmp(rheology_law,"paterson")==0)  parameters->AddObject(new IntParam(RheologyLawEnum,PatersonEnum));
     31        else if (strcmp(rheology_law,"arrhenius")==0) parameters->AddObject(new IntParam(RheologyLawEnum,ArrheniusEnum));
     32        else _error_("rheology law %s not supported",rheology_law);
    2533
    2634        /*some parameters that did not come with the iomodel: */
  • issm/trunk/src/c/objects/Loads/Icefront.cpp

    r9405 r9465  
    8383        else _error_("in_icefront_type %s not supported yet!",EnumToStringx(in_icefront_type));
    8484
    85         if (in_icefront_type==PattynIceFrontEnum || in_icefront_type==StokesIceFrontEnum) num_nodes=4;
    86         else num_nodes=2;
    87         icefront_fill=(int)*(iomodel->Data(PressureloadEnum)+segment_width*i+segment_width-1);
     85        if (in_icefront_type==PattynIceFrontEnum || in_icefront_type==StokesIceFrontEnum)
     86         num_nodes=4;
     87        else
     88         num_nodes=2;
     89
     90        /*Fill*/
     91        switch((int)iomodel->Data(PressureloadEnum)[segment_width*i+segment_width-1]){
     92                case 0: icefront_fill=AirEnum; break;
     93                case 1: icefront_fill=WaterEnum; break;
     94                case 2: icefront_fill=IceEnum; break;
     95                default: _error_("Fill %i not supported",iomodel->Data(PressureloadEnum)[segment_width*i+segment_width-1]);
     96        }
    8897       
    8998        /*Ok, we have everything to build the object: */
  • issm/trunk/src/m/classes/model.m

    r9464 r9465  
    123123                 rheology_B       = {NaN,true,'DoubleMat',1};
    124124                 rheology_n       = {NaN,true,'DoubleMat',2};
    125                  rheology_law     = {0,true,'Integer'};
     125                 rheology_law     = {'',true,'String'};
    126126
    127127                 %Geometrical parameters
     
    448448                         if isfield(structmd,'gridonboundary'), md.nodeonboundary=structmd.gridonboundary; end
    449449
    450                          %Field class change
    451 
     450                         %Field changes
    452451                         if (isfield(structmd,'type') & ischar(structmd.type)),
    453452                                 if strcmpi(structmd.type,'2d'), md.dim=2; end
     
    473472                                 pos=find(structmd.spcvelocity(:,3)); md.spcvz(pos)=structmd.spcvelocity(pos,6);
    474473                         end
    475                          if ismember(structmd.pressureload(end,end),[AirEnum() WaterEnum() IceEnum()]),
    476                                  pos=find(md.pressureload(:,end)==AirEnum);   md.pressureload(pos,end)=0;
    477                                  pos=find(md.pressureload(:,end)==WaterEnum); md.pressureload(pos,end)=1;
    478                                  pos=find(md.pressureload(:,end)==IceEnum);   md.pressureload(pos,end)=2;
     474                         if ismember(structmd.pressureload(end,end),[118 119 120]),
     475                                 pos=find(structmd.pressureload(:,end)==120); md.pressureload(pos,end)=0;
     476                                 pos=find(structmd.pressureload(:,end)==118); md.pressureload(pos,end)=1;
     477                                 pos=find(structmd.pressureload(:,end)==119); md.pressureload(pos,end)=2;
     478                         end
     479                         if isnumeric(structmd.rheology_law),
     480                                 if (structmd.rheology_law==272), md.rheology_law='none';      end
     481                                 if (structmd.rheology_law==368), md.rheology_law='paterson';  end
     482                                 if (structmd.rheology_law==369), md.rheology_law='arrhenius'; end
    479483                         end
    480484
     
    717721
    718722                         %Rheology law: what is the temperature dependence of B with T
    719                          %available: None, Paterson and Arrhenius
    720                          md.rheology_law=PatersonEnum;
     723                         %available: none, paterson and arrhenius
     724                         md.rheology_law='paterson';
    721725
    722726                         %i/o:
  • issm/trunk/src/m/model/display/displaymaterials.m

    r8032 r9465  
    1515fielddisplay(md,'rheology_B','flow law parameter [Pa/s^(1/n)]');
    1616fielddisplay(md,'rheology_n','Glen''s flow law exponent');
    17 fielddisplay(md,'rheology_law','law for the temperature dependance of the rheology: NoneEnum, PatersonEnum or Arrhenius');
     17fielddisplay(md,'rheology_law','law for the temperature dependance of the rheology: ''none'', ''paterson'' or ''arrhenius''');
    1818fielddisplay(md,'heatcapacity','heat capacity [J/kg/K]');
    1919fielddisplay(md,'thermalconductivity','ice thermal conductivity [W/m/K]');
  • issm/trunk/src/m/model/ismodelselfconsistent.m

    r9464 r9465  
    176176        message(['model not consistent: model ' md.name ' hydrostatic_adjustment field should be AbsoluteEnum or IncrementalEnum']);
    177177end
    178 if ~ismember(md.rheology_law,[NoneEnum PatersonEnum ArrheniusEnum]),
    179         message(['model not consistent: model ' md.name ' rheology_law field should be NoneEnum, PatersonEnum or ArrheniusEnum']);
     178if ~ismember({md.rheology_law},{'none' 'paterson' 'arrhenius']),
     179        message(['model not consistent: model ' md.name ' rheology_law field should be ''none'' ''paterson'' or ''arrhenius''']);
    180180end
    181181%}}}
  • issm/trunk/test/Par/ISMIPF.par

    r9455 r9465  
    1717md.rheology_B=1.4734*10^14*ones(md.numberofnodes,1);
    1818md.rheology_n=1*ones(md.numberofelements,1);
    19 md.rheology_law=NoneEnum;
     19md.rheology_law='none';
    2020
    2121disp('      boundary conditions for diagnostic model');
Note: See TracChangeset for help on using the changeset viewer.