Changeset 9013
- Timestamp:
- 07/16/11 01:38:53 (14 years ago)
- Location:
- issm/trunk/src
- Files:
-
- 1 added
- 12 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk/src/c/EnumDefinitions/EnumDefinitions.h
r9002 r9013 541 541 NpartEnum, 542 542 QmuMassFluxNumProfilesEnum, 543 PartEnum 543 PartEnum, 544 MaxSteadystateIterationsEnum 544 545 }; 545 546 -
issm/trunk/src/c/modules/EnumToStringx/EnumToStringx.cpp
r9002 r9013 483 483 case QmuMassFluxNumProfilesEnum : return "QmuMassFluxNumProfiles"; 484 484 case PartEnum : return "Part"; 485 case MaxSteadystateIterationsEnum : return "MaxSteadystateIterations"; 485 486 default : return "unknown"; 486 487 -
issm/trunk/src/c/modules/ModelProcessorx/CreateParameters.cpp
r9002 r9013 39 39 parameters->AddObject(new DoubleParam(EpsAbsEnum,iomodel->eps_abs)); 40 40 parameters->AddObject(new IntParam(MaxNonlinearIterationsEnum,(IssmInt)iomodel->max_nonlinear_iterations)); 41 parameters->AddObject(new IntParam(MaxSteadystateIterationsEnum,(IssmInt)iomodel->max_steadystate_iterations)); 41 42 parameters->AddObject(new DoubleParam(EpsvelEnum,iomodel->epsvel)); 42 43 parameters->AddObject(new DoubleParam(YtsEnum,iomodel->yts)); -
issm/trunk/src/c/modules/StringToEnumx/StringToEnumx.cpp
r9002 r9013 481 481 else if (strcmp(name,"QmuMassFluxNumProfiles")==0) return QmuMassFluxNumProfilesEnum; 482 482 else if (strcmp(name,"Part")==0) return PartEnum; 483 else if (strcmp(name,"MaxSteadystateIterations")==0) return MaxSteadystateIterationsEnum; 483 484 else _error_("Enum %s not found",name); 484 485 -
issm/trunk/src/c/objects/IoModel.cpp
r8936 r9013 185 185 IoModelFetchData(&this->eps_abs,iomodel_handle,EpsAbsEnum); 186 186 IoModelFetchData(&this->max_nonlinear_iterations,iomodel_handle,MaxNonlinearIterationsEnum); 187 IoModelFetchData(&this->max_steadystate_iterations,iomodel_handle,MaxSteadystateIterationsEnum); 187 188 IoModelFetchData(&this->dt,iomodel_handle,DtEnum); 188 189 IoModelFetchData(&this->ndt,iomodel_handle,NdtEnum); … … 355 356 this->eps_abs=0; 356 357 this->max_nonlinear_iterations=0; 358 this->max_steadystate_iterations=0; 357 359 this->dt=0; 358 360 this->ndt=0; -
issm/trunk/src/c/objects/IoModel.h
r8936 r9013 150 150 double eps_abs; 151 151 double max_nonlinear_iterations; 152 double max_steadystate_iterations; 152 153 double dt,ndt; 153 154 int time_adapt; -
issm/trunk/src/c/solutions/steadystate_core.cpp
r9010 r9013 20 20 int dim; 21 21 int solution_type; 22 int max_ its;22 int max_steadystate_iterations; 23 23 bool control_analysis; 24 24 … … 27 27 femmodel->parameters->FindParam(&control_analysis,ControlAnalysisEnum); 28 28 femmodel->parameters->FindParam(&solution_type,SolutionTypeEnum); 29 femmodel->parameters->FindParam(&max_ its,MaxNonlinearIterationsEnum);29 femmodel->parameters->FindParam(&max_steadystate_iterations,MaxSteadystateIterationsEnum); 30 30 31 31 /*intialize counters: */ … … 44 44 if(steadystateconvergence(femmodel)) break; 45 45 } 46 if(step>max_ its){47 _printf_(VerboseSolution(),"%s%i%s\n"," maximum number of iterations ",max_its," reached");46 if(step>max_steadystate_iterations){ 47 _printf_(VerboseSolution(),"%s%i%s\n"," maximum number steadystate iterations ",max_steadystate_iterations," reached"); 48 48 break; 49 49 } -
issm/trunk/src/m/classes/model.m
r8987 r9013 193 193 eps_abs = {0,true,'Double'}; 194 194 max_nonlinear_iterations = {0,true,'Double'}; 195 max_steadystate_iterations = {0,true,'Double'}; 195 196 sparsity = {0,true,'Double'}; 196 197 connectivity = {0,true,'Integer'}; … … 660 661 %maximum of non-linear iterations. 661 662 md.max_nonlinear_iterations=100; 663 664 %maximum of steady state iterations 665 md.max_steadystate_iterations=100; 662 666 663 667 %sparsity -
issm/trunk/src/m/model/extrude.m
r9002 r9013 224 224 md.surface=project3d(md,'vector',md.surface,'type','node'); 225 225 md.thickness=project3d(md,'vector',md.thickness,'type','node'); 226 md.thickness_coeff=project3d(md,'vector',md.thickness_coeff,'type','node'); 226 227 md.bed=project3d(md,'vector',md.bed,'type','node'); 227 228 md.nodeonboundary=project3d(md,'vector',md.nodeonboundary,'type','node'); -
issm/trunk/src/m/model/partition/AreaAverageOntoPartition.m
r5241 r9013 1 function partvector=AreaAverageOntoPartition(md,vector )1 function partvector=AreaAverageOntoPartition(md,vector,layer) 2 2 %AREAAVERAGEONTOPARTITION compute partition values for a certain vector expressed on the vertices of the mesh. Use area weighted average. 3 3 % 4 4 % Usage: average=AreaAverageOntoPartition(md,vector) 5 % average=AreaAverageOntoPartition(md,vector,layer) %if in 3D, chose which layer is partitioned 5 6 % 6 7 7 %ok, first check that part is Matlab matlab indexed 8 %some checks 9 if md.dim==3, 10 if nargin~=3, 11 error('layer should be provided onto which Area Averaging occurs'); 12 end 13 %save 3D model 14 md3d=md; 15 16 md.elements=md.elements2d; 17 md.x=md.x2d; 18 md.y=md.y2d; 19 md.numberofnodes=md.numberofnodes2d; 20 md.numberofelements=md.numberofelements2d; 21 md.vwgt=[]; 22 md.nodeconnectivity=[]; 23 24 %run connectivity routine 25 md=adjacency(md); 26 27 %finally, project vector: 28 vector=project2d(md3d,vector,layer); 29 md.part=project2d(md3d,md3d.part,layer); 30 end 31 32 %ok, first check that part is Matlab indexed 8 33 part=md.part+1; 34 35 %some check: 36 if md.npart~=max(part), 37 error('AreaAverageOntoPartition error message: ''npart'' should be equal to max(md.part)'); 38 end 9 39 10 40 %initialize output … … 17 47 partvector(i)=sum(weightedvector(pos))/sum(md.vwgt(pos)); 18 48 end 49 50 %in 3D, restore 3D model: 51 if md.dim==3, 52 md=md3d; 53 end -
issm/trunk/src/m/model/partition/partitioner.m
r8298 r9013 30 30 npart=getfieldvalue(options,'npart'); 31 31 recomputeadjacency=getfieldvalue(options,'recomputeadjacency'); 32 33 if(md.dim==3), 34 %partitioning essentially happens in 2D. So partition in 2D, then 35 %extrude the partition vector vertically. 36 md3d=md; %save for later 37 md.elements=md.elements2d; 38 md.x=md.x2d; 39 md.y=md.y2d; 40 md.numberofnodes=md.numberofnodes2d; 41 md.numberofelements=md.numberofelements2d; 42 md.vwgt=[]; 43 md.nodeconnectivity=[]; 44 end 32 45 33 46 %adjacency matrix if needed: … … 87 100 end 88 101 102 %extrude if we are in 3D: 103 if md.dim==3, 104 md=md3d; 105 part=project3d(md,'vector',part','type','node'); 106 end 107 89 108 md.part=part; -
issm/trunk/src/m/model/tres.m
r8430 r9013 85 85 md.temperature=PatchToVec(md.results.SteadystateSolution.Temperature); 86 86 md.basal_melting_rate=PatchToVec(md.results.SteadystateSolution.BasalMeltingRate); 87 87 88 88 if md.control_analysis==1, 89 if control_type==md.control_type90 md.(EnumToModelField(control_type))=PatchToVec(md.results. DiagnosticSolution.(EnumToString(control_type)));89 for control_type=md.control_type 90 md.(EnumToModelField(control_type))=PatchToVec(md.results.SteadystateSolution.(EnumToString(control_type))); 91 91 end 92 92 end
Note:
See TracChangeset
for help on using the changeset viewer.