Changeset 15849
- Timestamp:
- 08/20/13 14:50:44 (12 years ago)
- Location:
- issm/trunk-jpl/src/c
- Files:
-
- 51 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/analyses/DakotaSpawnCore.cpp
r15838 r15849 66 66 67 67 /*Modify core inputs in objects contained in femmodel, to reflect the dakota variables inputs: */ 68 InputUpdateFromDakotax(femmodel ->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,d_variables,d_variables_descriptors,d_numvariables);68 InputUpdateFromDakotax(femmodel,d_variables,d_variables_descriptors,d_numvariables); 69 69 70 70 /*Determine solution sequence: */ -
issm/trunk-jpl/src/c/analyses/ResetBoundaryConditions.cpp
r15104 r15849 22 22 23 23 /*retrieve boundary conditions from element inputs :*/ 24 GetSolutionFromInputsx( &yg, femmodel->elements,femmodel->nodes, femmodel->vertices,femmodel->loads, femmodel->materials, femmodel->parameters);24 GetSolutionFromInputsx(&yg,femmodel); 25 25 26 26 /*update spcs using this new vector of constraints: */ -
issm/trunk-jpl/src/c/analyses/adjointbalancethickness_core.cpp
r15104 r15849 24 24 25 25 /*Call SurfaceAreax, because some it might be needed by PVector*/ 26 SurfaceAreax(NULL,femmodel ->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters);26 SurfaceAreax(NULL,femmodel); 27 27 28 28 /*compute adjoint*/ … … 34 34 if(save_results){ 35 35 if(VerboseSolution()) _printf0_(" saving results\n"); 36 InputToResultx(femmodel ->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,AdjointEnum);36 InputToResultx(femmodel,AdjointEnum); 37 37 } 38 38 } -
issm/trunk-jpl/src/c/analyses/adjointstressbalance_core.cpp
r15771 r15849 27 27 28 28 /*Call SurfaceAreax, because some it might be needed by PVector*/ 29 SurfaceAreax(NULL,femmodel ->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters);29 SurfaceAreax(NULL,femmodel); 30 30 31 31 /*Compute adjoint*/ … … 37 37 if(save_results){ 38 38 if(VerboseSolution()) _printf0_(" saving results\n"); 39 InputToResultx(femmodel ->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,AdjointxEnum);40 InputToResultx(femmodel ->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,AdjointyEnum);39 InputToResultx(femmodel,AdjointxEnum); 40 InputToResultx(femmodel,AdjointyEnum); 41 41 if (isFS){ 42 InputToResultx(femmodel ->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,AdjointzEnum);43 InputToResultx(femmodel ->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,AdjointpEnum);42 InputToResultx(femmodel,AdjointzEnum); 43 InputToResultx(femmodel,AdjointpEnum); 44 44 } 45 45 } -
issm/trunk-jpl/src/c/analyses/balancethickness_core.cpp
r15104 r15849 26 26 if(save_results){ 27 27 if(VerboseSolution()) _printf0_(" saving results\n"); 28 InputToResultx(femmodel ->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,ThicknessEnum);28 InputToResultx(femmodel,ThicknessEnum); 29 29 } 30 30 -
issm/trunk-jpl/src/c/analyses/bedslope_core.cpp
r15104 r15849 28 28 if(save_results){ 29 29 if(VerboseSolution()) _printf0_(" saving results\n"); 30 InputToResultx(femmodel ->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,BedSlopeXEnum);31 InputToResultx(femmodel ->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,BedSlopeYEnum);30 InputToResultx(femmodel,BedSlopeXEnum); 31 InputToResultx(femmodel,BedSlopeYEnum); 32 32 } 33 33 -
issm/trunk-jpl/src/c/analyses/control_core.cpp
r15771 r15849 94 94 /*Return gradient if asked: */ 95 95 if (cm_gradient){ 96 InputToResultx(femmodel ->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,GradientEnum);96 InputToResultx(femmodel,GradientEnum); 97 97 goto cleanup_and_return; 98 98 } … … 114 114 /*some results not computed by steadystate_core or stressbalance_core: */ 115 115 if(!dakota_analysis){ //do not save this if we are running the control core from a qmu run! 116 for(i=0;i<num_controls;i++) InputToResultx(femmodel ->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,control_type[i]);116 for(i=0;i<num_controls;i++) InputToResultx(femmodel,control_type[i]); 117 117 118 118 #ifdef _HAVE_ADOLC_ -
issm/trunk-jpl/src/c/analyses/controltao_core.cpp
r15205 r15849 85 85 SetControlInputsFromVectorx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,X); 86 86 for(int i=0;i<num_controls;i++){ 87 InputToResultx(femmodel ->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,control_list[i]);87 InputToResultx(femmodel,control_list[i]); 88 88 } 89 89 femmodel->results->AddObject(new GenericExternalResult<double*>(femmodel->results->Size()+1,JEnum,user.J,maxiter+3,1,1,0)); -
issm/trunk-jpl/src/c/analyses/enthalpy_core.cpp
r15104 r15849 27 27 if(save_results){ 28 28 if(VerboseSolution()) _printf0_(" saving results\n"); 29 InputToResultx(femmodel ->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,TemperatureEnum);30 InputToResultx(femmodel ->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,EnthalpyEnum);31 InputToResultx(femmodel ->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,WaterfractionEnum);29 InputToResultx(femmodel,TemperatureEnum); 30 InputToResultx(femmodel,EnthalpyEnum); 31 InputToResultx(femmodel,WaterfractionEnum); 32 32 } 33 33 } -
issm/trunk-jpl/src/c/analyses/gia_core.cpp
r15104 r15849 46 46 dwdtg->Assemble(); 47 47 48 InputUpdateFromVectorx( femmodel->elements,femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters,wg,GiaWEnum,VertexSIdEnum);49 InputUpdateFromVectorx( femmodel->elements,femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters,dwdtg,GiadWdtEnum,VertexSIdEnum);48 InputUpdateFromVectorx(femmodel,wg,GiaWEnum,VertexSIdEnum); 49 InputUpdateFromVectorx(femmodel,dwdtg,GiadWdtEnum,VertexSIdEnum); 50 50 51 51 if(save_results){ 52 52 if(VerboseSolution()) _printf0_(" saving results\n"); 53 InputToResultx(femmodel ->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,GiaWEnum);54 InputToResultx(femmodel ->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,GiadWdtEnum);53 InputToResultx(femmodel,GiaWEnum); 54 InputToResultx(femmodel,GiadWdtEnum); 55 55 } 56 56 -
issm/trunk-jpl/src/c/analyses/hydrology_core.cpp
r15191 r15849 68 68 if(save_results && ((i+1)%output_frequency==0 || (i+1)==nsteps)){ 69 69 if(VerboseSolution()) _printf0_(" saving results \n"); 70 InputToResultx(femmodel ->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,WatercolumnEnum);71 InputToResultx(femmodel ->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,HydrologyWaterVxEnum);72 InputToResultx(femmodel ->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,HydrologyWaterVyEnum);70 InputToResultx(femmodel,WatercolumnEnum); 71 InputToResultx(femmodel,HydrologyWaterVxEnum); 72 InputToResultx(femmodel,HydrologyWaterVyEnum); 73 73 74 74 /*unload results*/ … … 89 89 if(save_results && ((i+1)%output_frequency==0 || (i+1)==nsteps)){ 90 90 if(VerboseSolution()) _printf0_(" saving results \n"); 91 InputToResultx(femmodel ->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,SedimentHeadEnum);92 InputToResultx(femmodel ->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,SedimentHeadResidualEnum);91 InputToResultx(femmodel,SedimentHeadEnum); 92 InputToResultx(femmodel,SedimentHeadResidualEnum); 93 93 if(isefficientlayer){ 94 InputToResultx(femmodel ->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,EplHeadEnum);95 InputToResultx(femmodel ->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,HydrologydcMaskEplactiveEnum);94 InputToResultx(femmodel,EplHeadEnum); 95 InputToResultx(femmodel,HydrologydcMaskEplactiveEnum); 96 96 } 97 97 /*unload results*/ -
issm/trunk-jpl/src/c/analyses/masstransport_core.cpp
r15767 r15849 48 48 if(save_results){ 49 49 if(VerboseSolution()) _printf0_(" saving results\n"); 50 InputToResultx(femmodel ->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,ThicknessEnum);50 InputToResultx(femmodel,ThicknessEnum); 51 51 femmodel->RequestedOutputsx(requested_outputs,numoutputs); 52 52 } -
issm/trunk-jpl/src/c/analyses/steadystate_core.cpp
r15771 r15849 53 53 thermal_core(femmodel); 54 54 femmodel->SetCurrentConfiguration(ThermalAnalysisEnum); 55 GetSolutionFromInputsx(&tg,femmodel ->elements, femmodel->nodes, femmodel->vertices,femmodel->loads, femmodel->materials, femmodel->parameters);55 GetSolutionFromInputsx(&tg,femmodel); 56 56 } 57 57 else{ 58 58 enthalpy_core(femmodel); 59 GetSolutionFromInputsx(&tg,femmodel ->elements, femmodel->nodes, femmodel->vertices,femmodel->loads, femmodel->materials, femmodel->parameters);59 GetSolutionFromInputsx(&tg,femmodel); 60 60 } 61 61 #else … … 65 65 if(VerboseSolution()) _printf0_(" computing new velocity\n"); 66 66 stressbalance_core(femmodel); 67 GetSolutionFromInputsx(&ug,femmodel ->elements, femmodel->nodes, femmodel->vertices,femmodel->loads, femmodel->materials, femmodel->parameters);67 GetSolutionFromInputsx(&ug,femmodel); 68 68 69 69 if(step>1){ … … 84 84 if(save_results){ 85 85 if(VerboseSolution()) _printf0_(" saving results\n"); 86 InputToResultx(femmodel ->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,VxEnum);87 InputToResultx(femmodel ->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,VyEnum);88 InputToResultx(femmodel ->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,VzEnum);89 InputToResultx(femmodel ->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,VelEnum);90 InputToResultx(femmodel ->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,PressureEnum);91 InputToResultx(femmodel ->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,TemperatureEnum);92 if(isenthalpy) InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,WaterfractionEnum);93 if(isenthalpy) InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,EnthalpyEnum);94 if(!isenthalpy) InputToResultx(femmodel ->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,BasalforcingsMeltingRateEnum);86 InputToResultx(femmodel,VxEnum); 87 InputToResultx(femmodel,VyEnum); 88 InputToResultx(femmodel,VzEnum); 89 InputToResultx(femmodel,VelEnum); 90 InputToResultx(femmodel,PressureEnum); 91 InputToResultx(femmodel,TemperatureEnum); 92 if(isenthalpy) InputToResultx(femmodel,WaterfractionEnum); 93 if(isenthalpy) InputToResultx(femmodel,EnthalpyEnum); 94 if(!isenthalpy) InputToResultx(femmodel,BasalforcingsMeltingRateEnum); 95 95 femmodel->RequestedOutputsx(requested_outputs,numoutputs); 96 96 } -
issm/trunk-jpl/src/c/analyses/stressbalance_core.cpp
r15771 r15849 86 86 if(save_results){ 87 87 if(VerboseSolution()) _printf0_(" saving results\n"); 88 InputToResultx(femmodel ->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,VxEnum);89 InputToResultx(femmodel ->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,VyEnum);90 InputToResultx(femmodel ->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,VelEnum);91 InputToResultx(femmodel ->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,PressureEnum);92 if(dim==3) InputToResultx(femmodel ->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,VzEnum);88 InputToResultx(femmodel,VxEnum); 89 InputToResultx(femmodel,VyEnum); 90 InputToResultx(femmodel,VelEnum); 91 InputToResultx(femmodel,PressureEnum); 92 if(dim==3) InputToResultx(femmodel,VzEnum); 93 93 femmodel->RequestedOutputsx(requested_outputs,numoutputs); 94 94 } -
issm/trunk-jpl/src/c/analyses/surfaceslope_core.cpp
r15104 r15849 28 28 if(save_results){ 29 29 if(VerboseSolution()) _printf0_("saving results:\n"); 30 InputToResultx(femmodel ->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,SurfaceSlopeXEnum);31 InputToResultx(femmodel ->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,SurfaceSlopeYEnum);30 InputToResultx(femmodel,SurfaceSlopeXEnum); 31 InputToResultx(femmodel,SurfaceSlopeYEnum); 32 32 } 33 33 -
issm/trunk-jpl/src/c/analyses/thermal_core.cpp
r15375 r15849 24 24 if(dakota_analysis && solution_type!=TransientSolutionEnum){ 25 25 femmodel->SetCurrentConfiguration(ThermalAnalysisEnum); 26 ResetConstraintsx(femmodel ->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters);26 ResetConstraintsx(femmodel); 27 27 } 28 28 … … 37 37 if(save_results){ 38 38 if(VerboseSolution()) _printf0_(" saving results\n"); 39 InputToResultx(femmodel ->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,TemperatureEnum);40 InputToResultx(femmodel ->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,BasalforcingsMeltingRateEnum);39 InputToResultx(femmodel,TemperatureEnum); 40 InputToResultx(femmodel,BasalforcingsMeltingRateEnum); 41 41 } 42 42 } -
issm/trunk-jpl/src/c/analyses/transient_core.cpp
r15771 r15849 79 79 //Reset Thermal Constraints 80 80 femmodel->SetCurrentConfiguration(ThermalAnalysisEnum); 81 ResetConstraintsx(femmodel ->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters);81 ResetConstraintsx(femmodel); 82 82 } 83 83 } … … 154 154 if(save_results){ 155 155 if(VerboseSolution()) _printf0_(" saving transient results\n"); 156 InputToResultx(femmodel ->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,SurfaceEnum);157 InputToResultx(femmodel ->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,BedEnum);158 InputToResultx(femmodel ->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,SurfaceforcingsMassBalanceEnum);159 InputToResultx(femmodel ->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,MaskElementonfloatingiceEnum);156 InputToResultx(femmodel,SurfaceEnum); 157 InputToResultx(femmodel,BedEnum); 158 InputToResultx(femmodel,SurfaceforcingsMassBalanceEnum); 159 InputToResultx(femmodel,MaskElementonfloatingiceEnum); 160 160 femmodel->RequestedOutputsx(requested_outputs,numoutputs); 161 161 162 162 if(isdelta18o){ 163 InputToResultx(femmodel ->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,SurfaceforcingsMonthlytemperaturesEnum);164 InputToResultx(femmodel ->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,SurfaceforcingsPrecipitationEnum);165 InputToResultx(femmodel ->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,BasalFrictionEnum);163 InputToResultx(femmodel,SurfaceforcingsMonthlytemperaturesEnum); 164 InputToResultx(femmodel,SurfaceforcingsPrecipitationEnum); 165 InputToResultx(femmodel,BasalFrictionEnum); 166 166 } 167 167 if(isgroundingline && (groundingline_migration==SubelementMigrationEnum || groundingline_migration==SubelementMigration2Enum)){ 168 InputToResultx(femmodel ->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,GLlevelsetEnum);168 InputToResultx(femmodel,GLlevelsetEnum); 169 169 } 170 170 -
issm/trunk-jpl/src/c/classes/FemModel.cpp
r15839 r15849 649 649 650 650 /*get vertex vectors for bed and thickness: */ 651 GetVectorFromInputsx(&thickness, elements,nodes, vertices, loads, materials, parameters, ThicknessEnum,VertexEnum);652 GetVectorFromInputsx(&bed , elements,nodes, vertices, loads, materials, parameters, BedEnum, VertexEnum);651 GetVectorFromInputsx(&thickness,this, ThicknessEnum,VertexEnum); 652 GetVectorFromInputsx(&bed ,this, BedEnum, VertexEnum); 653 653 654 654 /*Allocate vector*/ … … 665 665 666 666 /*Update element inputs*/ 667 InputUpdateFromVectorx( elements,nodes,vertices,loads,materials,parameters,vz,VzMeshEnum,VertexPIdEnum);667 InputUpdateFromVectorx(this,vz,VzMeshEnum,VertexPIdEnum); 668 668 669 669 /*Free ressources:*/ … … 731 731 case SurfaceLogVelMisfitEnum: SurfaceLogVelMisfitx(responses, elements,nodes, vertices, loads, materials, parameters,weight_index); break; 732 732 case SurfaceLogVxVyMisfitEnum: SurfaceLogVxVyMisfitx(responses, elements,nodes, vertices, loads, materials, parameters,weight_index); break; 733 case SurfaceAverageVelMisfitEnum:SurfaceAverageVelMisfitx( responses, elements,nodes, vertices, loads, materials, parameters,weight_index); break;733 case SurfaceAverageVelMisfitEnum:SurfaceAverageVelMisfitx(responses,this,weight_index); break; 734 734 case ThicknessAbsMisfitEnum: ThicknessAbsMisfitx(responses, elements,nodes, vertices, loads, materials, parameters,weight_index); break; 735 735 case ThicknessAbsGradientEnum: this->ThicknessAbsGradientx(responses,weight_index); break; … … 1473 1473 1474 1474 /*this response was scaled. pick up the response from the inputs: */ 1475 GetVectorFromInputsx(&vertex_response, elements,nodes, vertices, loads, materials, parameters, StringToEnumx(root),VertexEnum);1475 GetVectorFromInputsx(&vertex_response,this, StringToEnumx(root),VertexEnum); 1476 1476 1477 1477 /*Now, average it onto the partition nodes: */ … … 1579 1579 1580 1580 /*Update Mask*/ 1581 InputUpdateFromVectorx( elements,nodes,vertices,loads,materials,parameters,serial_mask,HydrologydcMaskEplactiveEnum,NodeSIdEnum);1581 InputUpdateFromVectorx(this,serial_mask,HydrologydcMaskEplactiveEnum,NodeSIdEnum); 1582 1582 xDelete<IssmDouble>(serial_mask); 1583 1583 … … 1635 1635 1636 1636 /*Update Inputs*/ 1637 InputUpdateFromVectorx( elements,nodes,vertices,loads,materials,parameters,transferg,WaterTransferEnum,NodesEnum);1637 InputUpdateFromVectorx(this,transferg,WaterTransferEnum,NodesEnum); 1638 1638 delete transferg; 1639 1639 } -
issm/trunk-jpl/src/c/modules/ConstraintsStatex/ConstraintsStatex.cpp
r15771 r15849 8 8 #include "../../toolkits/toolkits.h" 9 9 10 void ConstraintsStatex(int* pconverged, int* pnum_unstable_constraints, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads,Materials* materials, Parameters* parameters){10 void ConstraintsStatex(int* pconverged, int* pnum_unstable_constraints,FemModel* femmodel){ 11 11 12 12 /*output: */ 13 int converged =0;14 int num_unstable_constraints =0;15 int min_mechanical_constraints =0;13 int converged = 0; 14 int num_unstable_constraints = 0; 15 int min_mechanical_constraints = 0; 16 16 int analysis_type; 17 17 … … 20 20 21 21 /*recover parameters: */ 22 parameters->FindParam(&min_mechanical_constraints,StressbalanceRiftPenaltyThresholdEnum);23 parameters->FindParam(&analysis_type,AnalysisTypeEnum);22 femmodel->parameters->FindParam(&min_mechanical_constraints,StressbalanceRiftPenaltyThresholdEnum); 23 femmodel->parameters->FindParam(&analysis_type,AnalysisTypeEnum); 24 24 25 25 /*Do we have penalties linked to rifts? In this case, run our special rifts penalty … … 31 31 32 32 #ifdef _HAVE_RIFTS_ 33 if (RiftIsPresent(loads,analysis_type)){34 RiftConstraintsState(&converged,&num_unstable_constraints, loads,min_mechanical_constraints,analysis_type);33 if(RiftIsPresent(femmodel->loads,analysis_type)){ 34 RiftConstraintsState(&converged,&num_unstable_constraints,femmodel->loads,min_mechanical_constraints,analysis_type); 35 35 } 36 36 #endif 37 37 #ifdef _HAVE_THERMAL_ 38 if(ThermalIsPresent( loads,analysis_type)){39 ThermalConstraintsState( loads,&converged,&num_unstable_constraints,analysis_type);38 if(ThermalIsPresent(femmodel->loads,analysis_type)){ 39 ThermalConstraintsState(femmodel->loads,&converged,&num_unstable_constraints,analysis_type); 40 40 } 41 41 #endif -
issm/trunk-jpl/src/c/modules/ConstraintsStatex/ConstraintsStatex.h
r15000 r15849 9 9 10 10 /* local prototypes: */ 11 int 12 int 13 void ConstraintsStatex(int* pconverged, int* pnum_unstable_constraints, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads,Materials* materials, Parameters* parameters);11 int ThermalIsPresent(Loads* loads,int analysis_type); 12 int RiftIsPresent(Loads* loads,int analysis_type); 13 void ConstraintsStatex(int* pconverged, int* pnum_unstable_constraints,FemModel* femmodel); 14 14 15 15 #endif /* _CONSTRAINTSSTATEX_H */ -
issm/trunk-jpl/src/c/modules/GetSolutionFromInputsx/GetSolutionFromInputsx.cpp
r15104 r15849 7 7 #include "../../toolkits/toolkits.h" 8 8 9 void GetSolutionFromInputsx( Vector<IssmDouble>** psolution, Elements* elements,Nodes* nodes, Vertices* vertices,Loads* loads, Materials* materials, Parameters* parameters){9 void GetSolutionFromInputsx(Vector<IssmDouble>** psolution,FemModel* femmodel){ 10 10 11 11 /*intermediary: */ 12 int gsize; 13 int i; 14 Element* element=NULL; 12 int gsize; 13 Element* element = NULL; 15 14 16 15 int configuration_type; … … 22 21 23 22 /*retrive parameters: */ 24 parameters->FindParam(&configuration_type,ConfigurationTypeEnum);23 femmodel->parameters->FindParam(&configuration_type,ConfigurationTypeEnum); 25 24 26 25 /*Get size of vector: */ 27 gsize= nodes->NumberOfDofs(configuration_type,GsetEnum);28 if 26 gsize=femmodel->nodes->NumberOfDofs(configuration_type,GsetEnum); 27 if(gsize==0) _error_("Allocating a Vec of size 0 as gsize=0 for configuration: " << EnumToStringx(configuration_type)); 29 28 30 29 /*Initialize solution: */ … … 32 31 33 32 /*Go through elements and plug solution: */ 34 for (i=0;i<elements->Size();i++){35 element=dynamic_cast<Element*>( elements->GetObjectByOffset(i));33 for(int i=0;i<femmodel->elements->Size();i++){ 34 element=dynamic_cast<Element*>(femmodel->elements->GetObjectByOffset(i)); 36 35 element->GetSolutionFromInputs(solution); 37 36 } … … 42 41 /*Assign output pointers:*/ 43 42 *psolution=solution; 44 45 43 } -
issm/trunk-jpl/src/c/modules/GetSolutionFromInputsx/GetSolutionFromInputsx.h
r15000 r15849 9 9 10 10 /* local prototypes: */ 11 void GetSolutionFromInputsx( Vector<IssmDouble>** psolution, Elements* elements,Nodes* nodes, Vertices* vertices,Loads* loads, Materials* materials, Parameters* parameters);11 void GetSolutionFromInputsx(Vector<IssmDouble>** psolution,FemModel* femmodel); 12 12 13 13 #endif /* _GETSOLUTIONFROMINPUTSXX_H */ -
issm/trunk-jpl/src/c/modules/GetVectorFromInputsx/GetVectorFromInputsx.cpp
r14999 r15849 7 7 #include "../../toolkits/toolkits.h" 8 8 9 void GetVectorFromInputsx( Vector<IssmDouble>** pvector, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters, int name,int type){9 void GetVectorFromInputsx( Vector<IssmDouble>** pvector,FemModel* femmodel,int name,int type){ 10 10 11 11 int i; … … 15 15 16 16 /*Allocate vector*/ 17 vector=new Vector<IssmDouble>( vertices->NumberOfVertices());17 vector=new Vector<IssmDouble>(femmodel->vertices->NumberOfVertices()); 18 18 19 19 /*Look up in elements*/ 20 for(i=0;i< elements->Size();i++){21 Element* element=dynamic_cast<Element*>( elements->GetObjectByOffset(i));20 for(i=0;i<femmodel->elements->Size();i++){ 21 Element* element=dynamic_cast<Element*>(femmodel->elements->GetObjectByOffset(i)); 22 22 element->GetVectorFromInputs(vector,name); 23 23 } 24 24 25 25 /*Look up in materials*/ 26 for(i=0;i< materials->Size();i++){27 Material* material=(Material*) materials->GetObjectByOffset(i);26 for(i=0;i<femmodel->materials->Size();i++){ 27 Material* material=(Material*)femmodel->materials->GetObjectByOffset(i); 28 28 material->GetVectorFromInputs(vector,name); 29 29 } … … 39 39 } 40 40 41 void GetVectorFromInputsx( IssmDouble** pvector, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,int name, int type){41 void GetVectorFromInputsx(IssmDouble** pvector,FemModel* femmodel,int name, int type){ 42 42 43 43 /*output: */ … … 47 47 Vector<IssmDouble>* vec_vector=NULL; 48 48 49 GetVectorFromInputsx( &vec_vector, elements,nodes, vertices, loads, materials, parameters, name,type);49 GetVectorFromInputsx(&vec_vector,femmodel,name,type); 50 50 vector=vec_vector->ToMPISerial(); 51 51 -
issm/trunk-jpl/src/c/modules/GetVectorFromInputsx/GetVectorFromInputsx.h
r15000 r15849 8 8 9 9 /* local prototypes: */ 10 void GetVectorFromInputsx( Vector<IssmDouble>** pvector, Elements* elements,Nodes* nodes, Vertices* vertices,Loads* loads, Materials* materials, Parameters* parameters,int name,int type);11 void GetVectorFromInputsx( IssmDouble** pvector, Elements* elements,Nodes* nodes, Vertices* vertices,Loads* loads, Materials* materials, Parameters* parameters,int name,int type);10 void GetVectorFromInputsx( Vector<IssmDouble>** pvector,FemModel* femmodel,int name,int type); 11 void GetVectorFromInputsx( IssmDouble** pvector,FemModel* femmodel,int name,int type); 12 12 13 13 #endif /* _GETVECTORFROMINPUTSXX_H */ -
issm/trunk-jpl/src/c/modules/InputToResultx/InputToResultx.cpp
r14999 r15849 8 8 #include "../../toolkits/toolkits.h" 9 9 10 void InputToResultx( Elements* elements,Nodes* nodes,Vertices* vertices,Loads* loads,Materials* materials,Parameters* parameters,int enum_type){10 void InputToResultx(FemModel* femmodel,int enum_type){ 11 11 12 12 /*intermediary:*/ 13 int step;14 IssmDouble 15 Element *element = NULL;13 int step; 14 IssmDouble time; 15 Element *element = NULL; 16 16 17 17 /*Get time and step*/ 18 parameters->FindParam(&step,StepEnum);19 parameters->FindParam(&time,TimeEnum);18 femmodel->parameters->FindParam(&step,StepEnum); 19 femmodel->parameters->FindParam(&time,TimeEnum); 20 20 21 21 /*Go through elemnets, and ask each element to transfer the enum_type input into the results dataset, with step and time information: */ 22 for(int i=0;i<elements->Size();i++){ 23 24 element=dynamic_cast<Element*>(elements->GetObjectByOffset(i)); 22 for(int i=0;i<femmodel->elements->Size();i++){ 23 element=dynamic_cast<Element*>(femmodel->elements->GetObjectByOffset(i)); 25 24 element->InputToResult(enum_type,step,time); 26 25 } -
issm/trunk-jpl/src/c/modules/InputToResultx/InputToResultx.h
r14996 r15849 9 9 10 10 /* local prototypes: */ 11 void InputToResultx( Elements* elements,Nodes* nodes,Vertices* vertices,Loads* loads,Materials* materials,Parameters* parameters,int enum_type);11 void InputToResultx(FemModel* femmodel,int enum_type); 12 12 13 13 #endif /* _INPUTTORESULTX_H */ -
issm/trunk-jpl/src/c/modules/InputUpdateFromConstantx/InputUpdateFromConstantx.cpp
r15104 r15849 7 7 #include "../../toolkits/toolkits.h" 8 8 9 void InputUpdateFromConstantx( Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,boolconstant, int name){9 void InputUpdateFromConstantx(FemModel* femmodel,bool constant, int name){ 10 10 11 11 int i; … … 13 13 14 14 /*Elements and loads drive the update: */ 15 for(i=0;i< elements->Size();i++){16 Element* element=dynamic_cast<Element*>( elements->GetObjectByOffset(i));15 for(i=0;i<femmodel->elements->Size();i++){ 16 Element* element=dynamic_cast<Element*>(femmodel->elements->GetObjectByOffset(i)); 17 17 element->InputUpdateFromConstant(constant,name); 18 18 } 19 19 20 for(i=0;i< loads->Size();i++){21 Load* load=(Load*) loads->GetObjectByOffset(i);20 for(i=0;i<femmodel->loads->Size();i++){ 21 Load* load=(Load*)femmodel->loads->GetObjectByOffset(i); 22 22 load->InputUpdateFromConstant(constant,name); 23 23 } 24 24 25 for(i=0;i< materials->Size();i++){26 Material* material=(Material*) materials->GetObjectByOffset(i);25 for(i=0;i<femmodel->materials->Size();i++){ 26 Material* material=(Material*)femmodel->materials->GetObjectByOffset(i); 27 27 material->InputUpdateFromConstant(constant,name); 28 28 } 29 29 } 30 void InputUpdateFromConstantx( Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,intconstant, int name){30 void InputUpdateFromConstantx(FemModel* femmodel,int constant, int name){ 31 31 32 32 int i; … … 34 34 35 35 /*Elements and loads drive the update: */ 36 for(i=0;i< elements->Size();i++){37 Element* element=dynamic_cast<Element*>( elements->GetObjectByOffset(i));36 for(i=0;i<femmodel->elements->Size();i++){ 37 Element* element=dynamic_cast<Element*>(femmodel->elements->GetObjectByOffset(i)); 38 38 element->InputUpdateFromConstant(constant,name); 39 39 } 40 40 41 for(i=0;i< loads->Size();i++){42 Load* load=(Load*) loads->GetObjectByOffset(i);41 for(i=0;i<femmodel->loads->Size();i++){ 42 Load* load=(Load*)femmodel->loads->GetObjectByOffset(i); 43 43 load->InputUpdateFromConstant(constant,name); 44 44 } 45 45 46 for(i=0;i< materials->Size();i++){47 Material* material=(Material*) materials->GetObjectByOffset(i);46 for(i=0;i<femmodel->materials->Size();i++){ 47 Material* material=(Material*)femmodel->materials->GetObjectByOffset(i); 48 48 material->InputUpdateFromConstant(constant,name); 49 49 } 50 50 } 51 void InputUpdateFromConstantx( Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,IssmDouble constant, int name){51 void InputUpdateFromConstantx(FemModel* femmodel,IssmDouble constant, int name){ 52 52 53 53 int i; … … 55 55 56 56 /*Elements and loads drive the update: */ 57 for(i=0;i< elements->Size();i++){58 Element* element=dynamic_cast<Element*>( elements->GetObjectByOffset(i));57 for(i=0;i<femmodel->elements->Size();i++){ 58 Element* element=dynamic_cast<Element*>(femmodel->elements->GetObjectByOffset(i)); 59 59 element->InputUpdateFromConstant(constant,name); 60 60 } 61 61 62 for(i=0;i< loads->Size();i++){63 Load* load=(Load*) loads->GetObjectByOffset(i);62 for(i=0;i<femmodel->loads->Size();i++){ 63 Load* load=(Load*)femmodel->loads->GetObjectByOffset(i); 64 64 load->InputUpdateFromConstant(constant,name); 65 65 } 66 66 67 for(i=0;i< materials->Size();i++){68 Material* material=(Material*) materials->GetObjectByOffset(i);67 for(i=0;i<femmodel->materials->Size();i++){ 68 Material* material=(Material*)femmodel->materials->GetObjectByOffset(i); 69 69 material->InputUpdateFromConstant(constant,name); 70 70 } -
issm/trunk-jpl/src/c/modules/InputUpdateFromConstantx/InputUpdateFromConstantx.h
r15000 r15849 9 9 10 10 /* local prototypes: */ 11 void InputUpdateFromConstantx( Elements* elements,Nodes* nodes, Vertices* vertices,Loads* loads, Materials* materials, Parameters* parameters, bool constant,int name);12 void InputUpdateFromConstantx( Elements* elements,Nodes* nodes, Vertices* vertices,Loads* loads, Materials* materials, Parameters* parameters, int constant,int name);13 void InputUpdateFromConstantx( Elements* elements,Nodes* nodes, Vertices* vertices,Loads* loads, Materials* materials, Parameters* parameters, IssmDouble constant,int name);11 void InputUpdateFromConstantx(FemModel* femmode,bool constant ,int name); 12 void InputUpdateFromConstantx(FemModel* femmode,int constant ,int name); 13 void InputUpdateFromConstantx(FemModel* femmode,IssmDouble constant,int name); 14 14 15 15 #endif /* _UPDATEINPUTSFROMCONSTANTXX_H */ -
issm/trunk-jpl/src/c/modules/InputUpdateFromDakotax/InputUpdateFromDakotax.cpp
r14999 r15849 10 10 #include "../InputUpdateFromVectorDakotax/InputUpdateFromVectorDakotax.h" 11 11 12 void InputUpdateFromDakotax(Elements* elements,Nodes* nodes,Vertices* vertices,Loads* loads,Materials* materials,Parameters* parameters,double* variables,char* *variables_descriptors,int numvariables){12 void InputUpdateFromDakotax(FemModel* femmodel,double* variables,char* *variables_descriptors,int numvariables){ 13 13 14 14 int i,j,k,l; … … 27 27 28 28 /*retrieve parameters: */ 29 parameters->FindParam(&npart,QmuNumberofpartitionsEnum);30 parameters->FindParam(&qmu_part,&dummy,QmuPartitionEnum);31 numberofvertices= vertices->NumberOfVertices();29 femmodel->parameters->FindParam(&npart,QmuNumberofpartitionsEnum); 30 femmodel->parameters->FindParam(&qmu_part,&dummy,QmuPartitionEnum); 31 numberofvertices=femmodel->vertices->NumberOfVertices(); 32 32 33 33 /*Go through all dakota descriptors, ex: "rho_ice","thermal_conductivity","thickness1","thickness2", etc ..., and … … 54 54 55 55 /*Now, pick up the parameter corresponding to root: */ 56 parameters->FindParam(¶meter,&nrows,&ncols,StringToEnumx(root));56 femmodel->parameters->FindParam(¶meter,&nrows,&ncols,StringToEnumx(root)); 57 57 58 58 /*We've got the parameter, we need to update it using qmu_part (a partitioning vector), … … 83 83 84 84 /*Update inputs using the parameter matrix: */ 85 InputUpdateFromMatrixDakotax( elements,nodes, vertices,loads, materials, parameters, parameter, nrows,ncols,StringToEnumx(root), VertexEnum);85 InputUpdateFromMatrixDakotax(femmodel, parameter, nrows,ncols,StringToEnumx(root), VertexEnum); 86 86 87 87 /*increment i to skip the distributed values just collected: */ … … 100 100 else{ 101 101 /*Ok, standard variable, just update inputs using the variable: */ 102 InputUpdateFromConstantx( elements,nodes, vertices,loads, materials, parameters,variables[i],StringToEnumx(descriptor));102 InputUpdateFromConstantx(femmodel,variables[i],StringToEnumx(descriptor)); 103 103 } 104 104 } -
issm/trunk-jpl/src/c/modules/InputUpdateFromDakotax/InputUpdateFromDakotax.h
r15000 r15849 8 8 #include "../../classes/classes.h" 9 9 10 void InputUpdateFromDakotax( Elements* elements,Nodes* nodes,Vertices* vertices,Loads* loads,Materials* materials,Parameters* parameters,double* variables,char* *variables_descriptors,int numvariables);10 void InputUpdateFromDakotax(FemModel* femmodel,double* variables,char* *variables_descriptors,int numvariables); 11 11 12 12 #endif /* _INPUTUPDATEFROMDAKOTAXX_H */ -
issm/trunk-jpl/src/c/modules/InputUpdateFromMatrixDakotax/InputUpdateFromMatrixDakotax.cpp
r14999 r15849 8 8 #include "../InputUpdateFromVectorDakotax/InputUpdateFromVectorDakotax.h" 9 9 10 void InputUpdateFromMatrixDakotax( Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,double* matrix,int nrows,int ncols, int name, int type){10 void InputUpdateFromMatrixDakotax(FemModel* femmodel,double* matrix,int nrows,int ncols, int name, int type){ 11 11 12 12 int i; 13 13 int numberofvertices; 14 14 15 numberofvertices= vertices->NumberOfVertices();15 numberofvertices=femmodel->vertices->NumberOfVertices(); 16 16 17 if((ncols==1) && (nrows==numberofvertices)) InputUpdateFromVectorDakotax( elements,nodes, vertices,loads, materials, parameters,matrix,name,type);17 if((ncols==1) && (nrows==numberofvertices)) InputUpdateFromVectorDakotax(femmodel,matrix,name,type); 18 18 else{ 19 19 20 20 /*Update elements, nodes, loads and materials from inputs: */ 21 for(i=0;i< elements->Size();i++){22 Element* element=dynamic_cast<Element*>( elements->GetObjectByOffset(i));21 for(i=0;i<femmodel->elements->Size();i++){ 22 Element* element=dynamic_cast<Element*>(femmodel->elements->GetObjectByOffset(i)); 23 23 element->InputUpdateFromMatrixDakota(matrix,nrows,ncols,name,type); 24 24 } 25 for(i=0;i< nodes->Size();i++){26 Node* node=(Node*) nodes->GetObjectByOffset(i);25 for(i=0;i<femmodel->nodes->Size();i++){ 26 Node* node=(Node*)femmodel->nodes->GetObjectByOffset(i); 27 27 node->InputUpdateFromMatrixDakota(matrix,nrows,ncols,name,type); 28 28 } 29 for(i=0;i< loads->Size();i++){30 Load* load=(Load*) loads->GetObjectByOffset(i);29 for(i=0;i<femmodel->loads->Size();i++){ 30 Load* load=(Load*)femmodel->loads->GetObjectByOffset(i); 31 31 load->InputUpdateFromMatrixDakota(matrix,nrows,ncols,name,type); 32 32 } 33 for(i=0;i< materials->Size();i++){34 Material* material=(Material*) materials->GetObjectByOffset(i);33 for(i=0;i<femmodel->materials->Size();i++){ 34 Material* material=(Material*)femmodel->materials->GetObjectByOffset(i); 35 35 material->InputUpdateFromMatrixDakota(matrix,nrows,ncols,name,type); 36 36 } 37 37 } 38 39 38 } -
issm/trunk-jpl/src/c/modules/InputUpdateFromMatrixDakotax/InputUpdateFromMatrixDakotax.h
r15000 r15849 9 9 10 10 /* local prototypes: */ 11 void InputUpdateFromMatrixDakotax( Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,double* matrix,int nrows,int ncols, int name, int type);11 void InputUpdateFromMatrixDakotax(FemModel* femmodel,double* matrix,int nrows,int ncols, int name, int type); 12 12 13 13 #endif /* _UPDATEINPUTSFROMMATRIXDAKOTAXX_H */ -
issm/trunk-jpl/src/c/modules/InputUpdateFromSolutionx/InputUpdateFromSolutionx.cpp
r14999 r15849 7 7 #include "../../toolkits/toolkits.h" 8 8 9 void InputUpdateFromSolutionx( Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,Vector<IssmDouble>* solution){ 10 11 IssmDouble* serial_solution=NULL; 9 void InputUpdateFromSolutionx(FemModel* femmodel,Vector<IssmDouble>* solution){ 12 10 13 11 /*Serialize solution, so that elements can index into it on every CPU: */ 14 serial_solution=solution->ToMPISerial();12 IssmDouble* serial_solution=solution->ToMPISerial(); 15 13 16 14 /*Call overloaded form of InputUpdateFromSolutionx: */ 17 InputUpdateFromSolutionx( elements, nodes, vertices, loads, materials, parameters,serial_solution);15 InputUpdateFromSolutionx(femmodel,serial_solution); 18 16 19 /* Free ressources:*/17 /*cleanup and return*/ 20 18 xDelete<IssmDouble>(serial_solution); 21 19 } 22 20 23 void InputUpdateFromSolutionx( Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,IssmDouble* solution){21 void InputUpdateFromSolutionx(FemModel* femmodel,IssmDouble* solution){ 24 22 25 /*Intermediary*/ 26 int i; 27 Element* element=NULL; 28 29 /*Elements drive the update: */ 30 for (i=0;i<elements->Size();i++){ 31 element=dynamic_cast<Element*>(elements->GetObjectByOffset(i)); 23 for(int i=0;i<femmodel->elements->Size();i++){ 24 Element* element=dynamic_cast<Element*>(femmodel->elements->GetObjectByOffset(i)); 32 25 element->InputUpdateFromSolution(solution); 33 26 } -
issm/trunk-jpl/src/c/modules/InputUpdateFromSolutionx/InputUpdateFromSolutionx.h
r15000 r15849 9 9 10 10 /* local prototypes: */ 11 void InputUpdateFromSolutionx( Elements* elements,Nodes* nodes, Vertices* vertices,Loads* loads, Materials* materials, Parameters* parameters,Vector<IssmDouble>* solution); 12 void InputUpdateFromSolutionx( Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,IssmDouble* solution); 13 14 //with timestep 15 void InputUpdateFromSolutionx( Elements* elements,Nodes* nodes, Vertices* vertices,Loads* loads, Materials* materials, Parameters* parameters,Vector<IssmDouble>* solution,int timestep); 16 void InputUpdateFromSolutionx( Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,IssmDouble* solution, int timestep); 11 void InputUpdateFromSolutionx(FemModel* femmodel,Vector<IssmDouble>* solution); 12 void InputUpdateFromSolutionx(FemModel* femmodel,IssmDouble* solution); 17 13 18 14 #endif /* _UPDATEINPUTSFROMSOLUTIONXX_H */ -
issm/trunk-jpl/src/c/modules/InputUpdateFromVectorDakotax/InputUpdateFromVectorDakotax.cpp
r14999 r15849 7 7 #include "../../toolkits/toolkits.h" 8 8 9 void InputUpdateFromVectorDakotax( Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,Vector<IssmDouble>* vector, int name, int type){9 void InputUpdateFromVectorDakotax(FemModel* femmodel,Vector<IssmDouble>* vector, int name, int type){ 10 10 11 double* serial_vector=NULL; 12 13 serial_vector=vector->ToMPISerial(); 14 15 InputUpdateFromVectorDakotax( elements,nodes, vertices, loads, materials, parameters,serial_vector,name, type); 11 IssmDouble* serial_vector=vector->ToMPISerial(); 12 InputUpdateFromVectorDakotax(femmodel,serial_vector,name, type); 16 13 17 14 /*Free ressources:*/ … … 19 16 } 20 17 21 void InputUpdateFromVectorDakotax( Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,double* vector, int name, int type){18 void InputUpdateFromVectorDakotax(FemModel* femmodel,IssmDouble* vector, int name, int type){ 22 19 23 20 int i; 24 21 25 22 /*Update elements, nodes, loads and materials from inputs: */ 26 for(i=0;i< elements->Size();i++){27 Element* element=dynamic_cast<Element*>( elements->GetObjectByOffset(i));23 for(i=0;i<femmodel->elements->Size();i++){ 24 Element* element=dynamic_cast<Element*>(femmodel->elements->GetObjectByOffset(i)); 28 25 element->InputUpdateFromVectorDakota(vector,name,type); 29 26 } 30 for(i=0;i< nodes->Size();i++){31 Node* node=(Node*) nodes->GetObjectByOffset(i);27 for(i=0;i<femmodel->nodes->Size();i++){ 28 Node* node=(Node*)femmodel->nodes->GetObjectByOffset(i); 32 29 node->InputUpdateFromVectorDakota(vector,name,type); 33 30 } 34 for(i=0;i< loads->Size();i++){35 Load* load=(Load*) loads->GetObjectByOffset(i);31 for(i=0;i<femmodel->loads->Size();i++){ 32 Load* load=(Load*)femmodel->loads->GetObjectByOffset(i); 36 33 load->InputUpdateFromVectorDakota(vector,name,type); 37 34 } 38 for(i=0;i< materials->Size();i++){39 Material* material=(Material*) materials->GetObjectByOffset(i);35 for(i=0;i<femmodel->materials->Size();i++){ 36 Material* material=(Material*)femmodel->materials->GetObjectByOffset(i); 40 37 material->InputUpdateFromVectorDakota(vector,name,type); 41 38 } 42 39 } 43 40 44 void InputUpdateFromVectorDakotax( Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,int* vector, int name, int type){41 void InputUpdateFromVectorDakotax(FemModel* femmodel,int* vector, int name, int type){ 45 42 46 43 int i; 47 44 48 45 /*Update elements, nodes, loads and materials from inputs: */ 49 for(i=0;i< elements->Size();i++){50 Element* element=dynamic_cast<Element*>( elements->GetObjectByOffset(i));46 for(i=0;i<femmodel->elements->Size();i++){ 47 Element* element=dynamic_cast<Element*>(femmodel->elements->GetObjectByOffset(i)); 51 48 element->InputUpdateFromVectorDakota(vector,name,type); 52 49 } 53 for(i=0;i< nodes->Size();i++){54 Node* node=(Node*) nodes->GetObjectByOffset(i);50 for(i=0;i<femmodel->nodes->Size();i++){ 51 Node* node=(Node*)femmodel->nodes->GetObjectByOffset(i); 55 52 node->InputUpdateFromVectorDakota(vector,name,type); 56 53 } 57 for(i=0;i< loads->Size();i++){58 Load* load=(Load*) loads->GetObjectByOffset(i);54 for(i=0;i<femmodel->loads->Size();i++){ 55 Load* load=(Load*)femmodel->loads->GetObjectByOffset(i); 59 56 load->InputUpdateFromVectorDakota(vector,name,type); 60 57 } 61 for(i=0;i< materials->Size();i++){62 Material* material=(Material*) materials->GetObjectByOffset(i);58 for(i=0;i<femmodel->materials->Size();i++){ 59 Material* material=(Material*)femmodel->materials->GetObjectByOffset(i); 63 60 material->InputUpdateFromVectorDakota(vector,name,type); 64 61 } … … 70 67 71 68 /*Update elements, nodes, loads and materials from inputs: */ 72 for(i=0;i< elements->Size();i++){73 Element* element=dynamic_cast<Element*>( elements->GetObjectByOffset(i));69 for(i=0;i<femmodel->elements->Size();i++){ 70 Element* element=dynamic_cast<Element*>(femmodel->elements->GetObjectByOffset(i)); 74 71 element->InputUpdateFromVectorDakota(vector,name,type); 75 72 } 76 for(i=0;i< nodes->Size();i++){77 Node* node=(Node*) nodes->GetObjectByOffset(i);73 for(i=0;i<femmodel->nodes->Size();i++){ 74 Node* node=(Node*)femmodel->nodes->GetObjectByOffset(i); 78 75 node->InputUpdateFromVectorDakota(vector,name,type); 79 76 } 80 for(i=0;i< loads->Size();i++){81 Load* load=(Load*) loads->GetObjectByOffset(i);77 for(i=0;i<femmodel->loads->Size();i++){ 78 Load* load=(Load*)femmodel->loads->GetObjectByOffset(i); 82 79 load->InputUpdateFromVectorDakota(vector,name,type); 83 80 } 84 for(i=0;i< materials->Size();i++){85 Material* material=(Material*) materials->GetObjectByOffset(i);81 for(i=0;i<femmodel->materials->Size();i++){ 82 Material* material=(Material*)femmodel->materials->GetObjectByOffset(i); 86 83 material->InputUpdateFromVectorDakota(vector,name,type); 87 84 } -
issm/trunk-jpl/src/c/modules/InputUpdateFromVectorDakotax/InputUpdateFromVectorDakotax.h
r15000 r15849 9 9 10 10 /* local prototypes: */ 11 void InputUpdateFromVectorDakotax( Elements* elements,Nodes* nodes, Vertices* vertices,Loads* loads, Materials* materials, Parameters* parameters,Vector<IssmDouble>* vector, int name,int type);12 void InputUpdateFromVectorDakotax( Elements* elements,Nodes* nodes, Vertices* vertices,Loads* loads, Materials* materials, Parameters* parameters,double* vector, int name,int type);13 void InputUpdateFromVectorDakotax( Elements* elements,Nodes* nodes, Vertices* vertices,Loads* loads, Materials* materials, Parameters* parameters,int* vector, int name,int type);14 void InputUpdateFromVectorDakotax( Elements* elements,Nodes* nodes, Vertices* vertices,Loads* loads, Materials* materials, Parameters* parameters,bool* vector, int name,int type);11 void InputUpdateFromVectorDakotax(FemModel* femmodel,Vector<IssmDouble>* vector, int name,int type); 12 void InputUpdateFromVectorDakotax(FemModel* femmodel,IssmDouble* vector, int name,int type); 13 void InputUpdateFromVectorDakotax(FemModel* femmodel,int* vector, int name,int type); 14 void InputUpdateFromVectorDakotax(FemModel* femmodel,bool* vector, int name,int type); 15 15 16 16 #endif /* _UPDATEINPUTSFROMVECTORDAKOTAXX_H */ -
issm/trunk-jpl/src/c/modules/InputUpdateFromVectorx/InputUpdateFromVectorx.cpp
r14999 r15849 7 7 #include "../../toolkits/toolkits.h" 8 8 9 void InputUpdateFromVectorx( Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,Vector<IssmDouble>* vector, int name, int type){9 void InputUpdateFromVectorx(FemModel* femmodel,Vector<IssmDouble>* vector, int name, int type){ 10 10 11 IssmDouble* serial_vector=NULL; 12 13 serial_vector=vector->ToMPISerial(); 14 15 InputUpdateFromVectorx( elements,nodes, vertices, loads, materials, parameters,serial_vector,name, type); 16 17 /*Free ressources:*/ 11 IssmDouble* serial_vector=vector->ToMPISerial(); 12 InputUpdateFromVectorx(femmodel,serial_vector,name,type); 18 13 xDelete<IssmDouble>(serial_vector); 19 14 } 20 15 21 void InputUpdateFromVectorx( Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,IssmDouble* vector, int name, int type){16 void InputUpdateFromVectorx(FemModel* femmodel,IssmDouble* vector, int name, int type){ 22 17 23 18 int i; 24 19 25 20 /*Update elements, nodes, loads and materials from inputs: */ 26 for(i=0;i< elements->Size();i++){27 Element* element=dynamic_cast<Element*>( elements->GetObjectByOffset(i));21 for(i=0;i<femmodel->elements->Size();i++){ 22 Element* element=dynamic_cast<Element*>(femmodel->elements->GetObjectByOffset(i)); 28 23 element->InputUpdateFromVector(vector,name,type); 29 24 } 30 for(i=0;i< nodes->Size();i++){31 Node* node=(Node*) nodes->GetObjectByOffset(i);25 for(i=0;i<femmodel->nodes->Size();i++){ 26 Node* node=(Node*)femmodel->nodes->GetObjectByOffset(i); 32 27 node->InputUpdateFromVector(vector,name,type); 33 28 } 34 for(i=0;i< loads->Size();i++){35 Load* load=(Load*) loads->GetObjectByOffset(i);29 for(i=0;i<femmodel->loads->Size();i++){ 30 Load* load=(Load*)femmodel->loads->GetObjectByOffset(i); 36 31 load->InputUpdateFromVector(vector,name,type); 37 32 } 38 for(i=0;i< materials->Size();i++){39 Material* material=(Material*) materials->GetObjectByOffset(i);33 for(i=0;i<femmodel->materials->Size();i++){ 34 Material* material=(Material*)femmodel->materials->GetObjectByOffset(i); 40 35 material->InputUpdateFromVector(vector,name,type); 41 36 } 42 37 } 43 38 44 void InputUpdateFromVectorx( Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,int* vector, int name, int type){39 void InputUpdateFromVectorx(FemModel* femmodel,int* vector, int name, int type){ 45 40 46 41 int i; 47 42 48 43 /*Update elements, nodes, loads and materials from inputs: */ 49 for(i=0;i< elements->Size();i++){50 Element* element=dynamic_cast<Element*>( elements->GetObjectByOffset(i));44 for(i=0;i<femmodel->elements->Size();i++){ 45 Element* element=dynamic_cast<Element*>(femmodel->elements->GetObjectByOffset(i)); 51 46 element->InputUpdateFromVector(vector,name,type); 52 47 } 53 for(i=0;i< nodes->Size();i++){54 Node* node=(Node*) nodes->GetObjectByOffset(i);48 for(i=0;i<femmodel->nodes->Size();i++){ 49 Node* node=(Node*)femmodel->nodes->GetObjectByOffset(i); 55 50 node->InputUpdateFromVector(vector,name,type); 56 51 } 57 for(i=0;i< loads->Size();i++){58 Load* load=(Load*) loads->GetObjectByOffset(i);52 for(i=0;i<femmodel->loads->Size();i++){ 53 Load* load=(Load*)femmodel->loads->GetObjectByOffset(i); 59 54 load->InputUpdateFromVector(vector,name,type); 60 55 } 61 for(i=0;i< materials->Size();i++){62 Material* material=(Material*) materials->GetObjectByOffset(i);56 for(i=0;i<femmodel->materials->Size();i++){ 57 Material* material=(Material*)femmodel->materials->GetObjectByOffset(i); 63 58 material->InputUpdateFromVector(vector,name,type); 64 59 } 65 60 } 66 61 67 void InputUpdateFromVectorx( Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,bool* vector, int name, int type){62 void InputUpdateFromVectorx(FemModel* femmodel,bool* vector, int name, int type){ 68 63 69 64 int i; 70 65 71 66 /*Update elements, nodes, loads and materials from inputs: */ 72 for(i=0;i< elements->Size();i++){73 Element* element=dynamic_cast<Element*>( elements->GetObjectByOffset(i));67 for(i=0;i<femmodel->elements->Size();i++){ 68 Element* element=dynamic_cast<Element*>(femmodel->elements->GetObjectByOffset(i)); 74 69 element->InputUpdateFromVector(vector,name,type); 75 70 } 76 for(i=0;i< nodes->Size();i++){77 Node* node=(Node*) nodes->GetObjectByOffset(i);71 for(i=0;i<femmodel->nodes->Size();i++){ 72 Node* node=(Node*)femmodel->nodes->GetObjectByOffset(i); 78 73 node->InputUpdateFromVector(vector,name,type); 79 74 } 80 for(i=0;i< loads->Size();i++){81 Load* load=(Load*) loads->GetObjectByOffset(i);75 for(i=0;i<femmodel->loads->Size();i++){ 76 Load* load=(Load*)femmodel->loads->GetObjectByOffset(i); 82 77 load->InputUpdateFromVector(vector,name,type); 83 78 } 84 for(i=0;i< materials->Size();i++){85 Material* material=(Material*) materials->GetObjectByOffset(i);79 for(i=0;i<femmodel->materials->Size();i++){ 80 Material* material=(Material*)femmodel->materials->GetObjectByOffset(i); 86 81 material->InputUpdateFromVector(vector,name,type); 87 82 } -
issm/trunk-jpl/src/c/modules/InputUpdateFromVectorx/InputUpdateFromVectorx.h
r15000 r15849 9 9 10 10 /* local prototypes: */ 11 void InputUpdateFromVectorx( Elements* elements,Nodes* nodes, Vertices* vertices,Loads* loads, Materials* materials, Parameters* parameters,Vector<IssmDouble>* vector, int name,int type);12 void InputUpdateFromVectorx( Elements* elements,Nodes* nodes, Vertices* vertices,Loads* loads, Materials* materials, Parameters* parameters,IssmDouble* vector, int name,int type);13 void InputUpdateFromVectorx( Elements* elements,Nodes* nodes, Vertices* vertices,Loads* loads, Materials* materials, Parameters* parameters,int* vector, int name,int type);14 void InputUpdateFromVectorx( Elements* elements,Nodes* nodes, Vertices* vertices,Loads* loads, Materials* materials, Parameters* parameters,bool* vector, int name,int type);11 void InputUpdateFromVectorx(FemModel* femmodel,Vector<IssmDouble>* vector, int name,int type); 12 void InputUpdateFromVectorx(FemModel* femmodel,IssmDouble* vector, int name,int type); 13 void InputUpdateFromVectorx(FemModel* femmodel,int* vector, int name,int type); 14 void InputUpdateFromVectorx(FemModel* femmodel,bool* vector, int name,int type); 15 15 16 16 #endif /* _UPDATEINPUTSFROMVECTORXX_H */ -
issm/trunk-jpl/src/c/modules/ResetConstraintsx/ResetConstraintsx.cpp
r15384 r15849 14 14 #include "../ConstraintsStatex/ConstraintsStatex.h" 15 15 16 void ResetConstraintsx( Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads,Materials* materials, Parameters* parameters){16 void ResetConstraintsx(FemModel* femmodel){ 17 17 18 /*output: */19 int analysis_type;20 18 21 19 /*Display message*/ … … 23 21 24 22 /*recover parameters: */ 25 parameters->FindParam(&analysis_type,AnalysisTypeEnum); 23 int analysis_type; 24 femmodel->parameters->FindParam(&analysis_type,AnalysisTypeEnum); 26 25 27 26 /*Do we have penalties linked to rifts? In this case, run our special rifts penalty 28 27 * management routine, otherwise, skip : */ 29 28 #ifdef _HAVE_RIFTS_ 30 if (RiftIsPresent(loads,analysis_type)){29 if(RiftIsPresent(femmodel->loads,analysis_type)){ 31 30 _error_("rift constraints reset not supported yet!"); 32 31 } 33 32 #endif 34 33 #ifdef _HAVE_THERMAL_ 35 if(ThermalIsPresent( loads,analysis_type)){36 ThermalConstraintsReset( loads,analysis_type);34 if(ThermalIsPresent(femmodel->loads,analysis_type)){ 35 ThermalConstraintsReset(femmodel->loads,analysis_type); 37 36 } 38 37 #endif 39 40 38 } -
issm/trunk-jpl/src/c/modules/ResetConstraintsx/ResetConstraintsx.h
r15000 r15849 9 9 10 10 /* local prototypes: */ 11 void 12 void ResetConstraintsx( Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads,Materials* materials, Parameters* parameters);11 void ThermalConstraintsReset(Loads* loads, int configuration_type); 12 void ResetConstraintsx(FemModel* femmodel); 13 13 14 14 #endif /* _RESETCONSTRAINTSX_H */ -
issm/trunk-jpl/src/c/modules/SurfaceAreax/SurfaceAreax.cpp
r15838 r15849 9 9 #include "../InputUpdateFromConstantx/InputUpdateFromConstantx.h" 10 10 11 void SurfaceAreax( IssmDouble* pS, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters){11 void SurfaceAreax(IssmDouble* pS,FemModel* femmodel){ 12 12 13 13 /*Intermediary*/ 14 14 Element* element=NULL; 15 int i;16 15 17 16 /*output: */ 18 IssmDouble S =0;17 IssmDouble S = 0.; 19 18 IssmDouble S_sum; 20 19 21 20 /*Compute gradients: */ 22 for (i=0;i<elements->Size();i++){23 element=dynamic_cast<Element*>( elements->GetObjectByOffset(i));21 for(int i=0;i<femmodel->elements->Size();i++){ 22 element=dynamic_cast<Element*>(femmodel->elements->GetObjectByOffset(i)); 24 23 S+=element->SurfaceArea(); 25 24 } … … 31 30 32 31 /*add surface area to element inputs:*/ 33 InputUpdateFromConstantx( elements,nodes,vertices,loads,materials,parameters,S,SurfaceAreaEnum);32 InputUpdateFromConstantx(femmodel,S,SurfaceAreaEnum); 34 33 35 34 /*Assign output pointers: */ -
issm/trunk-jpl/src/c/modules/SurfaceAreax/SurfaceAreax.h
r15000 r15849 9 9 10 10 /* local prototypes: */ 11 void SurfaceAreax( IssmDouble* pS, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters);11 void SurfaceAreax(IssmDouble* pS,FemModel* femmodel); 12 12 13 13 #endif /* _SURFACEAREAX_H */ -
issm/trunk-jpl/src/c/modules/SurfaceAverageVelMisfitx/SurfaceAverageVelMisfitx.cpp
r15838 r15849 9 9 #include "../SurfaceAreax/SurfaceAreax.h" 10 10 11 void SurfaceAverageVelMisfitx( IssmDouble* pJ, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters,int weight_index){11 void SurfaceAverageVelMisfitx(IssmDouble* pJ,FemModel* femmodel,int weight_index){ 12 12 13 13 /*Intermediary*/ 14 int i;15 14 Element* element=NULL; 16 15 17 16 /*output: */ 18 IssmDouble J =0;17 IssmDouble J = 0.; 19 18 IssmDouble J_sum; 20 19 21 20 /*Compute surface area and add to elements inputs */ 22 SurfaceAreax(NULL, elements,nodes,vertices, loads,materials,parameters);21 SurfaceAreax(NULL,femmodel); 23 22 24 23 /*Compute Misfit: */ 25 for (i=0;i<elements->Size();i++){26 element=dynamic_cast<Element*>( elements->GetObjectByOffset(i));24 for(int i=0;i<femmodel->elements->Size();i++){ 25 element=dynamic_cast<Element*>(femmodel->elements->GetObjectByOffset(i)); 27 26 J+=element->SurfaceAverageVelMisfit(weight_index); 28 27 } -
issm/trunk-jpl/src/c/modules/SurfaceAverageVelMisfitx/SurfaceAverageVelMisfitx.h
r15130 r15849 9 9 10 10 /* local prototypes: */ 11 void SurfaceAverageVelMisfitx( IssmDouble* pJ, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,int weight_index);11 void SurfaceAverageVelMisfitx(IssmDouble* pJ,FemModel* femmodel,int weight_index); 12 12 13 13 #endif -
issm/trunk-jpl/src/c/solutionsequences/solutionsequence_adjoint_linear.cpp
r15002 r15849 31 31 Solverx(&uf, Kff, pf, NULL, df, femmodel->parameters); delete Kff; delete pf; delete df; 32 32 Mergesolutionfromftogx(&ug, uf,ys,femmodel->nodes,femmodel->parameters,true); delete ys; //true means spc0 33 InputUpdateFromSolutionx(femmodel ->elements,femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters,ug);33 InputUpdateFromSolutionx(femmodel,ug); 34 34 delete ug; delete uf; 35 35 } -
issm/trunk-jpl/src/c/solutionsequences/solutionsequence_hydro_nonlinear.cpp
r15643 r15849 50 50 /*Retrieve inputs as the initial state for the non linear iteration*/ 51 51 //femmodel->SetCurrentConfiguration(HydrologyDCInefficientAnalysisEnum); 52 GetSolutionFromInputsx(&ug_sed, femmodel->elements, femmodel->nodes, femmodel->vertices,femmodel->loads, femmodel->materials, femmodel->parameters);52 GetSolutionFromInputsx(&ug_sed,femmodel); 53 53 54 54 if(isefficientlayer) { 55 55 femmodel->SetCurrentConfiguration(HydrologyDCEfficientAnalysisEnum); 56 GetSolutionFromInputsx(&ug_epl, femmodel->elements, femmodel->nodes, femmodel->vertices,femmodel->loads, femmodel->materials, femmodel->parameters);56 GetSolutionFromInputsx(&ug_epl,femmodel); 57 57 } 58 58 … … 70 70 71 71 femmodel->SetCurrentConfiguration(HydrologyDCInefficientAnalysisEnum); 72 InputUpdateFromConstantx(femmodel ->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,true,ResetPenaltiesEnum);73 InputUpdateFromConstantx(femmodel ->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,false,ConvergedEnum);72 InputUpdateFromConstantx(femmodel,true,ResetPenaltiesEnum); 73 InputUpdateFromConstantx(femmodel,false,ConvergedEnum); 74 74 femmodel->UpdateConstraintsx(); 75 75 femmodel->parameters->SetParam(HydrologySedimentEnum,HydrologyLayerEnum); … … 90 90 delete ug_sed; 91 91 Mergesolutionfromftogx(&ug_sed,uf_sed,ys,femmodel->nodes,femmodel->parameters); delete ys; 92 InputUpdateFromSolutionx(femmodel ->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,ug_sed);93 ConstraintsStatex(&constraints_converged,&num_unstable_constraints, femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters);92 InputUpdateFromSolutionx(femmodel,ug_sed); 93 ConstraintsStatex(&constraints_converged,&num_unstable_constraints,femmodel); 94 94 95 95 if (!sedconverged){ … … 104 104 if(sedconverged){ 105 105 femmodel->parameters->SetParam(sediment_kmax,HydrologySedimentKmaxEnum); 106 InputUpdateFromConstantx(femmodel ->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,sedconverged,ConvergedEnum);107 InputUpdateFromSolutionx(femmodel ->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,ug_sed);108 InputUpdateFromConstantx(femmodel ->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,sediment_kmax,HydrologySedimentKmaxEnum);106 InputUpdateFromConstantx(femmodel,sedconverged,ConvergedEnum); 107 InputUpdateFromSolutionx(femmodel,ug_sed); 108 InputUpdateFromConstantx(femmodel,sediment_kmax,HydrologySedimentKmaxEnum); 109 109 break; 110 110 } … … 114 114 if(isefficientlayer){ 115 115 femmodel->SetCurrentConfiguration(HydrologyDCEfficientAnalysisEnum); 116 InputUpdateFromConstantx(femmodel ->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,true,ResetPenaltiesEnum);117 InputUpdateFromConstantx(femmodel ->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,false,ConvergedEnum);116 InputUpdateFromConstantx(femmodel,true,ResetPenaltiesEnum); 117 InputUpdateFromConstantx(femmodel,false,ConvergedEnum); 118 118 femmodel->HydrologyEPLupdateDomainx(); 119 119 femmodel->parameters->SetParam(HydrologyEfficientEnum,HydrologyLayerEnum); … … 134 134 delete ug_epl; 135 135 Mergesolutionfromftogx(&ug_epl,uf_epl,ys,femmodel->nodes,femmodel->parameters); delete ys; 136 InputUpdateFromSolutionx(femmodel ->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,ug_epl);137 ConstraintsStatex(&constraints_converged,&num_unstable_constraints, femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters);136 InputUpdateFromSolutionx(femmodel,ug_epl); 137 ConstraintsStatex(&constraints_converged,&num_unstable_constraints,femmodel); 138 138 femmodel->HydrologyEPLupdateDomainx(); 139 139 … … 148 148 149 149 if(eplconverged){ 150 InputUpdateFromConstantx(femmodel ->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,eplconverged,ConvergedEnum);151 InputUpdateFromConstantx(femmodel ->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,sediment_kmax,MeltingOffsetEnum);152 InputUpdateFromSolutionx(femmodel ->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,ug_epl);150 InputUpdateFromConstantx(femmodel,eplconverged,ConvergedEnum); 151 InputUpdateFromConstantx(femmodel,sediment_kmax,MeltingOffsetEnum); 152 InputUpdateFromSolutionx(femmodel,ug_epl); 153 153 break; 154 154 } … … 207 207 } 208 208 209 InputUpdateFromSolutionx(femmodel ->elements,femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters,ug_sed);210 if(isefficientlayer)InputUpdateFromSolutionx(femmodel ->elements,femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters,ug_epl);209 InputUpdateFromSolutionx(femmodel,ug_sed); 210 if(isefficientlayer)InputUpdateFromSolutionx(femmodel,ug_epl); 211 211 212 212 /*Free ressources: */ -
issm/trunk-jpl/src/c/solutionsequences/solutionsequence_linear.cpp
r15002 r15849 35 35 //#endif 36 36 Mergesolutionfromftogx(&ug, uf,ys,femmodel->nodes,femmodel->parameters);delete uf; delete ys; 37 InputUpdateFromSolutionx( femmodel->elements,femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters,ug);37 InputUpdateFromSolutionx(femmodel,ug); 38 38 delete ug; 39 39 } -
issm/trunk-jpl/src/c/solutionsequences/solutionsequence_newton.cpp
r15771 r15849 42 42 43 43 /*Start non-linear iteration using input velocity: */ 44 GetSolutionFromInputsx(&ug,femmodel ->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters);44 GetSolutionFromInputsx(&ug,femmodel); 45 45 Reducevectorgtofx(&uf,ug,femmodel->nodes,femmodel->parameters); 46 46 47 47 //Update once again the solution to make sure that vx and vxold are similar (for next step in transient or steadystate) 48 InputUpdateFromConstantx(femmodel ->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,converged,ConvergedEnum);49 InputUpdateFromSolutionx(femmodel ->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,ug);48 InputUpdateFromConstantx(femmodel,converged,ConvergedEnum); 49 InputUpdateFromSolutionx(femmodel,ug); 50 50 51 51 for(;;){ … … 61 61 Solverx(&uf,Kff,pf,old_uf,df,femmodel->parameters);delete df; delete Kff; delete pf; 62 62 Mergesolutionfromftogx(&ug,uf,ys,femmodel->nodes,femmodel->parameters);delete ys; 63 InputUpdateFromSolutionx(femmodel ->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,ug);63 InputUpdateFromSolutionx(femmodel,ug); 64 64 delete old_ug;old_ug=ug; 65 65 delete old_uf;old_uf=uf; … … 80 80 uf->AXPY(duf, 1.0); delete duf; 81 81 Mergesolutionfromftogx(&ug,uf,ys,femmodel->nodes,femmodel->parameters);delete ys; 82 InputUpdateFromSolutionx(femmodel ->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,ug);82 InputUpdateFromSolutionx(femmodel,ug); 83 83 84 84 /*Check convergence*/ -
issm/trunk-jpl/src/c/solutionsequences/solutionsequence_nonlinear.cpp
r15771 r15849 47 47 48 48 /*Start non-linear iteration using input velocity: */ 49 GetSolutionFromInputsx(&ug, femmodel->elements, femmodel->nodes, femmodel->vertices,femmodel->loads, femmodel->materials, femmodel->parameters);49 GetSolutionFromInputsx(&ug,femmodel); 50 50 Reducevectorgtofx(&uf, ug, femmodel->nodes,femmodel->parameters); 51 51 52 52 //Update once again the solution to make sure that vx and vxold are similar (for next step in transient or steadystate) 53 InputUpdateFromConstantx(femmodel ->elements,femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters,converged,ConvergedEnum);54 InputUpdateFromSolutionx(femmodel ->elements,femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters,ug);53 InputUpdateFromConstantx(femmodel,converged,ConvergedEnum); 54 InputUpdateFromSolutionx(femmodel,ug); 55 55 56 56 for(;;){ … … 67 67 68 68 convergence(&converged,Kff,pf,uf,old_uf,femmodel->parameters); delete Kff; delete pf; delete df; 69 InputUpdateFromConstantx( femmodel->elements,femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters,converged,ConvergedEnum);70 InputUpdateFromSolutionx( femmodel->elements,femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters,ug);69 InputUpdateFromConstantx(femmodel,converged,ConvergedEnum); 70 InputUpdateFromSolutionx(femmodel,ug); 71 71 72 ConstraintsStatex(&constraints_converged, &num_unstable_constraints, femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters);72 ConstraintsStatex(&constraints_converged,&num_unstable_constraints,femmodel); 73 73 if(VerboseConvergence()) _printf0_(" number of unstable constraints: " << num_unstable_constraints << "\n"); 74 74 … … 93 93 _printf0_(" maximum number of nonlinear iterations (" << max_nonlinear_iterations << ") exceeded\n"); 94 94 converged=true; 95 InputUpdateFromConstantx( femmodel->elements,femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters,converged,ConvergedEnum);96 InputUpdateFromSolutionx( femmodel->elements,femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters,ug);95 InputUpdateFromConstantx(femmodel,converged,ConvergedEnum); 96 InputUpdateFromSolutionx(femmodel,ug); 97 97 bool max_iteration_state=true; 98 98 int tempStep=1; -
issm/trunk-jpl/src/c/solutionsequences/solutionsequence_stokescoupling_nonlinear.cpp
r15771 r15849 44 44 /*First get ug_horiz:*/ 45 45 femmodel->SetCurrentConfiguration(StressbalanceAnalysisEnum); 46 GetSolutionFromInputsx(&ug_horiz, femmodel->elements, femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters);46 GetSolutionFromInputsx(&ug_horiz,femmodel); 47 47 Reducevectorgtofx(&uf_horiz, ug_horiz, femmodel->nodes,femmodel->parameters); 48 48 … … 54 54 55 55 //Update once again the solution to make sure that vx and vxold are similar (for next step in transient or steadystate) 56 InputUpdateFromSolutionx(femmodel ->elements,femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters,ug_horiz);56 InputUpdateFromSolutionx(femmodel,ug_horiz); 57 57 delete ug_horiz; 58 58 … … 66 66 Solverx(&uf_horiz, Kff_horiz, pf_horiz, old_uf_horiz, df_horiz,femmodel->parameters); 67 67 Mergesolutionfromftogx(&ug_horiz, uf_horiz,ys,femmodel->nodes,femmodel->parameters); delete ys; 68 InputUpdateFromSolutionx( femmodel->elements,femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters,ug_horiz);68 InputUpdateFromSolutionx(femmodel,ug_horiz); 69 69 70 70 convergence(&converged,Kff_horiz,pf_horiz,uf_horiz,old_uf_horiz,femmodel->parameters); delete Kff_horiz; delete pf_horiz; delete df_horiz; … … 82 82 delete uf_vert; 83 83 delete ys; 84 InputUpdateFromSolutionx( femmodel->elements,femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters,ug_vert);84 InputUpdateFromSolutionx(femmodel,ug_vert); 85 85 delete ug_vert; 86 86 -
issm/trunk-jpl/src/c/solutionsequences/solutionsequence_thermal_nonlinear.cpp
r15457 r15849 41 41 converged=false; 42 42 43 InputUpdateFromConstantx(femmodel ->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,true,ResetPenaltiesEnum);44 InputUpdateFromConstantx(femmodel ->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,false,ConvergedEnum);43 InputUpdateFromConstantx(femmodel,true,ResetPenaltiesEnum); 44 InputUpdateFromConstantx(femmodel,false,ConvergedEnum); 45 45 femmodel->UpdateConstraintsx(); 46 46 … … 54 54 delete Kff;delete pf;delete tg; delete df; 55 55 Mergesolutionfromftogx(&tg, tf,ys,femmodel->nodes,femmodel->parameters); delete ys; 56 InputUpdateFromSolutionx(femmodel ->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,tg);56 InputUpdateFromSolutionx(femmodel,tg); 57 57 58 ConstraintsStatex(&constraints_converged, &num_unstable_constraints, femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters);58 ConstraintsStatex(&constraints_converged,&num_unstable_constraints,femmodel); 59 59 60 60 if (!converged){ … … 68 68 count++; 69 69 70 InputUpdateFromConstantx( femmodel->elements,femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters,converged,ConvergedEnum);70 InputUpdateFromConstantx(femmodel,converged,ConvergedEnum); 71 71 72 72 if(converged)break; 73 73 } 74 74 75 InputUpdateFromSolutionx(femmodel ->elements,femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters,tg);76 InputUpdateFromConstantx( femmodel->elements,femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters,melting_offset,MeltingOffsetEnum);75 InputUpdateFromSolutionx(femmodel,tg); 76 InputUpdateFromConstantx(femmodel,melting_offset,MeltingOffsetEnum); 77 77 78 78 /*Free ressources: */
Note:
See TracChangeset
for help on using the changeset viewer.