Changeset 7848
- Timestamp:
- 04/12/11 11:03:35 (14 years ago)
- Location:
- issm/trunk/src
- Files:
-
- 4 added
- 13 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk/src/c/EnumDefinitions/EnumDefinitions.h
r7746 r7848 431 431 OptionDoubleEnum, 432 432 OptionLogicalEnum, 433 OptionStructEnum 434 /*}}}*/ 433 OptionStructEnum, 434 /*}}}*/ 435 /*Rheology law (move too Material) {{{1*/ 436 RheologyLawEnum, 437 PatersonEnum, 438 ArrheniusEnum 439 /*}}}*/ 435 440 }; 436 441 -
issm/trunk/src/c/EnumDefinitions/EnumToString.cpp
r7746 r7848 381 381 case OptionLogicalEnum : return "OptionLogical"; 382 382 case OptionStructEnum : return "OptionStruct"; 383 case RheologyLawEnum : return "RheologyLaw"; 384 case PatersonEnum : return "Paterson"; 385 case ArrheniusEnum : return "Arrhenius"; 383 386 default : return "unknown"; 384 387 -
issm/trunk/src/c/EnumDefinitions/StringToEnum.cpp
r7746 r7848 379 379 else if (strcmp(name,"OptionLogical")==0) return OptionLogicalEnum; 380 380 else if (strcmp(name,"OptionStruct")==0) return OptionStructEnum; 381 else if (strcmp(name,"RheologyLaw")==0) return RheologyLawEnum; 382 else if (strcmp(name,"Paterson")==0) return PatersonEnum; 383 else if (strcmp(name,"Arrhenius")==0) return ArrheniusEnum; 381 384 else _error_("Enum %s not found",name); 382 385 -
issm/trunk/src/c/Makefile.am
r7739 r7848 327 327 ./shared/Elements/elements.h\ 328 328 ./shared/Elements/Paterson.cpp\ 329 ./shared/Elements/Arrhenius.cpp\ 329 330 ./shared/Elements/GetVerticesCoordinates.cpp\ 330 331 ./shared/Elements/GetLocalDofList.cpp\ … … 962 963 ./shared/Elements/elements.h\ 963 964 ./shared/Elements/Paterson.cpp\ 965 ./shared/Elements/Arrhenius.cpp\ 964 966 ./shared/Elements/GetVerticesCoordinates.cpp\ 965 967 ./shared/Elements/GetLocalDofList.cpp\ -
issm/trunk/src/c/modules/ModelProcessorx/CreateParameters.cpp
r7408 r7848 36 36 parameters = new Parameters(ParametersEnum); 37 37 38 parameters->AddObject(new 39 parameters->AddObject(new 40 parameters->AddObject(new 41 if (iomodel->dim==2) parameters->AddObject(new IntParam(DimEnum,2)); 42 else parameters->AddObject(new IntParam(DimEnum,3));38 parameters->AddObject(new IntParam(SolutionTypeEnum,solution_type)); 39 parameters->AddObject(new IntParam(AnalysisTypeEnum,analysis_type)); 40 parameters->AddObject(new IntParam(AnalysisCounterEnum,analysis_counter)); 41 42 parameters->AddObject(new IntParam(DimEnum,iomodel->dim)); 43 43 parameters->AddObject(new BoolParam(IsHutterEnum,iomodel->ishutter)); 44 44 parameters->AddObject(new BoolParam(IsMacAyealPattynEnum,iomodel->ismacayealpattyn)); … … 79 79 parameters->AddObject(new BoolParam(IoGatherEnum,iomodel->io_gather)); 80 80 parameters->AddObject(new IntParam(GroundingLineMigrationEnum,iomodel->gl_migration)); 81 parameters->AddObject(new IntParam(RheologyLawEnum,iomodel->rheology_law)); 81 82 82 83 /*Deal with more complex parameters*/ -
issm/trunk/src/c/objects/Elements/Penta.cpp
r7421 r7848 5095 5095 5096 5096 bool converged; 5097 int i; 5097 int i,rheology_law; 5098 double xyz_list[NUMVERTICES][3]; 5098 5099 double values[numdof]; 5099 5100 double B[numdof]; 5100 double B_average ;5101 double B_average,s_average; 5101 5102 int* doflist=NULL; 5102 5103 … … 5114 5115 } 5115 5116 5117 /*Get all inputs and parameters*/ 5118 GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES); 5119 Input* surface_input=inputs->GetInput(SurfaceEnum); _assert_(surface_input); 5120 5116 5121 this->inputs->GetParameterValue(&converged,ConvergedEnum); 5117 5122 if(converged){ 5118 5123 this->inputs->AddInput(new PentaVertexInput(TemperatureEnum,values)); 5119 5124 5120 /*Update Rheology only if conv reged (we must make sure that the temperature is below melting point5125 /*Update Rheology only if converged (we must make sure that the temperature is below melting point 5121 5126 * otherwise the rheology could be negative*/ 5122 B_average=Paterson((values[0]+values[1]+values[2]+values[3]+values[4]+values[5])/6.0); 5123 for(i=0;i<numdof;i++) B[i]=B_average; 5124 this->matice->inputs->AddInput(new PentaVertexInput(RheologyBEnum,B)); 5127 this->parameters->FindParam(&rheology_law,RheologyLawEnum); 5128 switch(rheology_law){ 5129 case NoneEnum: 5130 /*Do nothing: B is not temperature dependent*/ 5131 break; 5132 case PatersonEnum: 5133 B_average=Paterson((values[0]+values[1]+values[2]+values[3]+values[4]+values[5])/6.0); 5134 for(i=0;i<numdof;i++) B[i]=B_average; 5135 this->matice->inputs->AddInput(new PentaVertexInput(RheologyBEnum,B)); 5136 break; 5137 case ArrheniusEnum: 5138 surface_input->GetParameterAverage(&s_average); 5139 B_average=Arrhenius((values[0]+values[1]+values[2]+values[3]+values[4]+values[5])/6.0, 5140 s_average-((xyz_list[0][2]+xyz_list[1][2]+xyz_list[2][2]+xyz_list[3][2]+xyz_list[4][2]+xyz_list[5][2])/6.0), 5141 matice->GetN()); 5142 for(i=0;i<numdof;i++) B[i]=B_average; 5143 _error_("Not supported yet (See Rutt2009 for example)"); 5144 break; 5145 default: 5146 _error_("Rheology law %s not supported yet",EnumToString(rheology_law)); 5147 5148 } 5125 5149 } 5126 5150 else{ -
issm/trunk/src/c/objects/IoModel.cpp
r7674 r7848 214 214 IoModelFetchData(&this->melting_rate_correction_apply,iomodel_handle,"melting_rate_correction_apply"); 215 215 IoModelFetchData(&this->gl_melting_rate,iomodel_handle,"gl_melting_rate"); 216 IoModelFetchData(&this->rheology_law,iomodel_handle,"rheology_law"); 216 217 217 218 /*qmu: */ … … 225 226 IoModelFetchData(&this->qmu_save_femmodel,iomodel_handle,"qmu_save_femmodel"); 226 227 } 227 228 228 229 229 /*i/o: */ … … 321 321 this->rheology_n=NULL; 322 322 this->rheology_B=NULL; 323 this->rheology_law=0; 323 324 324 325 /*!solution parameters: */ -
issm/trunk/src/c/objects/IoModel.h
r7674 r7848 113 113 double* rheology_B; 114 114 double* rheology_n; 115 int rheology_law; 115 116 116 117 /*numerical parameters: */ -
issm/trunk/src/c/shared/Elements/elements.h
r5989 r7848 12 12 13 13 double Paterson(double temperature); 14 double Arrhenius(double temperature,double depth,double n); 14 15 int GetVerticesCoordinates(double* xyz, Node** nodes, int numvertices); 15 16 int GetNumberOfDofs( Node** nodes,int numnodes,int setenum,int approximation_enum); -
issm/trunk/src/m/classes/model.m
r7676 r7848 139 139 rheology_B=NaN; 140 140 rheology_n=NaN; 141 rheology_law=0; 141 142 142 143 %Geometrical parameters … … 732 733 md.hydro_kn=0; 733 734 735 %Rheology law: what is the temperature dependence of B with T 736 %available: None, Paterson and Arrhenius 737 md.rheology_law=PatersonEnum; 734 738 735 739 %i/o: -
issm/trunk/src/m/enum/EnumToString.m
r7748 r7848 376 376 case OptionLogicalEnum(), string='OptionLogical'; return 377 377 case OptionStructEnum(), string='OptionStruct'; return 378 case RheologyLawEnum(), string='RheologyLaw'; return 379 case PatersonEnum(), string='Paterson'; return 380 case ArrheniusEnum(), string='Arrhenius'; return 378 381 otherwise, error(['Enum ' num2str(enum) ' not found']); 379 382 -
issm/trunk/src/m/enum/StringToEnum.m
r7748 r7848 374 374 elseif (strcmpi(name,'OptionLogical')), enum=OptionLogicalEnum(); return 375 375 elseif (strcmpi(name,'OptionStruct')), enum=OptionStructEnum(); return 376 elseif (strcmpi(name,'RheologyLaw')), enum=RheologyLawEnum(); return 377 elseif (strcmpi(name,'Paterson')), enum=PatersonEnum(); return 378 elseif (strcmpi(name,'Arrhenius')), enum=ArrheniusEnum(); return 376 379 else error(['Enum ' name ' not found']); 377 380 -
issm/trunk/src/m/model/marshall.m
r7674 r7848 104 104 WriteData(fid,md.rheology_B,'Mat','rheology_B'); 105 105 WriteData(fid,md.rheology_n,'Mat','rheology_n'); 106 WriteData(fid,md.rheology_law,'Integer','rheology_law'); 106 107 107 108 %Control methods
Note:
See TracChangeset
for help on using the changeset viewer.