Changeset 4028
- Timestamp:
- 06/09/10 16:14:35 (15 years ago)
- Location:
- issm/trunk/src
- Files:
-
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk/src/c/EnumDefinitions/EnumDefinitions.h
r4018 r4028 21 21 /*}}}*/ 22 22 /*Analysis types {{{1 */ 23 SolutionTypeEnum, 23 24 AnalysisEnum, 24 25 AnalysisTypeEnum, -
issm/trunk/src/c/modules/ModelProcessorx/CreateDataSets.cpp
r4025 r4028 16 16 17 17 18 void CreateDataSets(DataSet** pelements,DataSet** pnodes, DataSet** pvertices, DataSet** pmaterials, DataSet** pconstraints, DataSet** ploads,Parameters** pparameters,IoModel* iomodel,ConstDataHandle iomodel_handle,int analysis_type,int nummodels,int analysis_counter){18 void CreateDataSets(DataSet** pelements,DataSet** pnodes, DataSet** pvertices, DataSet** pmaterials, DataSet** pconstraints, DataSet** ploads,Parameters** pparameters,IoModel* iomodel,ConstDataHandle iomodel_handle,int solution_type,int analysis_type,int nummodels,int analysis_counter){ 19 19 20 20 bool continuous=true; … … 116 116 117 117 /*Generate objects that are not dependent on any analysis_type: */ 118 CreateParameters(pparameters,iomodel,iomodel_handle, analysis_type);118 CreateParameters(pparameters,iomodel,iomodel_handle,solution_type,analysis_type); 119 119 120 120 /*Sort datasets: */ -
issm/trunk/src/c/modules/ModelProcessorx/CreateParameters.cpp
r4025 r4028 12 12 #include "./ModelProcessorx.h" 13 13 14 void CreateParameters(Parameters** pparameters,IoModel* iomodel,ConstDataHandle iomodel_handle,int analysis_type){14 void CreateParameters(Parameters** pparameters,IoModel* iomodel,ConstDataHandle iomodel_handle,int solution_type,int analysis_type){ 15 15 16 16 int i; … … 31 31 parameters = new Parameters(ParametersEnum); 32 32 33 parameters->AddObject(new IntParam(SolutionTypeEnum,solution_type)); 33 34 if (iomodel->dim==2) parameters->AddObject(new IntParam(DimEnum,2)); 34 35 else parameters->AddObject(new IntParam(DimEnum,3)); 35 36 parameters->AddObject(new StringParam(OutputFileNameEnum,iomodel->outputfilename)); 36 parameters->AddObject(new 37 parameters->AddObject(new 38 parameters->AddObject(new 39 parameters->AddObject(new 37 parameters->AddObject(new BoolParam(IsHutterEnum,iomodel->ishutter)); 38 parameters->AddObject(new BoolParam(IsMacAyealPattynEnum,iomodel->ismacayealpattyn)); 39 parameters->AddObject(new BoolParam(IsStokesEnum,iomodel->isstokes)); 40 parameters->AddObject(new IntParam(VerboseEnum,iomodel->verbose)); 40 41 parameters->AddObject(new DoubleParam(EpsResEnum,iomodel->eps_res)); 41 42 parameters->AddObject(new DoubleParam(EpsRelEnum,iomodel->eps_rel)); 42 43 parameters->AddObject(new DoubleParam(EpsAbsEnum,iomodel->eps_abs)); 43 parameters->AddObject(new 44 parameters->AddObject(new IntParam(MaxNonlinearIterationsEnum,iomodel->max_nonlinear_iterations)); 44 45 parameters->AddObject(new DoubleParam(EpsVelEnum,iomodel->epsvel)); 45 46 parameters->AddObject(new DoubleParam(YtsEnum,iomodel->yts)); … … 48 49 parameters->AddObject(new DoubleParam(PenaltyOffsetEnum,iomodel->penalty_offset)); 49 50 parameters->AddObject(new DoubleParam(SparsityEnum,iomodel->sparsity)); 50 parameters->AddObject(new 51 parameters->AddObject(new 51 parameters->AddObject(new BoolParam(LowmemEnum,iomodel->lowmem)); 52 parameters->AddObject(new IntParam(ConnectivityEnum,iomodel->connectivity)); 52 53 parameters->AddObject(new DoubleParam(BetaEnum,iomodel->beta)); 53 54 parameters->AddObject(new DoubleParam(MeltingPointEnum,iomodel->meltingpoint)); 54 55 parameters->AddObject(new DoubleParam(LatentHeatEnum,iomodel->latentheat)); 55 56 parameters->AddObject(new DoubleParam(HeatCapacityEnum,iomodel->heatcapacity)); 56 parameters->AddObject(new 57 parameters->AddObject(new BoolParam(ArtDiffEnum,iomodel->artdiff)); 57 58 parameters->AddObject(new DoubleParam(PenaltyMeltingEnum,iomodel->penalty_melting)); 58 parameters->AddObject(new 59 parameters->AddObject(new 59 parameters->AddObject(new IntParam(MinThermalConstraintsEnum,iomodel->min_thermal_constraints)); 60 parameters->AddObject(new IntParam(StabilizeConstraintsEnum,iomodel->stabilize_constraints)); 60 61 parameters->AddObject(new DoubleParam(StokesReconditioningEnum,iomodel->stokesreconditioning)); 61 62 parameters->AddObject(new DoubleParam(ViscosityOvershootEnum,iomodel->viscosity_overshoot)); 62 parameters->AddObject(new 63 parameters->AddObject(new BoolParam(WaitOnLockEnum,iomodel->waitonlock)); 63 64 parameters->AddObject(new StringParam(SolverStringEnum,iomodel->solverstring)); 64 parameters->AddObject(new 65 parameters->AddObject(new 65 parameters->AddObject(new IntParam(NumberOfVerticesEnum,iomodel->numberofvertices)); 66 parameters->AddObject(new IntParam(NumberOfElementsEnum,iomodel->numberofelements)); 66 67 67 68 /*Deal with more complex parameters*/ … … 74 75 75 76 DistributeNumDofs(&numberofdofspernode,analysis_type); 76 parameters->AddObject(new 77 parameters->AddObject(new IntParam(NumberOfDofsPerNodeEnum,numberofdofspernode)); 77 78 78 79 IoModelFetchData(&iomodel->riftinfo,&iomodel->numrifts,NULL,iomodel_handle,"riftinfo"); 79 parameters->AddObject(new 80 parameters->AddObject(new IntParam(NumRiftsEnum,iomodel->numrifts)); 80 81 xfree((void**)&iomodel->riftinfo); 81 82 82 parameters->AddObject(new 83 parameters->AddObject(new IntParam(NumOutputEnum,iomodel->numoutput)); 83 84 if(iomodel->numoutput){ 84 85 parameteroutput=(char**)xmalloc(iomodel->numoutput*sizeof(char*)); -
issm/trunk/src/c/modules/ModelProcessorx/ModelProcessorx.h
r4025 r4028 14 14 15 15 /*Creation of fem datasets: general drivers*/ 16 void CreateDataSets(DataSet** pelements,DataSet** pnodes,DataSet** pvertices, DataSet** pmaterials, DataSet** pconstraints, DataSet** ploads,Parameters** pparameters,IoModel* iomodel,ConstDataHandle iomodel_handle,int analysis_type,int nummodels,int analysis_counter);16 void CreateDataSets(DataSet** pelements,DataSet** pnodes,DataSet** pvertices, DataSet** pmaterials, DataSet** pconstraints, DataSet** ploads,Parameters** pparameters,IoModel* iomodel,ConstDataHandle iomodel_handle,int solution_type,int analysis_type,int nummodels,int analysis_counter); 17 17 void CreateElementsVerticesAndMaterials(DataSet** pelements,DataSet** pvertices,DataSet** pmaterials, IoModel* iomodel,ConstDataHandle iomodel_handle,int nummodels); 18 void CreateParameters(Parameters** pparameters,IoModel* iomodel,ConstDataHandle iomodel_handle,int analysis_type);18 void CreateParameters(Parameters** pparameters,IoModel* iomodel,ConstDataHandle iomodel_handle,int solution_type,int analysis_type); 19 19 void CreateParametersControl(Parameters** pparameters,IoModel* iomodel,ConstDataHandle iomodel_handle,int analysis_type); 20 20 void CreateParametersQmu(Parameters** pparameters,IoModel* iomodel,ConstDataHandle iomodel_handle,int analysis_type); -
issm/trunk/src/c/objects/Elements/Tria.cpp
r4021 r4028 880 880 void Tria::CreateKMatrix(Mat Kgg,int analysis_type,int sub_analysis_type){ 881 881 882 /* if debugging mode, check that all pointers exist*/882 /*asserts: {{{2*/ 883 883 ISSMASSERT(this->nodes && this->matice && this->matpar && this->parameters && this->inputs); 884 /*}}}*/ 884 885 885 886 /*Just branch to the correct element stiffness matrix generator, according to the type of analysis we are carrying out: */ -
issm/trunk/src/c/objects/FemModel.cpp
r4009 r4028 20 20 /*Object constructors and destructor*/ 21 21 /*FUNCTION FemModel::constructor {{{1*/ 22 FemModel::FemModel(ConstDataHandle IOMODEL,int * analyses, int nummodels){22 FemModel::FemModel(ConstDataHandle IOMODEL,int in_solution_type,int* analyses, int nummodels){ 23 23 24 24 /*intermediary*/ … … 27 27 int analysis_type; 28 28 29 /*Initialize internal data: */ 29 30 this->nummodels=nummodels; 31 this->solution_type=in_solution_type; 30 32 analysis_counter=nummodels-1; //point to last analysis_type carried out. 31 33 … … 54 56 55 57 _printf_(" create datasets:\n"); 56 CreateDataSets(&elements,&nodes,&vertices,&materials,&constraints,&loads,¶meters,iomodel,IOMODEL, analysis_type,nummodels,i);58 CreateDataSets(&elements,&nodes,&vertices,&materials,&constraints,&loads,¶meters,iomodel,IOMODEL,solution_type,analysis_type,nummodels,i); 57 59 58 60 _printf_(" create degrees of freedom: \n"); -
issm/trunk/src/c/objects/FemModel.h
r4004 r4028 24 24 25 25 int nummodels; 26 int solution_type; 26 27 int* analysis_type_list; //list of analyses this femmodel is going to carry out 27 28 int analysis_counter; //counter into analysis_type_list … … 46 47 47 48 /*constructors, destructors: */ 48 FemModel(ConstDataHandle IOMODEL,int * analyses, int nummodels);49 FemModel(ConstDataHandle IOMODEL,int solution_type,int* analyses, int nummodels); 49 50 ~FemModel(); 50 51 -
issm/trunk/src/c/solutions/diagnostic.cpp
r4021 r4028 39 39 40 40 int analyses[5]={DiagnosticHorizAnalysisEnum,DiagnosticVertAnalysisEnum,DiagnosticStokesAnalysisEnum,DiagnosticHutterAnalysisEnum,SlopeComputeAnalysisEnum}; 41 int solution_type=DiagnosticAnalysisEnum; 41 42 42 43 MODULEBOOT(); … … 66 67 67 68 _printf_("create finite element model, using analyses types statically defined above:\n"); 68 femmodel=new FemModel(fid, analyses,5);69 femmodel=new FemModel(fid,solution_type,analyses,5); 69 70 70 71 /*get parameters: */ -
issm/trunk/src/c/solutions/diagnostic_core.cpp
r4023 r4028 72 72 73 73 //"recondition" pressure computed previously: 74 DuplicateInputx(femmodel,PressureEnum,PressureStokesEnum); ScaleInputx(femmmodel,PressureStokesEnum,1.0/stokesreconditioning); 74 DuplicateInputx(femmodel,PressureEnum,PressureStokesEnum); 75 ScaleInputx(femmmodel,PressureStokesEnum,1.0/stokesreconditioning); 75 76 76 77 if(verbose)_printf_("%s\n"," update boundary conditions for stokes using velocities previously computed..."); 77 GetSolutionFromInputsx( &ug, femmodel->elements,femmodel->nodes, femmodel->vertices,femmodel->loads, femmodel->materials, femmodel->parameters, DiagnosticAnalysisEnum,StokesAnalysisEnum);78 78 ResetBoundaryConditions(femmodel,DiagnosticAnalysisEnum,StokesAnalysisEnum); 79 79 -
issm/trunk/src/m/solutions/jpl/CreateFemModel.m
r4004 r4028 6 6 %----------------------------------------------------------------------- 7 7 8 function m=CreateFEMModel(md, analyses)8 function m=CreateFEMModel(md,solution_type,analysis_types) 9 9 10 10 displaystring(md.verbose,'\n reading data from model %s...',md.name); 11 [m.elements,m.nodes,m.vertices,m.constraints,m.loads,m.materials,m.parameters]=ModelProcessor(md, analyses);11 [m.elements,m.nodes,m.vertices,m.constraints,m.loads,m.materials,m.parameters]=ModelProcessor(md,solution_type,analysis_types); 12 12 13 for i=1:length(analys es),13 for i=1:length(analysis_types), 14 14 15 15 displaystring(md.verbose,'%s',' generating degrees of freedom...'); … … 18 18 19 19 displaystring(md.verbose,'%s',' generating single point constraints...'); 20 [m.nodes,m.yg(i)]=SpcNodes(m.nodes,m.constraints,analys es[i]);20 [m.nodes,m.yg(i)]=SpcNodes(m.nodes,m.constraints,analysis_types[i]); 21 21 22 22 displaystring(md.verbose,'%s',' generating rigid body constraints...'); 23 [m.Rmg(i),m.nodes]=MpcNodes(m.nodes,m.constraints,analys es[i]);23 [m.Rmg(i),m.nodes]=MpcNodes(m.nodes,m.constraints,analysis_types[i]); 24 24 25 25 displaystring(md.verbose,'%s',' generating node sets...'); 26 m.nodesets(i)=BuildNodeSets(m.nodes,analys es[i]);26 m.nodesets(i)=BuildNodeSets(m.nodes,analysis_types[i]); 27 27 28 28 displaystring(md.verbose,'%s',' reducing single point constraints vector...'); -
issm/trunk/src/m/solutions/jpl/diagnostic.m
r4002 r4028 8 8 t1=clock; 9 9 10 analyses=[DiagnosticHorizAnalysisEnum,DiagnosticVertAnalysisEnum,DiagnosticStokesAnalysisEnum,DiagnosticHutterAnalysisEnum,SlopecomputeAnalysisEnum]; 10 solution_type=DiagnosticAnalysisEnum; 11 analysis_types=[DiagnosticHorizAnalysisEnum,DiagnosticVertAnalysisEnum,DiagnosticStokesAnalysisEnum,DiagnosticHutterAnalysisEnum,SlopecomputeAnalysisEnum]; 11 12 12 13 displaystring(md.verbose,'%s',['create fem model']); 13 femmodel=CreateFemModel(md, analyses);14 femmodel=CreateFemModel(md,solution_type,analysis_types); 14 15 15 16 %compute solution
Note:
See TracChangeset
for help on using the changeset viewer.