Changeset 5247
- Timestamp:
- 08/13/10 11:05:48 (15 years ago)
- Location:
- issm/trunk/src/c
- Files:
-
- 1 added
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk/src/c/Makefile.am
r5154 r5247 610 610 ./objects/Bamg/VertexOnGeom.cpp\ 611 611 ./objects/Bamg/VertexOnVertex.h\ 612 ./objects/Bamg/VertexOnVertex.cpp\ 612 613 ./objects/Bamg/Mesh.h\ 613 614 ./objects/Bamg/Mesh.cpp\ … … 1092 1093 ./solutions/ResetBoundaryConditions.cpp\ 1093 1094 ./solutions/SolutionConfiguration.cpp\ 1095 ./solutions/CorePointerFromSolutionEnum.cpp\ 1094 1096 ./solvers/solver_linear.cpp\ 1095 1097 ./solvers/solver_adjoint_linear.cpp\ -
issm/trunk/src/c/modules/ModelProcessorx/Control/CreateParametersControl.cpp
r5103 r5247 32 32 parameters->AddObject(new IntParam(ControlTypeEnum,RheologyB2dEnum)); 33 33 } 34 else 35 ISSMERROR("control_type %s not supported yet!",iomodel->control_type); 34 else if (strcmp(iomodel->control_type,"dhdt")==0){ 35 parameters->AddObject(new IntParam(ControlTypeEnum,DhDtEnum)); 36 } 37 else{ 38 ISSMERROR("control_type %s not supported yet!",iomodel->control_type); 39 } 36 40 37 41 /*What solution type?*/ 38 if (solution_type==DiagnosticSolutionEnum){ 39 parameters->AddObject(new BoolParam(ControlSteadyEnum,false)); 40 } 41 else if (solution_type==SteadystateSolutionEnum){ 42 if (solution_type==SteadystateSolutionEnum){ 42 43 parameters->AddObject(new BoolParam(ControlSteadyEnum,true)); 43 44 } 44 45 else{ 45 ISSMERROR("Control for solution of type %s not supported yet",EnumToString(solution_type));46 parameters->AddObject(new BoolParam(ControlSteadyEnum,false)); 46 47 } 47 48 parameters->AddObject(new IntParam(NStepsEnum,iomodel->nsteps)); -
issm/trunk/src/c/solutions/SolutionConfiguration.cpp
r5103 r5247 26 26 void (*solutioncore)(FemModel*)=NULL; 27 27 28 /*Get Core pointer*/ 29 CorePointerFromSolutionEnum(&solutioncore,solutiontype); 30 31 /*Analyses lists*/ 28 32 switch(solutiontype){ 29 33 … … 37 41 analyses[4]=SurfaceSlopeAnalysisEnum; 38 42 analyses[5]=BedSlopeAnalysisEnum; 39 solutioncore=&diagnostic_core;40 43 break; 41 44 … … 51 54 analyses[6]=ThermalAnalysisEnum; 52 55 analyses[7]=MeltingAnalysisEnum; 53 solutioncore=&steadystate_core;54 56 break; 55 57 … … 59 61 analyses[0]=ThermalAnalysisEnum; 60 62 analyses[1]=MeltingAnalysisEnum; 61 solutioncore=&thermal_core;62 63 break; 63 64 … … 66 67 analyses=(int*)xmalloc(numanalyses*sizeof(int)); 67 68 analyses[0]=PrognosticAnalysisEnum; 68 solutioncore=&prognostic_core;69 69 break; 70 70 … … 73 73 analyses=(int*)xmalloc(numanalyses*sizeof(int)); 74 74 analyses[0]=BalancedthicknessAnalysisEnum; 75 solutioncore=&balancedthickness_core;76 75 break; 77 76 … … 80 79 analyses=(int*)xmalloc(numanalyses*sizeof(int)); 81 80 analyses[0]=BalancedvelocitiesAnalysisEnum; 82 solutioncore=&balancedvelocities_core;83 81 break; 84 82 … … 87 85 analyses=(int*)xmalloc(numanalyses*sizeof(int)); 88 86 analyses[0]=SurfaceSlopeAnalysisEnum; 89 solutioncore=&surfaceslope_core;90 87 break; 91 88 … … 94 91 analyses=(int*)xmalloc(numanalyses*sizeof(int)); 95 92 analyses[0]=BedSlopeAnalysisEnum; 96 solutioncore=&bedslope_core;97 93 break; 98 94 … … 107 103 analyses[5]=BedSlopeAnalysisEnum; 108 104 analyses[6]=PrognosticAnalysisEnum; 109 solutioncore=&transient2d_core;110 105 break; 111 106 … … 122 117 analyses[7]=ThermalAnalysisEnum; 123 118 analyses[8]=MeltingAnalysisEnum; 124 solutioncore=&transient3d_core;125 119 break; 126 120 … … 132 126 /*Assign output pointers:*/ 133 127 if(pnumanalyses) *pnumanalyses=numanalyses; 134 if(panalyses) *panalyses=analyses;135 else xfree((void**)&analyses);128 if(panalyses) *panalyses=analyses; 129 else xfree((void**)&analyses); 136 130 if(psolutioncore)*psolutioncore=solutioncore; 137 131 -
issm/trunk/src/c/solutions/balancedvelocities_core.cpp
r4902 r5247 31 31 if(verbose)_printf_("saving results:\n"); 32 32 if(solution_type==BalancedvelocitiesSolutionEnum){ 33 InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,VxEnum); 34 InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,VyEnum); 33 InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,VelEnum); 35 34 } 36 35 -
issm/trunk/src/c/solutions/control_core.cpp
r5103 r5247 19 19 int verbose=0; 20 20 int control_type; 21 bool control_steady;22 21 int nsteps; 23 22 double eps_cm; … … 25 24 bool cm_gradient; 26 25 int dim; 26 int solution_type; 27 27 28 28 double* fit=NULL; … … 37 37 OptPars optpars; 38 38 39 /*Solution core pointer*/ 40 void (*solutioncore)(FemModel*)=NULL; 41 39 42 /*output: */ 40 43 double* J=NULL; 41 42 /*some preliminary work to be done if running full-Stokes analysis: */43 stokescontrolinit(femmodel);44 44 45 45 /*Recover parameters used throughout the solution:{{{1*/ … … 53 53 femmodel->parameters->FindParam(&tolx,TolXEnum); 54 54 femmodel->parameters->FindParam(&cm_gradient,CmGradientEnum); 55 femmodel->parameters->FindParam(&control_steady,ControlSteadyEnum);56 55 femmodel->parameters->FindParam(&dim,DimEnum); 56 femmodel->parameters->FindParam(&solution_type,SolutionTypeEnum); 57 57 /*}}}*/ 58 59 /*out of solution_type, figure out solution core function pointer*/ 60 CorePointerFromSolutionEnum(&solutioncore,solution_type); 61 62 /*some preliminary work to be done if running full-Stokes analysis: */ 63 if (solution_type==SteadystateSolutionEnum || solution_type==DiagnosticSolutionEnum){ 64 stokescontrolinit(femmodel); 65 } 58 66 59 67 /*Initialize misfit: */ … … 70 78 InputUpdateFromConstantx(femmodel->elements,femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters,(int)fit[n],FitEnum); 71 79 72 /*In case we are running a steady state control method, compute new temperature field using new parameter *distribution: */73 if ( control_steady) steadystate_core(femmodel);80 /*In case we are running a steady state control method, compute new temperature field using new parameter distribution: */ 81 if (solution_type==SteadystateSolutionEnum) solutioncore(femmodel); 74 82 75 83 _printf_("%s\n"," computing gradJ..."); … … 99 107 100 108 _printf_("%s\n"," preparing final velocity solution"); 101 if (control_steady) steadystate_core(femmodel); 102 else diagnostic_core(femmodel); 109 solutioncore(femmodel); 103 110 104 111 /*some results not computed by steadystate_core or diagnostic_core: */ -
issm/trunk/src/c/solutions/solutions.h
r4778 r5247 48 48 //solution configuration 49 49 void SolutionConfiguration(int** panalyses,int* pnumanalyses, void (**psolutioncore)(FemModel*),int solutiontype); 50 void CorePointerFromSolutionEnum(void (**psolutioncore)(FemModel*),int solutiontype); 50 51 51 52 #endif
Note:
See TracChangeset
for help on using the changeset viewer.