Changeset 4057
- Timestamp:
- 06/18/10 20:48:42 (15 years ago)
- Location:
- issm/trunk/src/c
- Files:
-
- 64 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk/src/c/EnumDefinitions/EnumAsString.cpp
r4055 r4057 184 184 case SurfaceSlopeYEnum : return "SurfaceSlopeY"; 185 185 case TemperatureEnum : return "Temperature"; 186 case TemperatureOldEnum : return "TemperatureOld"; 186 187 case TemperatureAverageEnum : return "TemperatureAverage"; 187 188 case ThicknessEnum : return "Thickness"; -
issm/trunk/src/c/EnumDefinitions/EnumDefinitions.h
r4055 r4057 213 213 SurfaceSlopeYEnum, 214 214 TemperatureEnum, 215 TemperatureOldEnum, 215 216 TemperatureAverageEnum, 216 217 ThicknessEnum, -
issm/trunk/src/c/EnumDefinitions/StringAsEnum.cpp
r4055 r4057 182 182 else if (strcmp(name,"SurfaceSlopeY")==0) return SurfaceSlopeYEnum; 183 183 else if (strcmp(name,"Temperature")==0) return TemperatureEnum; 184 else if (strcmp(name,"TemperatureOld")==0) return TemperatureOldEnum; 184 185 else if (strcmp(name,"TemperatureAverage")==0) return TemperatureAverageEnum; 185 186 else if (strcmp(name,"Thickness")==0) return ThicknessEnum; -
issm/trunk/src/c/Makefile.am
r4055 r4057 93 93 ./objects/DakotaPlugin.h\ 94 94 ./objects/DakotaPlugin.cpp\ 95 ./objects/Node.h\ 96 ./objects/Node.cpp\ 95 97 ./objects/Vertex.h\ 96 98 ./objects/Vertex.cpp\ 97 99 ./objects/Hook.h\ 98 100 ./objects/Hook.cpp\ 101 ./objects/Patch.h\ 102 ./objects/Patch.cpp\ 99 103 ./objects/DofIndexing.h\ 100 104 ./objects/DofIndexing.cpp\ 101 105 ./objects/IoModel.h\ 102 106 ./objects/IoModel.cpp\ 103 ./objects/Node.h\104 ./objects/Node.cpp\105 107 ./objects/ElementResults/ElementResultLocal.h\ 106 108 ./objects/ElementResults/NodalValuesUnitConversion.cpp\ … … 124 126 ./objects/ExternalResults/IntExternalResult.h\ 125 127 ./objects/ExternalResults/IntExternalResult.cpp\ 128 ./objects/ExternalResults/StringExternalResult.h\ 129 ./objects/ExternalResults/StringExternalResult.cpp\ 126 130 ./objects/ExternalResults/PetscVecExternalResult.h\ 127 131 ./objects/ExternalResults/PetscVecExternalResult.cpp\ … … 220 224 ./shared/Numerics/isnan.h\ 221 225 ./shared/Numerics/isnan.cpp\ 226 ./shared/Numerics/IsInputConverged.cpp\ 222 227 ./shared/Numerics/GaussPoints.h\ 223 228 ./shared/Numerics/cross.cpp\ … … 426 431 ./modules/GetSolutionFromInputsx/GetSolutionFromInputsx.h\ 427 432 ./modules/GetSolutionFromInputsx/GetSolutionFromInputsx.cpp\ 433 ./modules/GetVectorFromInputsx/GetVectorFromInputsx.h\ 434 ./modules/GetVectorFromInputsx/GetVectorFromInputsx.cpp\ 428 435 ./modules/UpdateInputsFromVectorx/UpdateInputsFromVectorx.h\ 429 436 ./modules/UpdateInputsFromVectorx/UpdateInputsFromVectorx.cpp\ … … 617 624 ./objects/Hook.h\ 618 625 ./objects/Hook.cpp\ 626 ./objects/Patch.h\ 627 ./objects/Patch.cpp\ 619 628 ./objects/ElementResults/ElementResultLocal.h\ 620 629 ./objects/ElementResults/NodalValuesUnitConversion.cpp\ … … 638 647 ./objects/ExternalResults/IntExternalResult.h\ 639 648 ./objects/ExternalResults/IntExternalResult.cpp\ 649 ./objects/ExternalResults/StringExternalResult.h\ 650 ./objects/ExternalResults/StringExternalResult.cpp\ 640 651 ./objects/ExternalResults/PetscVecExternalResult.h\ 641 652 ./objects/ExternalResults/PetscVecExternalResult.cpp\ … … 732 743 ./shared/Dofs/DistributeNumDofs.cpp\ 733 744 ./shared/Numerics/numerics.h\ 745 ./shared/Numerics/IsInputConverged.cpp\ 734 746 ./shared/Numerics/GaussPoints.h\ 735 747 ./shared/Numerics/GaussPoints.cpp\ … … 939 951 ./modules/GetSolutionFromInputsx/GetSolutionFromInputsx.h\ 940 952 ./modules/GetSolutionFromInputsx/GetSolutionFromInputsx.cpp\ 953 ./modules/GetVectorFromInputsx/GetVectorFromInputsx.h\ 954 ./modules/GetVectorFromInputsx/GetVectorFromInputsx.cpp\ 941 955 ./modules/UpdateInputsFromVectorx/UpdateInputsFromVectorx.h\ 942 956 ./modules/UpdateInputsFromVectorx/UpdateInputsFromVectorx.cpp\ … … 1029 1043 ./solutions/convergence.cpp\ 1030 1044 ./solutions/thermal_core.cpp\ 1045 ./solutions/thermal_core_step.cpp\ 1031 1046 ./solutions/WriteLockFile.cpp\ 1032 1047 ./solutions/control_core.cpp\ 1033 1048 ./solutions/stokescontrolinit.cpp\ 1034 1049 ./solutions/controlrestart.cpp\ 1050 ./solutions/controlconvergence.cpp\ 1035 1051 ./solutions/objectivefunctionC.cpp\ 1036 1052 ./solutions/gradient_core.cpp\ … … 1048 1064 ./solutions/transient3d_core.cpp\ 1049 1065 ./solutions/steadystate_core.cpp\ 1066 ./solutions/steadystateconvergence.cpp\ 1050 1067 ./solutions/ResetBoundaryConditions.cpp\ 1051 1068 ./solvers/solver_linear.cpp\ … … 1062 1079 bin_PROGRAMS = 1063 1080 else 1064 bin_PROGRAMS = DiagnosticSolution.exe ThermalSolution.exe PrognosticSolution.exe Prognostic2Solution.exe BalancedthicknessSolution.exe Balancedthickness2Solution.exe BalancedvelocitiesSolution.exe Transient2DSolution.exe Transient 23Solution.exe SteadystateSolution.exe SurfaceSlopeSolution.exe BedSlopeSolution.exe1081 bin_PROGRAMS = DiagnosticSolution.exe ThermalSolution.exe PrognosticSolution.exe Prognostic2Solution.exe BalancedthicknessSolution.exe Balancedthickness2Solution.exe BalancedvelocitiesSolution.exe Transient2DSolution.exe Transient3DSolution.exe SteadystateSolution.exe SurfaceSlopeSolution.exe BedSlopeSolution.exe 1065 1082 endif 1066 1083 -
issm/trunk/src/c/modules/GetVectorFromInputsx/GetVectorFromInputsx.cpp
r4055 r4057 12 12 13 13 14 int i; 14 15 Vec vector=NULL; 15 16 … … 39 40 } 40 41 41 void GetVectorFromInputsx( double* pvector, DataSet* elements,DataSet* nodes, DataSet* vertices, DataSet* loads, DataSet* materials, Parameters* parameters, int NameEnum, int TypeEnum){42 void GetVectorFromInputsx( double** pvector, DataSet* elements,DataSet* nodes, DataSet* vertices, DataSet* loads, DataSet* materials, Parameters* parameters, int NameEnum, int TypeEnum){ 42 43 43 44 /*output: */ -
issm/trunk/src/c/modules/GetVectorFromInputsx/GetVectorFromInputsx.h
r4055 r4057 10 10 /* local prototypes: */ 11 11 void GetVectorFromInputsx( Vec* pvector, DataSet* elements,DataSet* nodes, DataSet* vertices,DataSet* loads, DataSet* materials, Parameters* parameters,int NameEnum,int TypeEnum); 12 void GetVectorFromInputsx( double* pvector, DataSet* elements,DataSet* nodes, DataSet* vertices,DataSet* loads, DataSet* materials, Parameters* parameters,int NameEnum,int TypeEnum);12 void GetVectorFromInputsx( double** pvector, DataSet* elements,DataSet* nodes, DataSet* vertices,DataSet* loads, DataSet* materials, Parameters* parameters,int NameEnum,int TypeEnum); 13 13 14 14 #endif /* _GETVECTORFROMINPUTSXX_H */ -
issm/trunk/src/c/modules/InputConvergencex/InputConvergencex.cpp
r4055 r4057 8 8 #include "../../EnumDefinitions/EnumDefinitions.h" 9 9 10 int InputConvergencex(DataSet* elements,DataSet* nodes,DataSet* vertices,DataSet* loads,DataSet* materials,Parameters* parameters,int enums, int num_enums, intcriterionenums, double* criterionvalues,int num_criterionenums){10 int InputConvergencex(DataSet* elements,DataSet* nodes,DataSet* vertices,DataSet* loads,DataSet* materials,Parameters* parameters,int* enums, int num_enums, int* criterionenums, double* criterionvalues,int num_criterionenums){ 11 11 12 12 /*intermediary:*/ … … 17 17 extern int my_rank; 18 18 int rank_allowed; 19 Element* element=NULL; 20 int verbose=0; 19 21 20 22 /*First, configure our datasets: */ … … 24 26 parameters->Configure(elements,loads, nodes,vertices, materials,parameters); 25 27 28 /*retrieve parameters: */ 29 parameters->FindParam(&verbose,VerboseEnum); 30 26 31 /*allocate dynamic memory: */ 27 32 eps=(double*)xmalloc(num_criterionenums*sizeof(double)); … … 29 34 /*Go through elements, and ask them to do the job: */ 30 35 for(i=0;i<elements->Size();i++){ 31 Element*element=(Element*)elements->GetObjectByOffset(i);36 element=(Element*)elements->GetObjectByOffset(i); 32 37 element->InputConvergence(&converged,eps,enums,num_enums,criterionenums,criterionvalues,num_criterionenums); 33 38 if(!converged)break; -
issm/trunk/src/c/modules/InputConvergencex/InputConvergencex.h
r4055 r4057 8 8 9 9 /* local prototypes: */ 10 int InputConvergencex(DataSet* elements,DataSet* nodes,DataSet* vertices,DataSet* loads,DataSet* materials,Parameters* parameters,int enums, int num_enums, intcriterionenums, double* criterionvalues,int num_criterionenums);10 int InputConvergencex(DataSet* elements,DataSet* nodes,DataSet* vertices,DataSet* loads,DataSet* materials,Parameters* parameters,int* enums, int num_enums, int* criterionenums, double* criterionvalues,int num_criterionenums); 11 11 12 12 #endif /* _INPUTCONVERGENCEX_H */ -
issm/trunk/src/c/modules/ModelProcessorx/Balancedthickness/CreateNodesBalancedthickness.cpp
r4025 r4057 13 13 #include "../ModelProcessorx.h" 14 14 15 void CreateNodesBalancedthickness(DataSet** p elements,DataSet** pnodes, DataSet** pvertices, DataSet** pmaterials, IoModel* iomodel,ConstDataHandle iomodel_handle){15 void CreateNodesBalancedthickness(DataSet** pnodes, IoModel* iomodel,ConstDataHandle iomodel_handle){ 16 16 17 17 /*Intermediary*/ -
issm/trunk/src/c/modules/ModelProcessorx/Balancedthickness2/CreateNodesBalancedthickness2.cpp
r4025 r4057 13 13 #include "../ModelProcessorx.h" 14 14 15 void CreateNodesBalancedthickness2(DataSet** p elements,DataSet** pnodes, DataSet** pvertices,DataSet** pmaterials, IoModel* iomodel,ConstDataHandle iomodel_handle){15 void CreateNodesBalancedthickness2(DataSet** pnodes, IoModel* iomodel,ConstDataHandle iomodel_handle){ 16 16 17 17 /*Intermediary*/ -
issm/trunk/src/c/modules/ModelProcessorx/Balancedvelocities/CreateNodesBalancedvelocities.cpp
r4025 r4057 13 13 #include "../ModelProcessorx.h" 14 14 15 void CreateNodesBalancedvelocities(DataSet** p elements,DataSet** pnodes, DataSet** pvertices,DataSet** pmaterials, IoModel* iomodel,ConstDataHandle iomodel_handle){15 void CreateNodesBalancedvelocities(DataSet** pnodes, IoModel* iomodel,ConstDataHandle iomodel_handle){ 16 16 17 17 /*Intermediary*/ -
issm/trunk/src/c/modules/ModelProcessorx/DiagnosticHutter/CreateNodesDiagnosticHutter.cpp
r4025 r4057 13 13 #include "../ModelProcessorx.h" 14 14 15 void CreateNodesDiagnosticHutter(DataSet** p elements,DataSet** pnodes, DataSet** pvertices,DataSet** pmaterials, IoModel* iomodel,ConstDataHandle iomodel_handle){15 void CreateNodesDiagnosticHutter(DataSet** pnodes, IoModel* iomodel,ConstDataHandle iomodel_handle){ 16 16 17 17 /*Intermediary*/ -
issm/trunk/src/c/modules/ModelProcessorx/DiagnosticStokes/CreateNodesDiagnosticStokes.cpp
r4025 r4057 13 13 #include "../ModelProcessorx.h" 14 14 15 void CreateNodesDiagnosticStokes(DataSet** p elements,DataSet** pnodes, DataSet** pvertices,DataSet** pmaterials, IoModel* iomodel,ConstDataHandle iomodel_handle){15 void CreateNodesDiagnosticStokes(DataSet** pnodes, IoModel* iomodel,ConstDataHandle iomodel_handle){ 16 16 17 17 /*Intermediary*/ -
issm/trunk/src/c/modules/ModelProcessorx/DiagnosticStokes/UpdateElementsDiagnosticStokes.cpp
r4025 r4057 1 1 /* 2 * UpdateElementsDiagnostic Horiz:2 * UpdateElementsDiagnosticStokes: 3 3 */ 4 4 … … 13 13 #include "../ModelProcessorx.h" 14 14 15 void UpdateElementsDiagnostic Horiz(DataSet* elements, IoModel* iomodel,ConstDataHandle iomodel_handle,int analysis_counter,int analysis_type){15 void UpdateElementsDiagnosticStokes(DataSet* elements, IoModel* iomodel,ConstDataHandle iomodel_handle,int analysis_counter,int analysis_type){ 16 16 17 17 /*Intermediary*/ -
issm/trunk/src/c/modules/ModelProcessorx/DiagnosticVert/CreateNodesDiagnosticVert.cpp
r4025 r4057 13 13 #include "../ModelProcessorx.h" 14 14 15 void CreateNodesDiagnosticVert(DataSet** p elements,DataSet** pnodes, DataSet** pvertices,DataSet** pmaterials, IoModel* iomodel,ConstDataHandle iomodel_handle){15 void CreateNodesDiagnosticVert(DataSet** pnodes, IoModel* iomodel,ConstDataHandle iomodel_handle){ 16 16 17 17 /*Intermediary*/ -
issm/trunk/src/c/modules/ModelProcessorx/Melting/CreateNodesMelting.cpp
r4025 r4057 13 13 #include "../ModelProcessorx.h" 14 14 15 void CreateNodesMelting(DataSet** p elements,DataSet** pnodes, DataSet** pvertices,DataSet** pmaterials, IoModel* iomodel,ConstDataHandle iomodel_handle){15 void CreateNodesMelting(DataSet** pnodes, IoModel* iomodel,ConstDataHandle iomodel_handle){ 16 16 17 17 /*Intermediary*/ -
issm/trunk/src/c/modules/ModelProcessorx/Prognostic/CreateNodesPrognostic.cpp
r4025 r4057 13 13 #include "../ModelProcessorx.h" 14 14 15 void CreateNodesPrognostic(DataSet** p elements,DataSet** pnodes, DataSet** pvertices,DataSet** pmaterials, IoModel* iomodel,ConstDataHandle iomodel_handle){15 void CreateNodesPrognostic(DataSet** pnodes, IoModel* iomodel,ConstDataHandle iomodel_handle){ 16 16 17 17 /*Intermediary*/ -
issm/trunk/src/c/modules/ModelProcessorx/Prognostic2/CreateNodesPrognostic2.cpp
r4025 r4057 13 13 #include "../ModelProcessorx.h" 14 14 15 void CreateNodesPrognostic2(DataSet** p elements,DataSet** pnodes, DataSet** pvertices,DataSet** pmaterials, IoModel* iomodel,ConstDataHandle iomodel_handle){15 void CreateNodesPrognostic2(DataSet** pnodes, IoModel* iomodel,ConstDataHandle iomodel_handle){ 16 16 17 17 /*Intermediary*/ -
issm/trunk/src/c/modules/ModelProcessorx/SlopeCompute/CreateNodesSlopeCompute.cpp
r4055 r4057 13 13 #include "../ModelProcessorx.h" 14 14 15 void CreateNodesSlopeCompute(DataSet** p elements,DataSet** pnodes, DataSet** pvertices,DataSet** pmaterials, IoModel* iomodel,ConstDataHandle iomodel_handle){15 void CreateNodesSlopeCompute(DataSet** pnodes, IoModel* iomodel,ConstDataHandle iomodel_handle){ 16 16 17 17 /*Intermediary*/ -
issm/trunk/src/c/modules/ModelProcessorx/Thermal/CreateNodesThermal.cpp
r4025 r4057 13 13 #include "../ModelProcessorx.h" 14 14 15 void CreateNodesThermal(DataSet** p elements,DataSet** pnodes, DataSet** pvertices,DataSet** pmaterials, IoModel* iomodel,ConstDataHandle iomodel_handle){15 void CreateNodesThermal(DataSet** pnodes, IoModel* iomodel,ConstDataHandle iomodel_handle){ 16 16 17 17 /*Intermediary*/ -
issm/trunk/src/c/modules/PenaltySystemMatricesx/PenaltySystemMatricesx.h
r3913 r4057 10 10 11 11 /* local prototypes: */ 12 void PenaltySystemMatricesx(Mat Kgg, Vec pg,double* pkmax, DataSet* elements,DataSet* nodes, DataSet* vertices,DataSet* loads,DataSet* materials, Parameters* parameters, 13 int kflag,int pflag,int analysis_type,int sub_analysis_type); 12 void PenaltySystemMatricesx(Mat Kgg, Vec pg,double* pkmax, DataSet* elements,DataSet* nodes, DataSet* vertices,DataSet* loads,DataSet* materials, Parameters* parameters, int kflag,int pflag); 14 13 15 14 #endif /* _PENALTYSYSTEMMATRICESX_H */ -
issm/trunk/src/c/modules/Qmux/SpawnCoreParallel.cpp
r4043 r4057 111 111 112 112 } 113 else if(solution_type==Transient AnalysisEnum){113 else if(solution_type==Transient2DAnalysisEnum){ 114 114 115 115 if(verbose)_printf_("Starting transient core\n"); 116 transient_core(femmodel); 116 transient2d_core(femmodel); 117 118 } 119 else if(solution_type==Transient3DAnalysisEnum){ 120 121 if(verbose)_printf_("Starting transient core\n"); 122 transient3d_core(femmodel); 117 123 118 124 } -
issm/trunk/src/c/modules/SystemMatricesx/SystemMatricesx.h
r3913 r4057 10 10 11 11 /* local prototypes: */ 12 void SystemMatricesx(Mat* pKgg, Vec* ppg,DataSet* elements,DataSet* nodes, DataSet* vertices,DataSet* loads,DataSet* materials, Parameters* parameters, 13 int kflag,int pflag,int analysis_type,int sub_analysis_type); 12 void SystemMatricesx(Mat* pKgg, Vec* ppg,DataSet* elements,DataSet* nodes, DataSet* vertices,DataSet* loads,DataSet* materials, Parameters* parameters, int kflag,int pflag); 14 13 15 14 #endif /* _SYSTEMMATRICESX_H */ -
issm/trunk/src/c/modules/UpdateGeometryx/UpdateGeometryx.cpp
r4055 r4057 4 4 5 5 #include "./UpdateGeometryx.h" 6 7 #include "../../shared/shared.h" 6 #include "../modules.h" 8 7 #include "../../include/include.h" 9 8 #include "../../toolkits/toolkits.h" … … 19 18 Vec vec_newthickness=NULL; 20 19 Vec vec_bed=NULL; 21 Vec vec_surface=NULL :20 Vec vec_surface=NULL; 22 21 double* newthickness=NULL; 23 22 double* bed=NULL; … … 25 24 26 25 /*objects: */ 27 Vertex* vertex=NULL;26 Node* node=NULL; 28 27 Object* object=NULL; 29 28 Matpar* matpar=NULL; … … 62 61 rho_water=matpar->GetRhoWater(); 63 62 64 /*Go through vertices and for each vertex, update the thickness, bed and surface, using the63 /*Go through nodes and for each node, update the thickness, bed and surface, using the 65 64 * new thickness computed in the prognostic_core part of the transient solution sequence: */ 66 65 67 for(i=0;i< vertices->Size();i++){66 for(i=0;i<nodes->Size();i++){ 68 67 69 68 /*get i'th node: */ 70 vertex=(Vertex*)vertices->GetObjectByOffset(i);69 node=(Node*)vertices->GetObjectByOffset(i); 71 70 72 /*first, recover thickness, surface and bed for this vertex: */73 dof= vertex->GetDofList1();71 /*first, recover thickness, surface and bed for this node: */ 72 dof=node->GetDofList1(); 74 73 h=newthickness[dof]; 75 74 s=surface[dof]; … … 80 79 81 80 //For grids on ice sheet, the new bed remains the same, the new surface becomes bed+new_thickness. 82 if ( vertex->IsOnSheet()){81 if (node->IsOnSheet()){ 83 82 s=b+h; 84 83 } 85 84 86 85 //For grids on ice shelt, we have hydrostatic equilibrium (for now) 87 if ( vertex->IsOnShelf()){86 if (node->IsOnShelf()){ 88 87 b=-rho_ice/rho_water*h; 89 88 s=(1-rho_ice/rho_water)*h; -
issm/trunk/src/c/modules/UpdateVertexPositionsx/UpdateVertexPositionsx.cpp
r3969 r4057 4 4 5 5 #include "./UpdateVertexPositionsx.h" 6 6 #include "../modules.h" 7 7 #include "../../shared/shared.h" 8 8 #include "../../include/include.h" … … 10 10 #include "../../EnumDefinitions/EnumDefinitions.h" 11 11 12 void UpdateVertexPositionsx( DataSet* vertices, Vec thickness,Vec bed){12 int UpdateVertexPositionsx(DataSet* elements,DataSet* nodes,DataSet* vertices,DataSet* loads,DataSet* materials,Parameters* parameters){ 13 13 14 /*intermediary: */15 14 int i; 16 15 Vertex* vertex=NULL; 17 double* thickness _serial=NULL;18 double* bed _serial=NULL;16 double* thickness=NULL; 17 double* bed=NULL; 19 18 20 /*serialize inputs: */ 21 VecToMPISerial(&thickness_serial,thickness); 22 VecToMPISerial(&bed_serial,bed); 23 19 /*First, get elements and loads configured: */ 20 elements-> Configure(elements,loads, nodes,vertices, materials,parameters); 21 nodes-> Configure(elements,loads, nodes,vertices, materials,parameters); 22 parameters->Configure(elements,loads, nodes,vertices, materials,parameters); 23 24 25 /*get vertex vectors for bed and thickness: */ 26 GetVectorFromInputsx( &thickness,elements,nodes, vertices, loads, materials, parameters, ThicknessEnum,VertexEnum); 27 GetVectorFromInputsx( &thickness,elements,nodes, vertices, loads, materials, parameters, BedEnum,VertexEnum); 28 24 29 /*Update verices new geometry: */ 25 30 for (i=0;i<vertices->Size();i++){ 26 31 vertex=(Vertex*)vertices->GetObjectByOffset(i); 27 vertex->UpdatePosition(thickness _serial,bed_serial);32 vertex->UpdatePosition(thickness,bed); 28 33 } 29 34 30 35 /*Free ressources:*/ 31 xfree((void**)&thickness _serial);32 xfree((void**)&bed _serial);36 xfree((void**)&thickness); 37 xfree((void**)&bed); 33 38 } -
issm/trunk/src/c/modules/UpdateVertexPositionsx/UpdateVertexPositionsx.h
r3913 r4057 9 9 10 10 /* local prototypes: */ 11 void UpdateVertexPositionsx( DataSet* vertices, Vec thickness,Vec bed);11 int UpdateVertexPositionsx(DataSet* elements,DataSet* nodes,DataSet* vertices,DataSet* loads,DataSet* materials,Parameters* parameters); 12 12 13 13 #endif /* _UPDATEVERTEXPOSITIONSXX_H */ -
issm/trunk/src/c/objects/Elements/Beam.cpp
r4055 r4057 64 64 65 65 return beam; 66 } 67 /*}}}*/ 68 /*FUNCTION Beam::Configure {{{1*/ 69 void Beam::Configure(DataSet* elementsin,DataSet* loadsin, DataSet* nodesin, DataSet* materialsin, Parameters* parametersin){ 70 71 ISSMERROR(" not supported yet!"); 72 66 73 } 67 74 /*}}}*/ … … 1056 1063 /*}}}*/ 1057 1064 /*FUNCTION Beam::InputConvergence(int* pconverged, double* eps, int* enums,int num_enums,int* criterionenums,double* criterionvalues,int num_criterionenums){{{1*/ 1058 void Beam::InputConvergence(int* pconverged,double* eps, int* enums,int num_enums,int* criterionenums,double* criterionvalues,int num_criterionenums){a 1059 1065 void Beam::InputConvergence(int* pconverged,double* eps, int* enums,int num_enums,int* criterionenums,double* criterionvalues,int num_criterionenums){ 1066 1067 int i; 1060 1068 Input** new_inputs=NULL; 1061 1069 Input** old_inputs=NULL; … … 1066 1074 1067 1075 for(i=0;i<num_enums/2;i++){ 1068 new_inputs[i]=(Input*)this->inputs->GetInput( new_enums[2*i+0]);1069 old_inputs[i]=(Input*)this->inputs->GetInput( old_enums[2*i+1]);1070 if(!new_inputs[i])ISSMERROR("%s%s"," could not find input with enum ",EnumAsString( new_enums[2*i+0]));1071 if(!old_inputs[i])ISSMERROR("%s%s"," could not find input with enum ",EnumAsString( old_enums[2*i+0]));1076 new_inputs[i]=(Input*)this->inputs->GetInput(enums[2*i+0]); 1077 old_inputs[i]=(Input*)this->inputs->GetInput(enums[2*i+1]); 1078 if(!new_inputs[i])ISSMERROR("%s%s"," could not find input with enum ",EnumAsString(enums[2*i+0])); 1079 if(!old_inputs[i])ISSMERROR("%s%s"," could not find input with enum ",EnumAsString(enums[2*i+0])); 1072 1080 } 1073 1081 1074 1082 /*ok, we've got the inputs (new and old), now loop throught the number of criterions and fill the eps array:*/ 1075 1083 for(i=0;i<num_criterionenums;i++){ 1076 IsInputConverged(eps+i,new_inputs,old_inputs,num_enums/2, ,criterionenums[i]);1084 IsInputConverged(eps+i,new_inputs,old_inputs,num_enums/2,criterionenums[i]); 1077 1085 if(eps[i]>criterionvalues[i]) converged=0; 1078 1086 } -
issm/trunk/src/c/objects/Elements/Beam.h
r4055 r4057 98 98 void AXPYInput(int YEnum, double scalar, int XEnum); 99 99 void ControlConstrainInput(int control_type,double cm_min, double cm_max); 100 void InputConvergence(int* enums,int num_enums,int* criterionenums,double* criterionvalues,int num_criterionenums);100 void InputConvergence(int* pconverged,double* eps, int* enums,int num_enums,int* criterionenums,double* criterionvalues,int num_criterionenums); 101 101 102 102 /*}}}*/ -
issm/trunk/src/c/objects/Elements/Element.h
r4055 r4057 69 69 virtual void AXPYInput(int YEnum, double scalar, int XEnum)=0; 70 70 virtual void ControlConstrainInput(int control_type,double cm_min, double cm_max)=0; 71 virtual void InputConvergence(int* pconverged, double* eps, int* enums,int num_enums,int* criterionenums,double criterionvalues,double* criterionvalues,int num_criterionenums)=0;71 virtual void InputConvergence(int* pconverged,double* eps, int* enums,int num_enums,int* criterionenums,double* criterionvalues,int num_criterionenums)=0; 72 72 73 73 /*Implementation: */ -
issm/trunk/src/c/objects/Elements/Penta.cpp
r4055 r4057 5316 5316 /*}}}*/ 5317 5317 /*FUNCTION Penta::InputConvergence(int* pconverged, double* eps, int* enums,int num_enums,int* criterionenums,double* criterionvalues,int num_criterionenums){{{1*/ 5318 void Penta::InputConvergence(int* pconverged,double* eps, int* enums,int num_enums,int* criterionenums,double* criterionvalues,int num_criterionenums){a 5319 5318 void Penta::InputConvergence(int* pconverged,double* eps, int* enums,int num_enums,int* criterionenums,double* criterionvalues,int num_criterionenums){ 5319 5320 int i; 5320 5321 Input** new_inputs=NULL; 5321 5322 Input** old_inputs=NULL; … … 5326 5327 5327 5328 for(i=0;i<num_enums/2;i++){ 5328 new_inputs[i]=(Input*)this->inputs->GetInput( new_enums[2*i+0]);5329 old_inputs[i]=(Input*)this->inputs->GetInput( old_enums[2*i+1]);5330 if(!new_inputs[i])ISSMERROR("%s%s"," could not find input with enum ",EnumAsString( new_enums[2*i+0]));5331 if(!old_inputs[i])ISSMERROR("%s%s"," could not find input with enum ",EnumAsString( old_enums[2*i+0]));5329 new_inputs[i]=(Input*)this->inputs->GetInput(enums[2*i+0]); 5330 old_inputs[i]=(Input*)this->inputs->GetInput(enums[2*i+1]); 5331 if(!new_inputs[i])ISSMERROR("%s%s"," could not find input with enum ",EnumAsString(enums[2*i+0])); 5332 if(!old_inputs[i])ISSMERROR("%s%s"," could not find input with enum ",EnumAsString(enums[2*i+0])); 5332 5333 } 5333 5334 5334 5335 /*ok, we've got the inputs (new and old), now loop throught the number of criterions and fill the eps array:*/ 5335 5336 for(i=0;i<num_criterionenums;i++){ 5336 IsInputConverged(eps+i,new_inputs,old_inputs,num_enums/2, ,criterionenums[i]);5337 IsInputConverged(eps+i,new_inputs,old_inputs,num_enums/2,criterionenums[i]); 5337 5338 if(eps[i]>criterionvalues[i]) converged=0; 5338 5339 } -
issm/trunk/src/c/objects/Elements/Penta.h
r4055 r4057 165 165 void AXPYInput(int YEnum, double scalar, int XEnum); 166 166 void ControlConstrainInput(int control_type,double cm_min, double cm_max); 167 void InputConvergence(int* enums,int num_enums,int* criterionenums,double* criterionvalues,int num_criterionenums);167 void InputConvergence(int* pconverged,double* eps, int* enums,int num_enums,int* criterionenums,double* criterionvalues,int num_criterionenums); 168 168 void GetVectorFromInputs(Vec vector,int NameEnum); 169 169 -
issm/trunk/src/c/objects/Elements/Sing.cpp
r4055 r4057 762 762 /*}}}*/ 763 763 /*FUNCTION Sing::InputConvergence(int* pconverged, double* eps, int* enums,int num_enums,int* criterionenums,double* criterionvalues,int num_criterionenums){{{1*/ 764 void Sing::InputConvergence(int* pconverged,double* eps, int* enums,int num_enums,int* criterionenums,double* criterionvalues,int num_criterionenums){a 765 764 void Sing::InputConvergence(int* pconverged,double* eps, int* enums,int num_enums,int* criterionenums,double* criterionvalues,int num_criterionenums){ 765 766 int i; 766 767 Input** new_inputs=NULL; 767 768 Input** old_inputs=NULL; … … 772 773 773 774 for(i=0;i<num_enums/2;i++){ 774 new_inputs[i]=(Input*)this->inputs->GetInput( new_enums[2*i+0]);775 old_inputs[i]=(Input*)this->inputs->GetInput( old_enums[2*i+1]);776 if(!new_inputs[i])ISSMERROR("%s%s"," could not find input with enum ",EnumAsString( new_enums[2*i+0]));777 if(!old_inputs[i])ISSMERROR("%s%s"," could not find input with enum ",EnumAsString( old_enums[2*i+0]));775 new_inputs[i]=(Input*)this->inputs->GetInput(enums[2*i+0]); 776 old_inputs[i]=(Input*)this->inputs->GetInput(enums[2*i+1]); 777 if(!new_inputs[i])ISSMERROR("%s%s"," could not find input with enum ",EnumAsString(enums[2*i+0])); 778 if(!old_inputs[i])ISSMERROR("%s%s"," could not find input with enum ",EnumAsString(enums[2*i+0])); 778 779 } 779 780 780 781 /*ok, we've got the inputs (new and old), now loop throught the number of criterions and fill the eps array:*/ 781 782 for(i=0;i<num_criterionenums;i++){ 782 IsInputConverged(eps+i,new_inputs,old_inputs,num_enums/2, ,criterionenums[i]);783 IsInputConverged(eps+i,new_inputs,old_inputs,num_enums/2,criterionenums[i]); 783 784 if(eps[i]>criterionvalues[i]) converged=0; 784 785 } -
issm/trunk/src/c/objects/Elements/Sing.h
r4055 r4057 96 96 void ScaleInput(int enum_type,double scale_factor); 97 97 void AXPYInput(int YEnum, double scalar, int XEnum); 98 void InputConvergence(int* enums,int num_enums,int* criterionenums,double* criterionvalues,int num_criterionenums);98 void InputConvergence(int* pconverged,double* eps, int* enums,int num_enums,int* criterionenums,double* criterionvalues,int num_criterionenums); 99 99 void ControlConstrainInput(int control_type,double cm_min, double cm_max); 100 100 -
issm/trunk/src/c/objects/Elements/Tria.cpp
r4055 r4057 5495 5495 /*}}}*/ 5496 5496 /*FUNCTION Tria::InputConvergence(int* pconverged, double* eps, int* enums,int num_enums,int* criterionenums,double* criterionvalues,int num_criterionenums){{{1*/ 5497 void Tria::InputConvergence(int* pconverged,double* eps, int* enums,int num_enums,int* criterionenums,double* criterionvalues,int num_criterionenums){a 5498 5497 void Tria::InputConvergence(int* pconverged,double* eps, int* enums,int num_enums,int* criterionenums,double* criterionvalues,int num_criterionenums){ 5498 5499 int i; 5499 5500 Input** new_inputs=NULL; 5500 5501 Input** old_inputs=NULL; … … 5505 5506 5506 5507 for(i=0;i<num_enums/2;i++){ 5507 new_inputs[i]=(Input*)this->inputs->GetInput( new_enums[2*i+0]);5508 old_inputs[i]=(Input*)this->inputs->GetInput( old_enums[2*i+1]);5509 if(!new_inputs[i])ISSMERROR("%s%s"," could not find input with enum ",EnumAsString( new_enums[2*i+0]));5510 if(!old_inputs[i])ISSMERROR("%s%s"," could not find input with enum ",EnumAsString( old_enums[2*i+0]));5508 new_inputs[i]=(Input*)this->inputs->GetInput(enums[2*i+0]); 5509 old_inputs[i]=(Input*)this->inputs->GetInput(enums[2*i+1]); 5510 if(!new_inputs[i])ISSMERROR("%s%s"," could not find input with enum ",EnumAsString(enums[2*i+0])); 5511 if(!old_inputs[i])ISSMERROR("%s%s"," could not find input with enum ",EnumAsString(enums[2*i+0])); 5511 5512 } 5512 5513 5513 5514 /*ok, we've got the inputs (new and old), now loop throught the number of criterions and fill the eps array:*/ 5514 5515 for(i=0;i<num_criterionenums;i++){ 5515 IsInputConverged(eps+i,new_inputs,old_inputs,num_enums/2, ,criterionenums[i]);5516 IsInputConverged(eps+i,new_inputs,old_inputs,num_enums/2,criterionenums[i]); 5516 5517 if(eps[i]>criterionvalues[i]) converged=0; 5517 5518 } -
issm/trunk/src/c/objects/Elements/Tria.h
r4055 r4057 142 142 void ScaleInput(int enum_type,double scale_factor); 143 143 void AXPYInput(int YEnum, double scalar, int XEnum); 144 void InputConvergence(int* enums,int num_enums,int* criterionenums,double* criterionvalues,int num_criterionenums);144 void InputConvergence(int* pconverged,double* eps, int* enums,int num_enums,int* criterionenums,double* criterionvalues,int num_criterionenums); 145 145 void ControlConstrainInput(int control_type,double cm_min, double cm_max); 146 146 void GetVectorFromInputs(Vec vector,int NameEnum); -
issm/trunk/src/c/objects/ExternalResults/StringExternalResult.cpp
r4050 r4057 81 81 82 82 this->value=(char*)xmalloc(stringsize*sizeof(char)); 83 memcpy( this->value,marshalled_dataset,stringsize*sizeof(char));marshalled_dataset+=stringsize*sizeof(char);84 memcpy( this->step,marshalled_dataset,stringsize*sizeof(char));marshalled_dataset+=stringsize*sizeof(char);85 memcpy( this->time,marshalled_dataset,stringsize*sizeof(char));marshalled_dataset+=stringsize*sizeof(char);83 memcpy(value,marshalled_dataset,stringsize*sizeof(char));marshalled_dataset+=stringsize*sizeof(char); 84 memcpy(&step,marshalled_dataset,sizeof(step));marshalled_dataset+=sizeof(step); 85 memcpy(&time,marshalled_dataset,sizeof(time));marshalled_dataset+=sizeof(time); 86 86 87 87 /*return: */ … … 128 128 memcpy(marshalled_dataset,&stringsize,sizeof(stringsize));marshalled_dataset+=sizeof(stringsize); 129 129 memcpy(marshalled_dataset,this->value,stringsize*sizeof(char));marshalled_dataset+=stringsize*sizeof(char); 130 memcpy(marshalled_dataset, this->step,stringsize*sizeof(char));marshalled_dataset+=stringsize*sizeof(char);131 memcpy(marshalled_dataset, this->time,stringsize*sizeof(char));marshalled_dataset+=stringsize*sizeof(char);130 memcpy(marshalled_dataset,&step,sizeof(step));marshalled_dataset+=sizeof(step); 131 memcpy(marshalled_dataset,&time,sizeof(time));marshalled_dataset+=sizeof(time); 132 132 133 133 *pmarshalled_dataset=marshalled_dataset; -
issm/trunk/src/c/objects/Inputs/BeamVertexInput.cpp
r4055 r4057 199 199 /*}}}*/ 200 200 /*FUNCTION BeamVertexInput::GetParameterValues(double* values,double* gauss_pointers, int numgauss){{{1*/ 201 void BeamVertexInput::GetParameterValues(double* pvalues,double* gauss_pointers, int numgauss){201 void BeamVertexInput::GetParameterValues(double* values,double* gauss_pointers, int numgauss){ 202 202 /*It is assumed that output has been correctly allocated*/ 203 203 … … 295 295 /*}}}*/ 296 296 /*FUNCTION BeamVertexInput::GetValuesPtr(double* pvalues,int* pnum_values);{{{1*/ 297 void BeamVertexInput::GetValuesPtr(double* pvalues,int* pnum_values){297 void BeamVertexInput::GetValuesPtr(double** pvalues,int* pnum_values){ 298 298 299 299 *pvalues=this->values; -
issm/trunk/src/c/objects/Inputs/BeamVertexInput.h
r4055 r4057 78 78 void Constrain(double cm_min, double cm_max); 79 79 void GetVectorFromInputs(Vec vector,int* doflist); 80 void GetValuesPtr(double* pvalues,int* pnum_values);80 void GetValuesPtr(double** pvalues,int* pnum_values); 81 81 /*}}}*/ 82 82 -
issm/trunk/src/c/objects/Inputs/BoolInput.cpp
r4055 r4057 256 256 } 257 257 /*}}}*/ 258 /*FUNCTION BoolInput::GetValuesPtr(double* pvalues,int* pnum_values);{{{1*/259 void BoolInput::GetValuesPtr(double* pvalues,int* pnum_values){258 /*FUNCTION BoolInput::GetValuesPtr(double** pvalues,int* pnum_values);{{{1*/ 259 void BoolInput::GetValuesPtr(double** pvalues,int* pnum_values){ 260 260 261 261 ISSMERROR(" not supported yet!"); -
issm/trunk/src/c/objects/Inputs/BoolInput.h
r4055 r4057 78 78 void Constrain(double cm_min, double cm_max); 79 79 void GetVectorFromInputs(Vec vector,int* doflist); 80 void GetValuesPtr(double* pvalues,int* pnum_values);80 void GetValuesPtr(double** pvalues,int* pnum_values); 81 81 /*}}}*/ 82 82 -
issm/trunk/src/c/objects/Inputs/DoubleInput.cpp
r4055 r4057 267 267 } 268 268 /*}}}*/ 269 /*FUNCTION DoubleInput::GetValuesPtr(double* pvalues,int* pnum_values);{{{1*/270 void DoubleInput::GetValuesPtr(double* pvalues,int* pnum_values){269 /*FUNCTION DoubleInput::GetValuesPtr(double** pvalues,int* pnum_values);{{{1*/ 270 void DoubleInput::GetValuesPtr(double** pvalues,int* pnum_values){ 271 271 272 272 ISSMERROR(" not supported yet!"); -
issm/trunk/src/c/objects/Inputs/DoubleInput.h
r4055 r4057 79 79 void Constrain(double cm_min, double cm_max); 80 80 void GetVectorFromInputs(Vec vector,int* doflist); 81 void GetValuesPtr(double* pvalues,int* pnum_values);81 void GetValuesPtr(double** pvalues,int* pnum_values); 82 82 /*}}}*/ 83 83 -
issm/trunk/src/c/objects/Inputs/Input.h
r4055 r4057 55 55 virtual void Constrain(double cm_min, double cm_max)=0; 56 56 virtual void GetVectorFromInputs(Vec vector,int* doflist)=0; 57 virtual void GetValuesPtr(double* pvalues,int* pnum_values)=0;57 virtual void GetValuesPtr(double** pvalues,int* pnum_values)=0; 58 58 /*}}}*/ 59 59 -
issm/trunk/src/c/objects/Inputs/IntInput.cpp
r4055 r4057 257 257 } 258 258 /*}}}*/ 259 /*FUNCTION IntInput::GetValuesPtr(double* pvalues,int* pnum_values);{{{1*/260 void IntInput::GetValuesPtr(double* pvalues,int* pnum_values){259 /*FUNCTION IntInput::GetValuesPtr(double** pvalues,int* pnum_values);{{{1*/ 260 void IntInput::GetValuesPtr(double** pvalues,int* pnum_values){ 261 261 262 262 ISSMERROR(" not supported yet!"); -
issm/trunk/src/c/objects/Inputs/IntInput.h
r4055 r4057 78 78 void Constrain(double cm_min, double cm_max); 79 79 void GetVectorFromInputs(Vec vector,int* doflist); 80 void GetValuesPtr(double* pvalues,int* pnum_values);80 void GetValuesPtr(double** pvalues,int* pnum_values); 81 81 /*}}}*/ 82 82 -
issm/trunk/src/c/objects/Inputs/PentaVertexInput.cpp
r4055 r4057 943 943 } 944 944 /*}}}*/ 945 /*FUNCTION PentaVertexInput::GetValuesPtr(double* pvalues,int* pnum_values);{{{1*/946 void PentaVertexInput::GetValuesPtr(double* pvalues,int* pnum_values){945 /*FUNCTION PentaVertexInput::GetValuesPtr(double** pvalues,int* pnum_values);{{{1*/ 946 void PentaVertexInput::GetValuesPtr(double** pvalues,int* pnum_values){ 947 947 948 948 *pvalues=this->values; -
issm/trunk/src/c/objects/Inputs/PentaVertexInput.h
r4055 r4057 87 87 void Constrain(double cm_min, double cm_max); 88 88 void GetVectorFromInputs(Vec vector,int* doflist); 89 void GetValuesPtr(double* pvalues,int* pnum_values);89 void GetValuesPtr(double** pvalues,int* pnum_values); 90 90 /*}}}*/ 91 91 -
issm/trunk/src/c/objects/Inputs/SingVertexInput.cpp
r4055 r4057 258 258 259 259 } 260 / 2*}}}*/261 /*FUNCTION SingVertexInput::GetValuesPtr(double* pvalues,int* pnum_values);{{{1*/262 void SingVertexInput::GetValuesPtr(double* pvalues,int* pnum_values){260 /*}}}*/ 261 /*FUNCTION SingVertexInput::GetValuesPtr(double** pvalues,int* pnum_values);{{{1*/ 262 void SingVertexInput::GetValuesPtr(double** pvalues,int* pnum_values){ 263 263 264 264 *pvalues=&this->value; -
issm/trunk/src/c/objects/Inputs/SingVertexInput.h
r4055 r4057 77 77 void Constrain(double cm_min, double cm_max); 78 78 void GetVectorFromInputs(Vec vector,int* doflist); 79 void GetValuesPtr(double* pvalues,int* pnum_values);79 void GetValuesPtr(double** pvalues,int* pnum_values); 80 80 /*}}}*/ 81 81 -
issm/trunk/src/c/objects/Inputs/TriaVertexInput.cpp
r4055 r4057 517 517 } 518 518 /*}}}*/ 519 /*FUNCTION TriaVertexInput::GetValuesPtr(double* pvalues,int* pnum_values);{{{1*/520 void TriaVertexInput::GetValuesPtr(double* pvalues,int* pnum_values){519 /*FUNCTION TriaVertexInput::GetValuesPtr(double** pvalues,int* pnum_values);{{{1*/ 520 void TriaVertexInput::GetValuesPtr(double** pvalues,int* pnum_values){ 521 521 522 522 *pvalues=this->values; -
issm/trunk/src/c/objects/Inputs/TriaVertexInput.h
r4055 r4057 84 84 void Constrain(double cm_min, double cm_max); 85 85 void GetVectorFromInputs(Vec vector,int* doflist); 86 void GetValuesPtr(double* pvalues,int* pnum_values);86 void GetValuesPtr(double** pvalues,int* pnum_values); 87 87 /*}}}*/ 88 88 -
issm/trunk/src/c/objects/Loads/Load.h
r4043 r4057 34 34 virtual void PenaltyCreateKMatrix(Mat Kgg,double kmax)=0; 35 35 virtual void PenaltyCreatePVector(Vec pg,double kmax)=0; 36 virtual bool InAnalysis(int analysis_type) ;36 virtual bool InAnalysis(int analysis_type)=0; 37 37 }; 38 38 #endif -
issm/trunk/src/c/objects/Patch.cpp
r4042 r4057 14 14 #include "./objects.h" 15 15 #include "../DataSet/DataSet.h" 16 #include "../io/io.h" 16 17 #include "../EnumDefinitions/EnumDefinitions.h" 17 18 #include "../shared/shared.h" … … 26 27 this->maxvertices=0; 27 28 this->maxnodes=0; 28 this->values=NULL :29 this->values=NULL; 29 30 } 30 31 /*}}}*/ … … 32 33 Patch::Patch(int in_numrows, int in_maxvertices, int in_maxnodes){ 33 34 35 int i,j; 34 36 this->numrows=in_numrows; 35 37 this->maxvertices=in_maxvertices; … … 45 47 46 48 //allocate and fill with NaN: 47 this->values= xmalloc(this->numcols*this->numrows*sizeof(double));49 this->values=(double*)xmalloc(this->numcols*this->numrows*sizeof(double)); 48 50 for(i=0;i<this->numcols;i++){ 49 for(j=0;j<this->nu rows;j++){51 for(j=0;j<this->numrows;j++){ 50 52 *(this->values+i*this->numcols+j)=NAN; 51 53 } … … 105 107 106 108 int i; 109 int count; 107 110 extern int my_rank; 108 111 extern int num_procs; … … 110 113 int node_numrows; 111 114 double *total_values = NULL; 115 MPI_Status status; 112 116 113 117 #ifdef _SERIAL_ … … 126 130 if(my_rank==0){ 127 131 count=0; 128 memcpy(total_values+count,this->values,this->numcols*this->numr ifts*sizeof(double));132 memcpy(total_values+count,this->values,this->numcols*this->numrows*sizeof(double)); 129 133 count+=this->numrows*this->numcols; 130 134 } … … 159 163 /*}}}*/ 160 164 /*FUNCTION Patch::WriteToDisk(int solutiontype,char* filename);{{{1*/ 161 void WriteToDisk(int solutiontype,char* filename){165 void Patch::WriteToDisk(int solutiontype,char* filename){ 162 166 163 167 extern int my_rank; -
issm/trunk/src/c/shared/Numerics/IsInputConverged.cpp
r4055 r4057 16 16 void IsInputConverged(double* peps, Input** new_inputs,Input** old_inputs,int num_inputs,int criterion_enum){ 17 17 18 int i ;18 int i,j; 19 19 20 20 /*output: */ -
issm/trunk/src/c/solutions/ResetBoundaryConditions.cpp
r4015 r4057 11 11 int verbose=0; 12 12 Vec ug=NULL; 13 int analysis_counter; 13 14 14 15 femmodel->parameters->FindParam(&verbose,VerboseEnum); 15 16 if(verbose)_printf_("%s\n"," updating boundary conditions..."); 16 17 17 GetSolutionFromInputsx( &ug, femmodel->elements,femmodel->nodes, femmodel->vertices,femmodel->loads, femmodel->materials, femmodel->parameters , analysis_type,sub_analysis_type);18 GetSolutionFromInputsx( &ug, femmodel->elements,femmodel->nodes, femmodel->vertices,femmodel->loads, femmodel->materials, femmodel->parameters); 18 19 19 20 /*set current analysis: */ … … 21 22 22 23 /*For this analysis_type, free existing boundary condition vectors: */ 24 analysis_counter=femmodel->analysis_counter; 23 25 24 26 //global dof set 25 VecFree(&femmodel-> yg[femmodel->analysis_counter]->vector);27 VecFree(&femmodel->m_yg[analysis_counter]); 26 28 //in the s-set 27 VecFree(&femmodel-> ys[analysis_counter]);29 VecFree(&femmodel->m_ys[analysis_counter]); 28 30 29 31 //Now, duplicate ug (the solution vector) into the boundary conditions vector on the g-set 30 VecDuplicatePatch(&femmodel-> yg[analysis_counter]->vector,ug);32 VecDuplicatePatch(&femmodel->m_yg[analysis_counter],ug); 31 33 32 34 //Reduce from g to s set 33 Reducevectorgtosx(&femmodel-> ys[analysis_counter],femmodel->yg[analysis_counter]->vector,femmodel->nodesets[analysis_counter]);35 Reducevectorgtosx(&femmodel->m_ys[analysis_counter],femmodel->m_yg[analysis_counter],femmodel->m_nodesets[analysis_counter]); 34 36 35 37 /*Free ressources:*/ -
issm/trunk/src/c/solutions/balancedthickness2_core.cpp
r4055 r4057 26 26 27 27 _printf_("depth averaging velocity...\n"); 28 DepthAverageInputx(femmodel->elements,femmodel->nodes, femmodel->vertices,femmodel->loads, femmodel->materials,femmodel->parameters,VxEnum );29 DepthAverageInputx(femmodel->elements,femmodel->nodes, femmodel->vertices,femmodel->loads, femmodel->materials,femmodel->parameters,VyEnum );30 if(dim==3) DepthAverageInputx(femmodel->elements,femmodel->nodes, femmodel->vertices,femmodel->loads, femmodel->materials,femmodel->parameters,VzEnum );28 DepthAverageInputx(femmodel->elements,femmodel->nodes, femmodel->vertices,femmodel->loads, femmodel->materials,femmodel->parameters,VxEnum,VxAverageEnum); 29 DepthAverageInputx(femmodel->elements,femmodel->nodes, femmodel->vertices,femmodel->loads, femmodel->materials,femmodel->parameters,VyEnum,VyAverageEnum); 30 if(dim==3) DepthAverageInputx(femmodel->elements,femmodel->nodes, femmodel->vertices,femmodel->loads, femmodel->materials,femmodel->parameters,VzEnum,VzAverageEnum); 31 31 32 32 -
issm/trunk/src/c/solutions/balancedthickness_core.cpp
r4055 r4057 26 26 27 27 _printf_("depth averaging velocity...\n"); 28 DepthAverageInputx(femmodel->elements,femmodel->nodes, femmodel->vertices,femmodel->loads, femmodel->materials,femmodel->parameters,VxEnum );29 DepthAverageInputx(femmodel->elements,femmodel->nodes, femmodel->vertices,femmodel->loads, femmodel->materials,femmodel->parameters,VyEnum );30 if(dim==3) DepthAverageInputx(femmodel->elements,femmodel->nodes, femmodel->vertices,femmodel->loads, femmodel->materials,femmodel->parameters,VzEnum );28 DepthAverageInputx(femmodel->elements,femmodel->nodes, femmodel->vertices,femmodel->loads, femmodel->materials,femmodel->parameters,VxEnum,VxAverageEnum); 29 DepthAverageInputx(femmodel->elements,femmodel->nodes, femmodel->vertices,femmodel->loads, femmodel->materials,femmodel->parameters,VyEnum,VyAverageEnum); 30 if(dim==3) DepthAverageInputx(femmodel->elements,femmodel->nodes, femmodel->vertices,femmodel->loads, femmodel->materials,femmodel->parameters,VzEnum,VzAverageEnum); 31 31 32 32 _printf_("call computational core:\n"); -
issm/trunk/src/c/solutions/balancedvelocities_core.cpp
r4055 r4057 25 25 26 26 _printf_("depth averaging velocity...\n"); 27 DepthAverageInputx(femmodel->elements,femmodel->nodes, femmodel->vertices,femmodel->loads, femmodel->materials,femmodel->parameters,VxEnum );28 DepthAverageInputx(femmodel->elements,femmodel->nodes, femmodel->vertices,femmodel->loads, femmodel->materials,femmodel->parameters,VyEnum );29 if(dim==3) DepthAverageInputx(femmodel->elements,femmodel->nodes, femmodel->vertices,femmodel->loads, femmodel->materials,femmodel->parameters,VzEnum );27 DepthAverageInputx(femmodel->elements,femmodel->nodes, femmodel->vertices,femmodel->loads, femmodel->materials,femmodel->parameters,VxEnum,VxAverageEnum); 28 DepthAverageInputx(femmodel->elements,femmodel->nodes, femmodel->vertices,femmodel->loads, femmodel->materials,femmodel->parameters,VyEnum,VyAverageEnum); 29 if(dim==3) DepthAverageInputx(femmodel->elements,femmodel->nodes, femmodel->vertices,femmodel->loads, femmodel->materials,femmodel->parameters,VzEnum,VzAverageEnum); 30 30 31 31 _printf_("call computational core:\n"); -
issm/trunk/src/c/solutions/controlconvergence.cpp
r4048 r4057 8 8 #error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!" 9 9 #endif 10 11 #include "../objects/objects.h" 12 #include "../shared/shared.h" 13 #include "../DataSet/DataSet.h" 14 #include "../EnumDefinitions/EnumDefinitions.h" 15 #include "../include/include.h" 16 #include "../modules/modules.h" 17 #include "./solutions.h" 18 10 19 11 20 int controlconvergence(double* J, double* fit, double eps_cm, int n){ -
issm/trunk/src/c/solutions/solutions.h
r4055 r4057 35 35 void convergence(int* pconverged, Mat K_ff,Vec p_f,Vec u_f,Vec u_f_old,Parameters* parameters); 36 36 int controlconvergence(double* J, double* fit, double eps_cm, int n); 37 int steadystateconvergence(FemModel* femmodel); 37 38 38 39 //optimization -
issm/trunk/src/c/solutions/steadystate_core.cpp
r4055 r4057 43 43 44 44 if(verbose)_printf_("%s\n","saving velocity, temperature and pressure to check for convergence at next step"); 45 DuplicateInputx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,VxEnum, OldVxEnum);46 DuplicateInputx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,VyEnum, OldVyEnum);47 if(dim==3)DuplicateInputx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,VzEnum, OldVzEnum);48 DuplicateInputx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,PressureEnum, OldPressureEnum);49 DuplicateInputx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,TemperatureEnum, OldTemperatureEnum);45 DuplicateInputx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,VxEnum,VxOldEnum); 46 DuplicateInputx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,VyEnum,VyOldEnum); 47 if(dim==3)DuplicateInputx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,VzEnum,VzOldEnum); 48 DuplicateInputx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,PressureEnum,PressureOldEnum); 49 DuplicateInputx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,TemperatureEnum,TemperatureOldEnum); 50 50 51 51 //increase counter -
issm/trunk/src/c/solutions/steadystateconvergence.cpp
r4055 r4057 9 9 #endif 10 10 11 #include "../objects/objects.h" 12 #include "../shared/shared.h" 13 #include "../DataSet/DataSet.h" 14 #include "../EnumDefinitions/EnumDefinitions.h" 15 #include "../include/include.h" 16 #include "../modules/modules.h" 17 #include "./solutions.h" 18 11 19 int steadystateconvergence(FemModel* femmodel){ 12 20 … … 17 25 18 26 /*intermediary: */ 19 int velocityenums[8]={VxEnum, OldVxEnum,VyEnum,OldVyEnum,VzEnum,OldVzEnum,PressureEnum,OldPressureEnum}; //pairs of enums (new and old) on which to carry out the converence tests20 int temperatureenums[2]={TemperatureEnum, OldTemperatureEnum};27 int velocityenums[8]={VxEnum,VxOldEnum,VyEnum,VyOldEnum,VzEnum,VzOldEnum,PressureEnum,PressureOldEnum}; //pairs of enums (new and old) on which to carry out the converence tests 28 int temperatureenums[2]={TemperatureEnum,TemperatureOldEnum}; 21 29 int convergencecriterion[1]={RelativeEnum}; //criterions for convergence, RelativeEnum or AbsoluteEnum 22 intconvergencecriterionvalue[1]; //value of criterion to be respected30 double convergencecriterionvalue[1]; //value of criterion to be respected 23 31 24 32 /*retrieve parameters: */ … … 26 34 27 35 /*figure out convergence at the input level, because we don't have the solution vectors!: */ 28 velocity_converged=InputConvergencex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,velocityenums,8,convergencecriterion,convergencecriterionvalue,1); 29 temperature_converged=InputConvergencex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,temperatureenums,2,convergencecriterion,convergencecriterionvalue,1); 36 velocity_converged=InputConvergencex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,&velocityenums[0],8,&convergencecriterion[0],&convergencecriterionvalue[0],1); 37 temperature_converged=InputConvergencex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,&temperatureenums[0],2,&convergencecriterion[0],&convergencecriterionvalue[0],1); 38 30 39 31 40 if(velocity_converged && temperature_converged)converged=1; -
issm/trunk/src/c/solutions/thermal_core_step.cpp
r4055 r4057 14 14 void thermal_core_step(FemModel* femmodel,int step, double time){ 15 15 16 int verbose; 17 16 18 //first recover parameters common to all solutions 17 19 femmodel->parameters->FindParam(&verbose,VerboseEnum); -
issm/trunk/src/c/solvers/solver_diagnostic_nonlinear.cpp
r4055 r4057 7 7 #include "../EnumDefinitions/EnumDefinitions.h" 8 8 #include "../modules/modules.h" 9 #include "./solutions.h" 9 #include "../solutions/solutions.h" 10 #include "./solvers.h" 10 11 11 12 void solver_diagnostic_nonlinear(Vec* pug,Mat* pKff0,Mat* pKfs0, FemModel* fem,bool conserve_loads){ … … 37 38 char* solver_string=NULL; 38 39 int verbose=0; 39 40 //Set active analysis_type: 41 fem->SetActiveAnalysis(analysis_type); 40 int dim; 42 41 43 42 /*Recover parameters: */ … … 45 44 fem->parameters->FindParam(&numberofnodes,NumberOfNodesEnum); 46 45 fem->parameters->FindParam(&solver_string,SolverStringEnum); 46 fem->parameters->FindParam(&dim,DimEnum); 47 47 fem->parameters->FindParam(&verbose,VerboseEnum); 48 48 fem->parameters->FindParam(&min_mechanical_constraints,MinMechanicalConstraintsEnum); … … 137 137 if (dim==3){ 138 138 if(verbose)_printf_("%s\n","extruding velocity and pressure in 3d..."); 139 InputsExtrudex( fem->elements,fem->nodes,fem->vertices,fem->loads,fem->materials,fem->parameters,VxEnum,0);140 InputsExtrudex( fem->elements,fem->nodes,fem->vertices,fem->loads,fem->materials,fem->parameters,VyEnum,0);139 ExtrudeInputx( fem->elements,fem->nodes,fem->vertices,fem->loads,fem->materials,fem->parameters,VxEnum); 140 ExtrudeInputx( fem->elements,fem->nodes,fem->vertices,fem->loads,fem->materials,fem->parameters,VyEnum); 141 141 } 142 142
Note:
See TracChangeset
for help on using the changeset viewer.