Changeset 3887
- Timestamp:
- 05/21/10 14:51:20 (15 years ago)
- Location:
- issm/trunk/src
- Files:
-
- 42 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk/src/c/DataSet/DataSet.cpp
r3869 r3887 1126 1126 /*}}}*/ 1127 1127 /*FUNCTION DataSet::Gradj{{{1*/ 1128 void DataSet::Gradj(Vec grad_g,int analysis_type,int sub_analysis_type, char*control_type){1128 void DataSet::Gradj(Vec grad_g,int analysis_type,int sub_analysis_type,int control_type){ 1129 1129 1130 1130 -
issm/trunk/src/c/DataSet/DataSet.h
r3869 r3887 87 87 DataSet* Copy(void); 88 88 void Du(Vec du_g,int analysis_type,int sub_analysis_type); 89 void Gradj(Vec grad_g,int analysis_type,int sub_analysis_type, char*control_type);89 void Gradj(Vec grad_g,int analysis_type,int sub_analysis_type,int control_type); 90 90 void Misfit(double* pJ, int analysis_type,int sub_analysis_type); 91 91 void CostFunction(double* pJ, int analysis_type,int sub_analysis_type); -
issm/trunk/src/c/Gradjx/Gradjx.cpp
r3775 r3887 11 11 12 12 void Gradjx( Vec* pgrad_g, int numberofnodes, DataSet* elements,DataSet* nodes, DataSet* vertices, DataSet* loads, DataSet* materials, Parameters* parameters, 13 int analysis_type,int sub_analysis_type, char*control_type){13 int analysis_type,int sub_analysis_type,int control_type){ 14 14 15 15 /*output: */ -
issm/trunk/src/c/Gradjx/Gradjx.h
r3673 r3887 11 11 /* local prototypes: */ 12 12 void Gradjx( Vec* pgrad_g, int numberofnodes, DataSet* elements,DataSet* nodes, DataSet* vertices, DataSet* loads, DataSet* materials, Parameters* parameters, 13 int analysis_type,int sub_analysis_type, char*control_type);13 int analysis_type,int sub_analysis_type,int control_type); 14 14 15 15 #endif /* _GRADJX_H */ -
issm/trunk/src/c/Qmux/SpawnCoreParallel.cpp
r3775 r3887 92 92 _printf_("qmu iteration: %i\n",counter); 93 93 94 //initialize results:95 results=new DataSet(ResultsEnum);96 97 94 /*Modify core inputs in objects contained in model, to reflect the dakota variables inputs: */ 98 95 model->UpdateFromDakota(variables,variables_descriptors,numvariables,model->GetFormulation(DiagnosticAnalysisEnum,HorizAnalysisEnum)->parameters,qmu_part,qmu_npart); //diagnostic horiz model is the one holding the parameters for Dakota. … … 103 100 if(verbose)_printf_("Starting diagnostic core\n"); 104 101 105 diagnostic_core(results,model);102 results=diagnostic_core(model); 106 103 107 104 } … … 109 106 110 107 if(verbose)_printf_("Starting thermal core\n"); 111 thermal_core(results,model);108 results=thermal_core(model); 112 109 113 110 } … … 115 112 116 113 if(verbose)_printf_("Starting prognostic core\n"); 117 prognostic_core(results,model);114 results=prognostic_core(model); 118 115 119 116 } … … 121 118 122 119 if(verbose)_printf_("Starting transient core\n"); 123 transient_core(results,model);120 results=transient_core(model); 124 121 125 122 } -
issm/trunk/src/c/objects/Elements/Beam.cpp
r3847 r3887 718 718 /*}}}*/ 719 719 /*FUNCTION Beam::Gradj{{{1*/ 720 void Beam::Gradj(Vec, int, int, char*){720 void Beam::Gradj(Vec, int, int,int){ 721 721 ISSMERROR(" not supported yet!"); 722 722 } -
issm/trunk/src/c/objects/Elements/Beam.h
r3869 r3887 85 85 void GetThicknessList(double* thickness_list); 86 86 void Du(Vec, int,int); 87 void Gradj(Vec, int, int, char*);87 void Gradj(Vec, int, int,int); 88 88 void GradjDrag(Vec, int,int ); 89 89 void GradjB(Vec, int,int ); -
issm/trunk/src/c/objects/Elements/Element.h
r3869 r3887 36 36 virtual void GetBedList(double* bed_list)=0; 37 37 virtual void Du(Vec du_g,int analysis_type,int sub_analysis_type)=0; 38 virtual void Gradj(Vec grad_g,int analysis_type,int sub_analysis_type, char*control_type)=0;38 virtual void Gradj(Vec grad_g,int analysis_type,int sub_analysis_type,int control_type)=0; 39 39 virtual void GradjDrag(Vec grad_g,int analysis_type,int sub_analysis_type)=0; 40 40 virtual void GradjB(Vec grad_g,int analysis_type,int sub_analysis_type)=0; -
issm/trunk/src/c/objects/Elements/Penta.cpp
r3877 r3887 4242 4242 /*}}}*/ 4243 4243 /*FUNCTION Penta::Gradj {{{1*/ 4244 void Penta::Gradj(Vec grad_g,int analysis_type,int sub_analysis_type, char*control_type){4244 void Penta::Gradj(Vec grad_g,int analysis_type,int sub_analysis_type,int control_type){ 4245 4245 4246 4246 /*inputs: */ … … 4253 4253 if(onwater)return; 4254 4254 4255 if ( strcmp(control_type,"drag")==0){4255 if (control_type==DragCoefficientEnum){ 4256 4256 GradjDrag( grad_g,analysis_type,sub_analysis_type); 4257 4257 } 4258 else if ( strcmp(control_type,"B")==0){4258 else if (control_type=RheologyBEnum){ 4259 4259 GradjB( grad_g, analysis_type,sub_analysis_type); 4260 4260 } 4261 else ISSMERROR("%s% s","control type not supported yet: ",control_type);4261 else ISSMERROR("%s%i","control type not supported yet: ",control_type); 4262 4262 } 4263 4263 /*}}}*/ -
issm/trunk/src/c/objects/Elements/Penta.h
r3877 r3887 77 77 bool GetOnBed(); 78 78 void Du(Vec du_g,int analysis_type,int sub_analysis_type); 79 void Gradj(Vec grad_g,int analysis_type,int sub_analysis_type, char*control_type);79 void Gradj(Vec grad_g,int analysis_type,int sub_analysis_type,int control_type); 80 80 void GradjDrag(Vec grad_g,int analysis_type,int sub_analysis_type); 81 81 void GradjB(Vec grad_g,int analysis_type,int sub_analysis_type); -
issm/trunk/src/c/objects/Elements/Sing.cpp
r3821 r3887 508 508 /*}}}*/ 509 509 /*FUNCTION Sing::Gradj {{{1*/ 510 void Sing::Gradj(Vec, int, int , char*){510 void Sing::Gradj(Vec, int, int ,int){ 511 511 ISSMERROR(" not supported yet!"); 512 512 } -
issm/trunk/src/c/objects/Elements/Sing.h
r3869 r3887 84 84 void GetThicknessList(double* thickness_list); 85 85 void Du(Vec,int,int); 86 void Gradj(Vec, int, int, char*);86 void Gradj(Vec, int, int,int); 87 87 void GradjDrag(Vec , int,int); 88 88 void GradjB(Vec, int,int); -
issm/trunk/src/c/objects/Elements/Tria.cpp
r3877 r3887 658 658 double dk[NDOF2]; 659 659 double dB[NDOF2]; 660 char* control_type=NULL;660 int control_type; 661 661 double cm_noisedmp; 662 662 … … 700 700 701 701 /*Add Tikhonov regularization term to misfit*/ 702 if ( strcmp(control_type,"drag")==0){702 if (control_type==DragCoefficientEnum){ 703 703 if (shelf){ 704 704 inputs->GetParameterDerivativeValue(&dk[0],&xyz_list[0][0],&gauss_l1l2l3[0],DragCoefficientEnum); … … 707 707 } 708 708 } 709 else if ( strcmp(control_type,"B")==0){709 else if (control_type==RheologyBEnum){ 710 710 inputs->GetParameterDerivativeValue(&dB[0], &xyz_list[0][0], &gauss_l1l2l3[0],RheologyBEnum); 711 711 Jelem+=cm_noisedmp*1/2*(pow(dB[0],2)+pow(dB[1],2))*Jdet*gauss_weight; 712 712 } 713 713 else{ 714 ISSMERROR("%s% s","unsupported control type: ",control_type);714 ISSMERROR("%s%i","unsupported control type: ",control_type); 715 715 } 716 716 … … 721 721 xfree((void**)&third_gauss_area_coord); 722 722 xfree((void**)&gauss_weights); 723 xfree((void**)&control_type);724 723 725 724 /*Return: */ … … 3831 3830 /*}}}*/ 3832 3831 /*FUNCTION Tria::Gradj {{{1*/ 3833 void Tria::Gradj(Vec grad_g,int analysis_type,int sub_analysis_type, char*control_type){3832 void Tria::Gradj(Vec grad_g,int analysis_type,int sub_analysis_type,int control_type){ 3834 3833 3835 3834 /*inputs: */ … … 3842 3841 if(onwater)return; 3843 3842 3844 if ( strcmp(control_type,"drag")==0){3843 if (control_type==DragCoefficientEnum){ 3845 3844 GradjDrag( grad_g,analysis_type,sub_analysis_type); 3846 3845 } 3847 else if ( strcmp(control_type,"B")==0){3846 else if (control_type==RheologyBEnum){ 3848 3847 GradjB( grad_g,analysis_type,sub_analysis_type); 3849 3848 } 3850 else ISSMERROR("%s% s","control type not supported yet: ",control_type);3849 else ISSMERROR("%s%i","control type not supported yet: ",control_type); 3851 3850 } 3852 3851 /*}}}*/ -
issm/trunk/src/c/objects/Elements/Tria.h
r3869 r3887 80 80 void GetJacobian(double* J, double* xyz_list,double* gauss_l1l2l3); 81 81 void Du(Vec du_g,int analysis_type,int sub_analysis_type); 82 void Gradj(Vec grad_g,int analysis_type,int sub_analysis_type, char*control_type);82 void Gradj(Vec grad_g,int analysis_type,int sub_analysis_type,int control_type); 83 83 void GradjDrag(Vec grad_g,int analysis_type,int sub_analysis_type); 84 84 void GradjDragStokes(Vec grad_g,int analysis_type,int sub_analysis_type); -
issm/trunk/src/c/parallel/ControlRestart.cpp
r3751 r3887 39 39 temporary_results->AddObject(result); 40 40 41 result=new Result(temporary_results->Size()+1,0,1,"analysis_type", "diagnostic");41 result=new Result(temporary_results->Size()+1,0,1,"analysis_type",EnumAsString(DiagnosticAnalysisEnum)); 42 42 temporary_results->AddObject(result); 43 43 -
issm/trunk/src/c/parallel/balancedthickness.cpp
r3859 r3887 79 79 model->FindParam(&qmu_analysis,QmuAnalysisEnum); 80 80 81 _printf_("initialize results:\n");82 results=new DataSet(ResultsEnum);83 81 MPI_Barrier(MPI_COMM_WORLD); finish_init=MPI_Wtime(); 84 82 … … 89 87 _printf_("call computational core:\n"); 90 88 MPI_Barrier(MPI_COMM_WORLD); start_core=MPI_Wtime( ); 91 balancedthickness_core(results,model);89 results=balancedthickness_core(model); 92 90 MPI_Barrier(MPI_COMM_WORLD); finish_core=MPI_Wtime( ); 93 91 … … 107 105 } 108 106 109 /*Add analysis_type to results: */110 result=new Result(results->Size()+1,0,1,"analysis_type","balancedthickness");111 results->AddObject(result);112 113 107 _printf_("process results:\n"); 114 108 ProcessResults(&processedresults,results,model,BalancedthicknessAnalysisEnum); -
issm/trunk/src/c/parallel/balancedthickness2.cpp
r3859 r3887 79 79 model->FindParam(&qmu_analysis,QmuAnalysisEnum); 80 80 81 _printf_("initialize results:\n");82 results=new DataSet(ResultsEnum);83 81 MPI_Barrier(MPI_COMM_WORLD); finish_init=MPI_Wtime(); 84 82 … … 89 87 _printf_("call computational core:\n"); 90 88 MPI_Barrier(MPI_COMM_WORLD); start_core=MPI_Wtime( ); 91 balancedthickness2_core(results,model);89 results=balancedthickness2_core(model); 92 90 MPI_Barrier(MPI_COMM_WORLD); finish_core=MPI_Wtime( ); 93 91 … … 107 105 } 108 106 109 /*Add analysis_type to results: */110 result=new Result(results->Size()+1,0,1,"analysis_type","balancedthickness2");111 results->AddObject(result);112 113 107 _printf_("process results:\n"); 114 108 ProcessResults(&processedresults,results,model,Balancedthickness2AnalysisEnum); -
issm/trunk/src/c/parallel/balancedthickness2_core.cpp
r3775 r3887 11 11 #include "../modules.h" 12 12 13 void balancedthickness2_core(DataSet* results,Model* model){13 DataSet* balancedthickness2_core(Model* model){ 14 14 15 15 extern int my_rank; … … 17 17 /*output: */ 18 18 Result* result=NULL; 19 DataSet* results=NULL; 19 20 20 21 /*intermediary: */ … … 35 36 FemModel* fem_p=NULL; 36 37 38 //initialize results: 39 results=new DataSet(ResultsEnum); 37 40 38 41 fem_p=model->GetFormulation(Balancedthickness2AnalysisEnum); … … 68 71 results->AddObject(result); 69 72 73 /*Add analysis_type to results: */ 74 result=new Result(results->Size()+1,0,1,"analysis_type","balancedthickness2"); 75 results->AddObject(result); 76 70 77 /*Free ressources:*/ 71 78 VecFree(&vx_g); 72 79 VecFree(&vy_g); 73 80 VecFree(&h_g); 81 82 /*return: */ 83 return results; 84 74 85 } -
issm/trunk/src/c/parallel/balancedthickness_core.cpp
r3775 r3887 11 11 #include "../modules.h" 12 12 13 void balancedthickness_core(DataSet* results,Model* model){13 DataSet* balancedthickness_core(Model* model){ 14 14 15 15 extern int my_rank; … … 17 17 /*output: */ 18 18 Result* result=NULL; 19 DataSet* results=NULL; 19 20 20 21 /*intermediary: */ … … 33 34 FemModel* fem_p=NULL; 34 35 36 //initialize results: 37 results=new DataSet(ResultsEnum); 35 38 36 39 /*recover fem model: */ … … 58 61 results->AddObject(result); 59 62 63 /*Add analysis_type to results: */ 64 result=new Result(results->Size()+1,0,1,"analysis_type","balancedthickness"); 65 results->AddObject(result); 66 60 67 /*Free ressources:*/ 61 68 VecFree(&u_g); 62 69 VecFree(&h_g); 70 71 /*return: */ 72 return results; 73 63 74 } -
issm/trunk/src/c/parallel/balancedvelocities.cpp
r3859 r3887 35 35 DataSet* processedresults=NULL; 36 36 Result* result=NULL; 37 38 37 Param* param=NULL; 39 38 … … 78 77 model->FindParam(&qmu_analysis,QmuAnalysisEnum); 79 78 80 _printf_("initialize results:\n");81 results=new DataSet(ResultsEnum);82 79 MPI_Barrier(MPI_COMM_WORLD); finish_init=MPI_Wtime(); 83 80 … … 88 85 _printf_("call computational core:\n"); 89 86 MPI_Barrier(MPI_COMM_WORLD); start_core=MPI_Wtime( ); 90 balancedvelocities_core(results,model);87 results=balancedvelocities_core(model); 91 88 MPI_Barrier(MPI_COMM_WORLD); finish_core=MPI_Wtime( ); 92 89 … … 106 103 } 107 104 108 /*Add analysis_type to results: */109 result=new Result(results->Size()+1,0,1,"analysis_type","balancedvelocities");110 results->AddObject(result);111 112 105 _printf_("process results:\n"); 113 106 ProcessResults(&processedresults,results,model,BalancedvelocitiesAnalysisEnum); -
issm/trunk/src/c/parallel/balancedvelocities_core.cpp
r3751 r3887 10 10 #include "../modules.h" 11 11 12 void balancedvelocities_core(DataSet* results,Model* model){12 DataSet* balancedvelocities_core(Model* model){ 13 13 14 14 extern int my_rank; … … 16 16 /*output: */ 17 17 Result* result=NULL; 18 DataSet* results=NULL; 18 19 19 20 /*intermediary: */ … … 32 33 FemModel* fem_p=NULL; 33 34 35 //initialize results: 36 results=new DataSet(ResultsEnum); 34 37 35 38 /*recover fem model: */ … … 57 60 results->AddObject(result); 58 61 62 /*Add analysis_type to results: */ 63 result=new Result(results->Size()+1,0,1,"analysis_type","balancedvelocities"); 64 results->AddObject(result); 65 59 66 /*Free ressources:*/ 60 67 VecFree(&u_g); 61 68 VecFree(&v_g); 69 70 /*return: */ 71 return results; 62 72 } -
issm/trunk/src/c/parallel/control_core.cpp
r3751 r3887 7 7 #include "../EnumDefinitions/EnumDefinitions.h" 8 8 9 void control_core(DataSet* results,Model* model){9 DataSet* control_core(Model* model){ 10 10 11 11 extern int my_rank; … … 15 15 16 16 /*output: */ 17 DataSet* results=NULL; 17 18 Result* result=NULL; 18 19 … … 55 56 int numberofnodes; 56 57 58 //initialize results 59 results=new DataSet(ResultsEnum); 60 57 61 /*Process models*/ 58 62 ControlInitialization(model); … … 91 95 * distribution: */ 92 96 if (control_steady){ 93 steadystate_results=new DataSet(ResultsEnum); 94 steadystate_core(steadystate_results,model); 97 steadystate_results= steadystate_core(model); 95 98 VecFree(&t_g); steadystate_results->FindResult(&t_g,"t_g"); 96 99 delete steadystate_results; … … 99 102 100 103 _printf_("%s\n"," computing gradJ..."); 101 gradjcompute_results=new DataSet(ResultsEnum); 102 gradjcompute_core(gradjcompute_results,model); 104 gradjcompute_results= gradjcompute_core(model); 103 105 gradjcompute_results->FindResult(&grad_g,"grad_g"); 104 106 delete gradjcompute_results; … … 110 112 result=new Result(results->Size()+1,0,1,"grad_g",grad_g); 111 113 results->AddObject(result); 112 114 115 result=new Result(results->Size()+1,0,1,"analysis_type",EnumAsString(analysis_type)); 116 results->AddObject(result); 117 113 118 /*Free ressources: */ 114 119 xfree((void**)&control_type); … … 123 128 VecFree(&m_g); 124 129 xfree((void**)&J); 125 return ;130 return results; 126 131 } 127 132 … … 196 201 if (control_steady){ 197 202 model->UpdateInputsFromVector(param_g,control_type,VertexEnum); 198 steadystate_results=new DataSet(ResultsEnum); 199 steadystate_core(steadystate_results,model); 203 steadystate_results=steadystate_core(model); 200 204 201 205 //extract u_g ,t_g and m_g from steadystate results, and erase diagnostic_results; … … 207 211 else{ 208 212 model->UpdateInputsFromVector(param_g,control_type,VertexEnum); 209 diagnostic_results=new DataSet(ResultsEnum); 210 diagnostic_core(diagnostic_results,model); 213 diagnostic_results=diagnostic_core(model); 211 214 212 215 //extract u_g from diagnostic_results, and erase diagnostic_results; … … 228 231 results->AddObject(result); 229 232 } 233 234 /*Add analysis_type and control_type to results: */ 235 result=new Result(results->Size()+1,0,1,"analysis_type",EnumAsString(analysis_type)); 236 results->AddObject(result); 237 result=new Result(results->Size()+1,0,1,"control_type",EnumAsString(control_type)); 238 results->AddObject(result); 239 230 240 231 241 /*Free ressources: */ … … 242 252 VecFree(&m_g); 243 253 xfree((void**)&J); 254 255 //return: 256 return results; 244 257 } -
issm/trunk/src/c/parallel/diagnostic.cpp
r3859 r3887 26 26 bool qmu_analysis=false; 27 27 bool control_analysis=false; 28 char* control_type=NULL;29 28 30 29 /*Model: */ … … 90 89 model->FindParam(&waitonlock,WaitOnLockEnum); 91 90 92 _printf_("initialize results:\n");93 results=new DataSet(ResultsEnum);94 91 MPI_Barrier(MPI_COMM_WORLD); finish_init=MPI_Wtime(); 95 92 … … 97 94 if(!qmu_analysis){ 98 95 if(!control_analysis){ 99 /*run diagnostic analysis: */96 100 97 _printf_("call computational core:\n"); 101 98 MPI_Barrier(MPI_COMM_WORLD); start_core=MPI_Wtime( ); 102 diagnostic_core(results,model);99 results=diagnostic_core(model); 103 100 MPI_Barrier(MPI_COMM_WORLD); finish_core=MPI_Wtime( ); 104 101 105 /*Add analysis_type to results: */106 result=new Result(results->Size()+1,0,1,"analysis_type","diagnostic");107 results->AddObject(result);108 109 102 _printf_("process results:\n"); 110 103 ProcessResults(&processed_results,results,model,DiagnosticAnalysisEnum); … … 114 107 _printf_("call computational core:\n"); 115 108 MPI_Barrier(MPI_COMM_WORLD); start_core=MPI_Wtime( ); 116 control_core(results,model);109 results=control_core(model); 117 110 MPI_Barrier(MPI_COMM_WORLD); finish_core=MPI_Wtime( ); 118 119 /*Add analysis_type and control_type to results: */120 result=new Result(results->Size()+1,0,1,"analysis_type","diagnostic");121 results->AddObject(result);122 123 model->FindParam(&control_type,ControlTypeEnum);124 result=new Result(results->Size()+1,0,1,"control_type",control_type);125 results->AddObject(result);126 111 127 112 _printf_("process results:\n"); … … 151 136 152 137 /*Free ressources */ 153 xfree((void**)&control_type);154 138 delete model; 155 139 delete results; -
issm/trunk/src/c/parallel/diagnostic_core.cpp
r3855 r3887 11 11 #include "../include/include.h" 12 12 13 void diagnostic_core(DataSet* results,Model* model){13 DataSet* diagnostic_core(Model* model){ 14 14 15 15 extern int my_rank; … … 24 24 25 25 /*output: */ 26 DataSet* results=NULL; 26 27 Result* result=NULL; 27 28 … … 66 67 double* dofset=NULL; 67 68 69 //initialize results 70 results=new DataSet(ResultsEnum); 71 68 72 //first recover parameters common to all solutions 69 73 model->FindParam(&verbose,VerboseEnum); … … 180 184 result=new Result(results->Size()+1,0,1,"p_g",pg); 181 185 results->AddObject(result); 186 result=new Result(results->Size()+1,0,1,"analysis_type",EnumAsString(DiagnosticAnalysisEnum)); 187 results->AddObject(result); 182 188 183 189 /*output if we have rifts: */ … … 199 205 VecFree(&bedslopey); 200 206 207 /*return: */ 208 return results; 201 209 } -
issm/trunk/src/c/parallel/gradjcompute_core.cpp
r3775 r3887 13 13 #endif 14 14 15 void gradjcompute_core(DataSet* results,Model* model){15 DataSet* gradjcompute_core(Model* model){ 16 16 17 17 … … 25 25 int numberofdofspernode; 26 26 char* solverstring=NULL; 27 char* control_type=NULL;27 int control_type; 28 28 29 29 Vec u_g=NULL; … … 45 45 46 46 /*output: */ 47 DataSet* results=NULL; 47 48 Result* result=NULL; 48 49 … … 51 52 int dim=-1; 52 53 int extrude_param=0; 54 55 //initialize results 56 results=new DataSet(ResultsEnum); 53 57 54 58 /*some parameters:*/ … … 100 104 101 105 if(control_steady){ 102 diagnostic_results=new DataSet(ResultsEnum); 103 diagnostic_core(diagnostic_results,model); 106 diagnostic_results= diagnostic_core(model); 104 107 105 108 //extract u_g and add it to input (3d velocity needed by thermal_core) … … 117 120 result=new Result(results->Size()+1,0,1,"grad_g",grad_g); 118 121 results->AddObject(result); 122 result=new Result(results->Size()+1,0,1,"analysis_type",EnumAsString(GradientAnalysisEnum)); 123 results->AddObject(result); 119 124 120 125 /*Free ressources:*/ … … 122 127 VecFree(&grad_g); 123 128 xfree((void**)&solverstring); 124 xfree((void**)&control_type);125 129 xfree((void**)&lambdax); 126 130 xfree((void**)&lambday); -
issm/trunk/src/c/parallel/objectivefunctionC.cpp
r3775 r3887 98 98 else{ 99 99 //We need a 3D velocity!! (vz is required for the next thermal run) 100 diagnostic_results=new DataSet(ResultsEnum); 101 diagnostic_core(diagnostic_results,model); 100 diagnostic_results= diagnostic_core(model); 102 101 103 102 //extract u_g and add it to input (3d velocity needed by thermal_core) -
issm/trunk/src/c/parallel/parallel.h
r3722 r3887 12 12 class FemModel; 13 13 14 void gradjcompute_core(DataSet* results,Model* model); 14 /*cores: */ 15 DataSet* gradjcompute_core(Model* model); 16 DataSet* diagnostic_core(Model* model); 17 DataSet* prognostic_core(Model* model); 18 DataSet* prognostic2_core(Model* model); 19 DataSet* balancedthickness_core(Model* model); 20 DataSet* balancedthickness2_core(Model* model); 21 DataSet* balancedvelocities_core(Model* model); 22 DataSet* slopecompute_core(Model* model); 23 DataSet* control_core(Model* model); 24 DataSet* steadystate_core(Model* model); 25 DataSet* transient_core(Model* model); 26 DataSet* transient_core_2d(Model* model); 27 DataSet* transient_core_3d(Model* model); 28 DataSet* thermal_core(Model* model); 15 29 16 void diagnostic_core(DataSet* results,Model* model); 17 void prognostic_core(DataSet* results,Model* model); 18 void prognostic2_core(DataSet* results,Model* model); 19 void balancedthickness_core(DataSet* results,Model* model); 20 void balancedthickness2_core(DataSet* results,Model* model); 21 void balancedvelocities_core(DataSet* results,Model* model); 22 void slopecompute_core(DataSet* results,Model* model); 23 void control_core(DataSet* results,Model* model); 24 25 void thermal_core(DataSet* results,Model* model); 30 /*computational cores: */ 26 31 void thermal_core_nonlinear(Vec* ptg,double* pmelting_offset,FemModel* fem,int analysis_type,int sub_analysis_type); 27 28 void steadystate_core(DataSet* results,Model* model);29 30 32 void diagnostic_core_nonlinear(Vec* pug,Mat* pK_ff0,Mat* pK_fs0, DataSet* loads, FemModel* fem,int analysis_type,int sub_analysis_type); 31 33 void diagnostic_core_linear(Vec* ppg,FemModel* fem,int analysis_type,int sub_analysis_type); 32 void convergence(int* pconverged, Mat K_ff,Vec p_f,Vec u_f,Vec u_f_old,Parameters* parameters);33 34 void transient_core(DataSet* results,Model* model);35 void transient_core_2d(DataSet* results,Model* model);36 void transient_core_3d(DataSet* results,Model* model);37 38 34 void slope_core(Vec* pslopex,Vec* pslopey,FemModel* fem,int AnalysisEnum); 39 35 36 37 38 39 40 40 //int GradJOrth(WorkspaceParams* workspaceparams); 41 void convergence(int* pconverged, Mat K_ff,Vec p_f,Vec u_f,Vec u_f_old,Parameters* parameters); 41 42 42 43 int GoldenSearch(double* psearch_scalar,double* pJ,double xa, double xb, double tolerance, int maxiter, double fit,double optscal,double (*f)(double*,double,double,FemModel*),FemModel* femmodel); -
issm/trunk/src/c/parallel/prognostic.cpp
r3859 r3887 76 76 model->FindParam(&qmu_analysis,QmuAnalysisEnum); 77 77 78 _printf_("initialize results:\n");79 results=new DataSet(ResultsEnum);80 78 MPI_Barrier(MPI_COMM_WORLD); finish_init=MPI_Wtime(); 81 79 … … 86 84 _printf_("call computational core:\n"); 87 85 MPI_Barrier(MPI_COMM_WORLD); start_core=MPI_Wtime( ); 88 prognostic_core(results,model);86 results=prognostic_core(model); 89 87 MPI_Barrier(MPI_COMM_WORLD); finish_core=MPI_Wtime( ); 90 88 … … 104 102 } 105 103 106 /*Add analysis_type to results: */ 107 result=new Result(results->Size()+1,0,1,"analysis_type","prognostic"); 108 results->AddObject(result); 109 104 110 105 _printf_("process results:\n"); 111 106 ProcessResults(&processedresults,results,model,PrognosticAnalysisEnum); -
issm/trunk/src/c/parallel/prognostic2.cpp
r3859 r3887 77 77 model->FindParam(&numberofnodes,NumberOfNodesEnum); 78 78 79 _printf_("initialize results:\n");80 results=new DataSet(ResultsEnum);81 79 MPI_Barrier(MPI_COMM_WORLD); finish_init=MPI_Wtime(); 82 80 … … 87 85 _printf_("call computational core:\n"); 88 86 MPI_Barrier(MPI_COMM_WORLD); start_core=MPI_Wtime( ); 89 prognostic2_core(results,model);87 results=prognostic2_core(model); 90 88 MPI_Barrier(MPI_COMM_WORLD); finish_core=MPI_Wtime( ); 91 89 … … 105 103 } 106 104 107 /*Add analysis_type to results: */108 result=new Result(results->Size()+1,0,1,"analysis_type","prognostic2");109 results->AddObject(result);110 111 105 _printf_("process results:\n"); 112 106 ProcessResults(&processedresults,results,model,Prognostic2AnalysisEnum); -
issm/trunk/src/c/parallel/prognostic2_core.cpp
r3751 r3887 10 10 #include "../modules.h" 11 11 12 void prognostic2_core(DataSet* results,Model* model){12 DataSet* prognostic2_core(Model* model){ 13 13 14 14 extern int my_rank; … … 16 16 /*output: */ 17 17 Result* result=NULL; 18 DataSet* results=NULL; 18 19 19 20 /*intermediary: */ … … 33 34 /*fem prognostic model: */ 34 35 FemModel* fem_p=NULL; 36 37 //initialize results: 38 results=new DataSet(ResultsEnum); 35 39 36 40 /*recover fem model: */ … … 63 67 VecFree(&vy_g); 64 68 VecFree(&h_g); 69 70 /*Add analysis_type to results: */ 71 result=new Result(results->Size()+1,0,1,"analysis_type",EnumAsString(Prognostic2AnalysisEnum)); 72 results->AddObject(result); 73 74 /*return: */ 75 return results; 76 65 77 } -
issm/trunk/src/c/parallel/prognostic_core.cpp
r3806 r3887 10 10 #include "../modules.h" 11 11 12 void prognostic_core(DataSet* results,Model* model){12 DataSet* prognostic_core(Model* model){ 13 13 14 14 extern int my_rank; 15 15 16 16 /*output: */ 17 DataSet* results=NULL; 17 18 Result* result=NULL; 18 19 … … 26 27 FemModel* fem_p=NULL; 27 28 29 //initialize results 30 results=new DataSet(ResultsEnum); 28 31 29 32 /*recover fem model: */ … … 50 53 results->AddObject(result); 51 54 55 /*Add analysis_type to results: */ 56 result=new Result(results->Size()+1,0,1,"analysis_type",EnumAsString(PrognosticAnalysisEnum)); 57 results->AddObject(result); 58 52 59 /*Free ressources:*/ 53 60 VecFree(&h_g); 61 62 //return: 63 return results; 64 54 65 } -
issm/trunk/src/c/parallel/slopecompute.cpp
r3775 r3887 76 76 model->FindParam(&waitonlock,WaitOnLockEnum); 77 77 78 _printf_("initialize results:\n");79 results=new DataSet(ResultsEnum);80 78 MPI_Barrier(MPI_COMM_WORLD); finish_init=MPI_Wtime(); 81 79 … … 83 81 _printf_("call computational core:\n"); 84 82 MPI_Barrier(MPI_COMM_WORLD); start_core=MPI_Wtime( ); 85 slopecompute_core(results,model);83 results=slopecompute_core(model); 86 84 MPI_Barrier(MPI_COMM_WORLD); finish_core=MPI_Wtime( ); 87 85 88 /*Add analysis_type to results: */89 result=new Result(results->Size()+1,0,1,"analysis_type","slopecompute");90 results->AddObject(result);91 92 86 _printf_("process results:\n"); 93 87 ProcessResults(&processedresults,results,model,SlopecomputeAnalysisEnum); -
issm/trunk/src/c/parallel/slopecompute_core.cpp
r3751 r3887 10 10 #include "../modules.h" 11 11 12 void slopecompute_core(DataSet* results,Model* model){12 DataSet* slopecompute_core(Model* model){ 13 13 14 14 extern int my_rank; 15 15 16 16 /*output: */ 17 DataSet* results=NULL; 17 18 Result* result=NULL; 18 19 … … 29 30 /*fem slopecompute model: */ 30 31 FemModel* fem_sl=NULL; 32 33 //initialize results 34 results=new DataSet(ResultsEnum); 31 35 32 36 /*recover fem model: */ … … 51 55 result=new Result(results->Size()+1,0,1,"sy_g",sy_g); 52 56 results->AddObject(result); 57 result=new Result(results->Size()+1,0,1,"analysis_type",EnumAsString(SlopecomputeAnalysisEnum)); 58 results->AddObject(result); 59 53 60 54 61 /*Free ressources:*/ 55 62 VecFree(&sx_g); 56 63 VecFree(&sy_g); 64 65 //return: 66 return results; 57 67 } -
issm/trunk/src/c/parallel/steadystate.cpp
r3859 r3887 106 106 model->FindParam(&qmu_analysis,QmuAnalysisEnum); 107 107 108 _printf_("initialize results:\n");109 results=new DataSet(ResultsEnum);110 108 MPI_Barrier(MPI_COMM_WORLD); finish_init=MPI_Wtime(); 111 109 … … 117 115 _printf_("call computational core:\n"); 118 116 MPI_Barrier(MPI_COMM_WORLD); start_core=MPI_Wtime( ); 119 steadystate_core(results,model);117 results=steadystate_core(model); 120 118 MPI_Barrier(MPI_COMM_WORLD); finish_core=MPI_Wtime( ); 121 122 /*Add analysis_type to results: */123 result=new Result(results->Size()+1,0,1,"analysis_type","steadystate");124 results->AddObject(result);125 119 126 120 _printf_("process results:\n"); … … 138 132 _printf_("call computational core:\n"); 139 133 MPI_Barrier(MPI_COMM_WORLD); start_core=MPI_Wtime( ); 140 control_core(results,model);134 results=control_core(model); 141 135 MPI_Barrier(MPI_COMM_WORLD); finish_core=MPI_Wtime( ); 142 143 /*Add analysis_type and control_type to results: */144 result=new Result(results->Size()+1,0,1,"analysis_type","steadystate");145 results->AddObject(result);146 147 model->FindParam(&control_type,ControlTypeEnum);148 result=new Result(results->Size()+1,0,1,"control_type",control_type);149 results->AddObject(result);150 136 151 137 _printf_("process results:\n"); -
issm/trunk/src/c/parallel/steadystate_core.cpp
r3751 r3887 10 10 #include "../modules.h" 11 11 12 void steadystate_core(DataSet* results,Model* model){12 DataSet* steadystate_core(Model* model){ 13 13 14 14 extern int my_rank; … … 25 25 /*output: */ 26 26 Result* result=NULL; 27 DataSet* results=NULL; 27 28 DataSet* results_thermal=NULL; 28 29 DataSet* results_diagnostic=NULL; … … 78 79 79 80 //first compute temperature at steady state. 80 results_thermal=new DataSet(ResultsEnum); 81 thermal_core(results_thermal,model); 81 results_thermal=thermal_core(model); 82 82 83 83 //get t_g and m_g; … … 95 95 96 96 //now compute diagnostic velocity using the steady state temperature. 97 results_diagnostic=new DataSet(ResultsEnum); 98 diagnostic_core(results_diagnostic,model); 97 results_diagnostic=diagnostic_core(model); 99 98 100 99 //get p_g and u_g … … 137 136 result=new Result(results->Size()+1,0,1,"m_g",m_g); 138 137 results->AddObject(result); 138 result=new Result(results->Size()+1,0,1,"analysis_type",EnumAsString(SteadyAnalysisEnum)); 139 results->AddObject(result); 140 139 141 140 142 /*Free ressource*/ -
issm/trunk/src/c/parallel/thermal.cpp
r3859 r3887 81 81 model->FindParam(&qmu_analysis,QmuAnalysisEnum); 82 82 83 _printf_("initialize results:\n");84 results=new DataSet(ResultsEnum);85 83 MPI_Barrier(MPI_COMM_WORLD); finish_init=MPI_Wtime(); 86 84 … … 91 89 _printf_("call computational core:\n"); 92 90 MPI_Barrier(MPI_COMM_WORLD); start_core=MPI_Wtime( ); 93 thermal_core(results,model);91 results=thermal_core(model); 94 92 MPI_Barrier(MPI_COMM_WORLD); finish_core=MPI_Wtime( ); 95 93 96 /*Add analysis_type to results: */97 result=new Result(results->Size()+1,0,1,"analysis_type","thermal");98 results->AddObject(result);99 100 94 _printf_("process results:\n"); 101 95 ProcessResults(&processed_results,results,model,ThermalAnalysisEnum); -
issm/trunk/src/c/parallel/thermal_core.cpp
r3881 r3887 10 10 #include "../modules.h" 11 11 12 void thermal_core(DataSet* results,Model* model){12 DataSet* thermal_core(Model* model){ 13 13 14 14 extern int my_rank; … … 20 20 21 21 /*output: */ 22 DataSet* results=NULL; 22 23 Result* result=NULL; 23 24 … … 43 44 int sub_analysis_type; 44 45 double melting_offset; 46 47 //initialize results 48 results=new DataSet(ResultsEnum); 45 49 46 50 /*recover fem models: */ … … 120 124 } 121 125 } 126 /*Add analysis_type to results: */ 127 result=new Result(results->Size()+1,0,1,"analysis_type",EnumAsString(ThermalAnalysisEnum)); 128 results->AddObject(result); 122 129 123 130 /*free ressource*/ … … 125 132 xfree((void**)&m_g); 126 133 xfree((void**)&time); 134 135 //return: 136 return results; 137 127 138 128 139 } -
issm/trunk/src/c/parallel/transient.cpp
r3859 r3887 102 102 model->FindParam(&qmu_analysis,QmuAnalysisEnum); 103 103 104 _printf_("initialize results:\n");105 results=new DataSet(ResultsEnum);106 104 MPI_Barrier(MPI_COMM_WORLD); finish_init=MPI_Wtime(); 107 105 … … 112 110 _printf_("call computational core:\n"); 113 111 MPI_Barrier(MPI_COMM_WORLD); start_core=MPI_Wtime( ); 114 transient_core(results,model);112 results=transient_core(model); 115 113 MPI_Barrier(MPI_COMM_WORLD); finish_core=MPI_Wtime( ); 116 114 117 /*Add analysis_type to results: */118 result=new Result(results->Size()+1,0,1,"analysis_type","transient");119 results->AddObject(result);120 121 115 _printf_("process results:\n"); 122 116 ProcessResults(&processed_results,results,model,TransientAnalysisEnum); -
issm/trunk/src/c/parallel/transient_core.cpp
r3751 r3887 10 10 #include "../modules.h" 11 11 12 void transient_core(DataSet* results,Model* model){ 13 14 extern int my_rank; 12 DataSet* transient_core(Model* model){ 15 13 16 14 int dim=-1; 15 DataSet* results=NULL; 17 16 18 17 //first recover parameters common to all solutions … … 21 20 //branch out 22 21 if(dim==2){ 23 transient_core_2d(results,model);22 results=transient_core_2d(model); 24 23 } 25 24 else if(dim==3){ 26 transient_core_3d(results,model);25 results=transient_core_3d(model); 27 26 } 28 27 else ISSMERROR("%s%i%s"," dimension ",dim," not supported yet!"); -
issm/trunk/src/c/parallel/transient_core_2d.cpp
r3775 r3887 10 10 #include "../modules.h" 11 11 12 void transient_core_2d(DataSet* results,Model* model){12 DataSet* transient_core_2d(Model* model){ 13 13 14 14 extern int my_rank; … … 23 23 24 24 /*output: */ 25 DataSet* results=NULL; 25 26 Result* result=NULL; 26 27 … … 58 59 int dof3[1]={3}; 59 60 61 //initialize results 62 results=new DataSet(ResultsEnum); 63 60 64 /*recover fem models: */ 61 65 fem_dh=model->GetFormulation(DiagnosticAnalysisEnum,HorizAnalysisEnum); … … 86 90 //Deal with velocities. 87 91 _printf_("%s\n","computing new velocity"); 88 diagnostic_results=new DataSet(ResultsEnum); 89 diagnostic_core(diagnostic_results,model); 92 diagnostic_results= diagnostic_core(model); 90 93 91 94 //extract u_g and p_g from diagnostic_results, and erase diagnostic_results; … … 102 105 xfree((void**)&vx); xfree((void**)&vy); 103 106 104 prognostic_results=new DataSet(ResultsEnum); 105 prognostic_core(prognostic_results,model); 107 prognostic_results= prognostic_core(model); 106 108 107 109 //extract h_g prognostic_results, and erase prognostic_results; … … 136 138 } 137 139 140 /*Add analysis_type to results: */ 141 result=new Result(results->Size()+1,0,1,"analysis_type",EnumAsString(TransientAnalysisEnum)); 142 results->AddObject(result); 143 138 144 /*Free ressources:*/ 139 145 VecFree(&u_g); … … 144 150 xfree((void**)&vx); 145 151 xfree((void**)&vy); 152 153 //return: 154 return results; 155 146 156 } -
issm/trunk/src/c/parallel/transient_core_3d.cpp
r3775 r3887 10 10 #include "../modules.h" 11 11 12 void transient_core_3d(DataSet* results,Model* model){12 DataSet* transient_core_3d(Model* model){ 13 13 14 14 extern int my_rank; … … 25 25 26 26 /*output: */ 27 DataSet* results=NULL; 27 28 Result* result=NULL; 28 29 … … 63 64 int dof3[1]={3}; 64 65 66 //initialize results 67 results=new DataSet(ResultsEnum); 68 65 69 /*recover fem models: */ 66 70 fem_dh=model->GetFormulation(DiagnosticAnalysisEnum,HorizAnalysisEnum); … … 107 111 108 112 //Deal with velocities. 109 diagnostic_results=new DataSet(ResultsEnum); 110 diagnostic_core(diagnostic_results,model); 113 diagnostic_results=diagnostic_core(model); 111 114 112 115 //extract u_g and p_g from diagnostic_results, and erase diagnostic_results; … … 124 127 xfree((void**)&vx); xfree((void**)&vy); xfree((void**)&vz); 125 128 126 prognostic_results= new DataSet(ResultsEnum); prognostic_core(prognostic_results,model);129 prognostic_results=prognostic_core(model); 127 130 128 131 //extract h_g prognostic_results, and erase prognostic_results; … … 186 189 } 187 190 191 /*Add analysis_type to results: */ 192 result=new Result(results->Size()+1,0,1,"analysis_type",EnumAsString(TransientAnalysisEnum)); 193 results->AddObject(result); 194 195 188 196 /*Free ressources:*/ 189 197 VecFree(&u_g); … … 197 205 xfree((void**)&vy); 198 206 xfree((void**)&vz); 207 208 //return: 209 return results; 210 199 211 } -
issm/trunk/src/mex/Gradj/Gradj.cpp
r3715 r3887 17 17 DataSet* materials=NULL; 18 18 Parameters* parameters=NULL; 19 char* control_type=NULL;19 int control_type; 20 20 int analysis_type; 21 21 int sub_analysis_type; … … 57 57 delete materials; 58 58 delete parameters; 59 xfree((void**)&control_type);60 59 VecFree(&grad_g); 61 60
Note:
See TracChangeset
for help on using the changeset viewer.