Changeset 4156
- Timestamp:
- 06/23/10 09:36:41 (15 years ago)
- Location:
- issm/trunk/src/c
- Files:
-
- 1 deleted
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk/src/c/Makefile.am
r4143 r4156 511 511 ./modules/Mergesolutionfromftogx/Mergesolutionfromftogx.cpp\ 512 512 ./modules/Mergesolutionfromftogx/Mergesolutionfromftogx.h\ 513 ./modules/ProcessParamsx/ProcessParamsx.cpp\514 ./modules/ProcessParamsx/ProcessParamsx.h\515 513 ./modules/PropagateFlagsFromConnectivityx/PropagateFlagsFromConnectivityx.cpp\ 516 514 ./modules/PropagateFlagsFromConnectivityx/PropagateFlagsFromConnectivityx.h\ … … 1031 1029 ./modules/Mergesolutionfromftogx/Mergesolutionfromftogx.cpp\ 1032 1030 ./modules/Mergesolutionfromftogx/Mergesolutionfromftogx.h\ 1033 ./modules/ProcessParamsx/ProcessParamsx.cpp\1034 ./modules/ProcessParamsx/ProcessParamsx.h\1035 1031 ./modules/Qmux/Qmux.h\ 1036 1032 ./modules/Qmux/Qmux.cpp\ -
issm/trunk/src/c/modules/ComputePressurex/ComputePressurex.cpp
r4043 r4156 21 21 22 22 /*Recover numberofnodes: */ 23 parameters->FindParam(&numberofnodes,NumberOfNodesEnum);23 nodes->NumberOfNodes(&numberofnodes); 24 24 25 25 /*Allocate p_g on numberofnodes (only 1 dof): */ -
issm/trunk/src/c/modules/FieldAverageOntoVerticesx/FieldAverageOntoVerticesx.cpp
r3969 r4156 24 24 25 25 /*Initialize intermediary*/ 26 found=parameters->FindParam(&numberofvertices,NumberOfVerticesEnum);26 vertices->NumberOfVertices(&numberofvertices); 27 27 connectivity=NewVec(numberofvertices); 28 28 fieldsum =NewVec(numberofvertices); -
issm/trunk/src/c/modules/Gradjx/Gradjx.cpp
r4055 r4156 24 24 /*retrieve some parameters: */ 25 25 parameters->FindParam(&dim,DimEnum); 26 parameters->FindParam(&numberofvertices,NumberOfVerticesEnum);26 vertices->NumberOfVertices(&numberofvertices); 27 27 28 28 /*Compute gradients: */ -
issm/trunk/src/c/modules/NodesDofx/NodesDofx.cpp
r4009 r4156 13 13 14 14 int noerr=1; 15 int found=0; 15 16 int i; 16 int found=0;17 17 18 18 /*intermediary: */ … … 21 21 22 22 /*First, recover number of vertices and nodes from parameters: */ 23 found=parameters->FindParam(&numberofnodes,NumberOfNodesEnum); 24 if(!found)ISSMERROR(" could not find numberofnodes in parameters"); 23 nodes->NumberOfNodes(&numberofnodes); 25 24 26 25 /*Recover number of dofs per node: */ -
issm/trunk/src/c/modules/UpdateGeometryx/UpdateGeometryx.cpp
r4152 r4156 12 12 void UpdateGeometryx( DataSet* elements, DataSet* nodes, DataSet* vertices,DataSet* loads, DataSet* materials, Parameters* parameters){ 13 13 14 /*Intermediary*/ 14 15 int i; 15 int dof; 16 17 ISSMERROR(" not support yet! needs to be redone at the element level!"); 18 19 /*vectorized inputs: */ 20 Vec vec_newthickness=NULL; 21 Vec vec_bed=NULL; 22 Vec vec_surface=NULL; 23 double* newthickness=NULL; 24 double* bed=NULL; 25 double* surface=NULL; 26 27 /*objects: */ 28 Node* node=NULL; 29 Object* object=NULL; 30 Matpar* matpar=NULL; 31 32 /*parameters: */ 33 double h,b,s; 34 double rho_ice,rho_water; 16 Element* element=NULL; 35 17 36 18 /*First, get elements and loads configured: */ 37 elements->Configure(elements,loads, nodes,vertices, materials,parameters); 38 nodes->Configure(elements,loads, nodes,vertices, materials,parameters); 39 materials->Configure(elements, loads, nodes,vertices, materials,parameters); 40 loads->Configure(elements, loads, nodes,vertices, materials,parameters); 19 elements-> Configure(elements,loads, nodes,vertices, materials,parameters); 20 loads-> Configure(elements,loads, nodes,vertices, materials,parameters); 21 nodes-> Configure(elements,loads, nodes,vertices, materials,parameters); 41 22 parameters->Configure(elements,loads, nodes,vertices, materials,parameters); 42 23 43 /*retrieve inputs: */ 44 GetVectorFromInputsx( &vec_newthickness, elements, nodes, vertices, loads, materials, parameters, ThicknessEnum,VertexEnum); 45 GetVectorFromInputsx( &vec_bed, elements, nodes, vertices, loads, materials, parameters, ThicknessEnum,VertexEnum); 46 GetVectorFromInputsx( &vec_surface, elements, nodes, vertices, loads, materials, parameters, ThicknessEnum,VertexEnum); 47 48 VecToMPISerial(&newthickness,vec_newthickness); 49 VecToMPISerial(&bed,vec_bed); 50 VecToMPISerial(&surface,vec_surface); 51 52 /*First, find the matpar object in materials: */ 53 for(i=0;i<materials->Size();i++){ 54 Object* object=materials->GetObjectByOffset(i); 55 if (object->Enum()==MatparEnum){ 56 matpar=(Matpar*)object; 57 break; 58 } 24 /*Elements drive the update: */ 25 for (i=0;i<elements->Size();i++){ 26 element=(Element*)elements->GetObjectByOffset(i); 27 //element->UpdateGeometry(); 28 ISSMERROR("not implemented yet"); 59 29 } 60 61 /*recover material parameters: */62 rho_ice=matpar->GetRhoIce();63 rho_water=matpar->GetRhoWater();64 65 /*Go through nodes and for each node, update the thickness, bed and surface, using the66 * new thickness computed in the prognostic_core part of the transient solution sequence: */67 68 for(i=0;i<nodes->Size();i++){69 70 /*get i'th node: */71 node=(Node*)vertices->GetObjectByOffset(i);72 73 /*first, recover thickness, surface and bed for this node: */74 h=newthickness[dof];75 s=surface[dof];76 b=bed[dof];77 78 //First, check that thickness is >079 if(h<0)h=10;80 81 //For grids on ice sheet, the new bed remains the same, the new surface becomes bed+new_thickness.82 if (node->IsOnSheet()){83 s=b+h;84 }85 86 //For grids on ice shelt, we have hydrostatic equilibrium (for now)87 if (node->IsOnShelf()){88 b=-rho_ice/rho_water*h;89 s=(1-rho_ice/rho_water)*h;90 }91 92 /*Ok, plug values of thickness, surafce and bed into our outputs: */93 VecSetValues(vec_newthickness,1,&dof,&h,INSERT_VALUES);94 VecSetValues(vec_bed,1,&dof,&b,INSERT_VALUES);95 VecSetValues(vec_surface,1,&dof,&s,INSERT_VALUES);96 }97 98 /*Assemble vectors: */99 VecAssemblyBegin(vec_newthickness);100 VecAssemblyEnd(vec_newthickness);101 102 VecAssemblyBegin(vec_bed);103 VecAssemblyEnd(vec_bed);104 105 VecAssemblyBegin(vec_surface);106 VecAssemblyEnd(vec_surface);107 108 /*Put back into inputs:*/109 InputUpdateFromVectorx( elements,nodes, vertices,loads, materials, parameters,vec_newthickness,ThicknessEnum,VertexEnum); //clobber existing thickness input with new one110 InputUpdateFromVectorx( elements,nodes, vertices,loads, materials, parameters,vec_bed,BedEnum,VertexEnum);111 InputUpdateFromVectorx( elements,nodes, vertices,loads, materials, parameters,vec_surface,SurfaceEnum,VertexEnum);112 113 /*Free ressources:*/114 VecFree(&vec_newthickness);115 VecFree(&vec_bed);116 VecFree(&vec_surface);117 xfree((void**)&newthickness);118 xfree((void**)&bed);119 xfree((void**)&surface);120 30 121 31 } -
issm/trunk/src/c/modules/modules.h
r4091 r4156 40 40 #include "./Mergesolutionfromftogx/Mergesolutionfromftogx.h" 41 41 #include "./PenaltyConstraintsx/PenaltyConstraintsx.h" 42 #include "./ProcessParamsx/ProcessParamsx.h"43 42 #include "./PropagateFlagsFromConnectivityx/PropagateFlagsFromConnectivityx.h" 44 43 #include "./Gradjx/Gradjx.h" -
issm/trunk/src/c/solvers/solver_diagnostic_nonlinear.cpp
r4133 r4156 42 42 /*Recover parameters: */ 43 43 kflag=1; pflag=1; 44 femmodel-> parameters->FindParam(&numberofnodes,NumberOfNodesEnum);44 femmodel->nodes->NumberOfNodes(&numberofnodes); 45 45 femmodel->parameters->FindParam(&solver_string,SolverStringEnum); 46 46 femmodel->parameters->FindParam(&dim,DimEnum); -
issm/trunk/src/c/solvers/solver_thermal_nonlinear.cpp
r4091 r4156 42 42 kflag=1; pflag=1; 43 43 44 fem-> parameters->FindParam(&numberofnodes,NumberOfNodesEnum);44 fem->nodes->NumberOfNodes(&numberofnodes); 45 45 fem->parameters->FindParam(&solver_string,SolverStringEnum); 46 46 fem->parameters->FindParam(&verbose,VerboseEnum);
Note:
See TracChangeset
for help on using the changeset viewer.