Changeset 3649
- Timestamp:
- 05/01/10 11:59:56 (15 years ago)
- Location:
- issm/trunk/src/c
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk/src/c/DataSet/DataSet.cpp
r3633 r3649 566 566 /*Objects methods*/ 567 567 /*FUNCTION DataSet::ComputeBasalStress{{{1*/ 568 void DataSet::ComputeBasalStress(Vec sigma_b, void* inputs,int analysis_type,int sub_analysis_type){568 void DataSet::ComputeBasalStress(Vec sigma_b,int analysis_type,int sub_analysis_type){ 569 569 570 570 vector<Object*>::iterator object; … … 576 576 577 577 element=(Element*)(*object); 578 element->ComputeBasalStress(sigma_b, inputs,analysis_type,sub_analysis_type);578 element->ComputeBasalStress(sigma_b,analysis_type,sub_analysis_type); 579 579 } 580 580 } … … 583 583 /*}}}*/ 584 584 /*FUNCTION DataSet::ComputePressure{{{1*/ 585 void DataSet::ComputePressure(Vec p_g, void* inputs,int analysis_type,int sub_analysis_type){585 void DataSet::ComputePressure(Vec p_g,int analysis_type,int sub_analysis_type){ 586 586 587 587 vector<Object*>::iterator object; … … 593 593 594 594 element=(Element*)(*object); 595 element->ComputePressure(p_g, inputs,analysis_type,sub_analysis_type);595 element->ComputePressure(p_g,analysis_type,sub_analysis_type); 596 596 } 597 597 } … … 600 600 /*}}}*/ 601 601 /*FUNCTION DataSet::ComputeStrainRate{{{1*/ 602 void DataSet::ComputeStrainRate(Vec eps, void* inputs,int analysis_type,int sub_analysis_type){602 void DataSet::ComputeStrainRate(Vec eps,int analysis_type,int sub_analysis_type){ 603 603 604 604 vector<Object*>::iterator object; … … 610 610 611 611 element=(Element*)(*object); 612 element->ComputeStrainRate(eps, inputs,analysis_type,sub_analysis_type);612 element->ComputeStrainRate(eps,analysis_type,sub_analysis_type); 613 613 } 614 614 } … … 617 617 /*}}}*/ 618 618 /*FUNCTION DataSet::Configure{{{1*/ 619 void DataSet::Configure(DataSet* elements,DataSet* loads, DataSet* nodes, DataSet* vertices, DataSet* materials, DataSet* parameters){619 void DataSet::Configure(DataSet* elements,DataSet* loads, DataSet* nodes, DataSet* vertices, DataSet* materials,Parameters* parameters){ 620 620 621 621 vector<Object*>::iterator object; … … 633 633 if(EnumIsLoad((*object)->Enum())){ 634 634 load=(Load*)(*object); 635 load->Configure(elements, nodes,materials,parameters);635 load->Configure(elements,loads,nodes,vertices,materials,parameters); 636 636 } 637 637 … … 645 645 /*}}}*/ 646 646 /*FUNCTION DataSet::CostFunction{{{1*/ 647 void DataSet::CostFunction(double* pJ, void* inputs,int analysis_type,int sub_analysis_type){647 void DataSet::CostFunction(double* pJ,int analysis_type,int sub_analysis_type){ 648 648 649 649 double J=0;; … … 657 657 658 658 element=(Element*)(*object); 659 J+=element->CostFunction( inputs,analysis_type,sub_analysis_type);659 J+=element->CostFunction(analysis_type,sub_analysis_type); 660 660 661 661 } … … 668 668 /*}}}*/ 669 669 /*FUNCTION DataSet::CreateKMatrix{{{1*/ 670 void DataSet::CreateKMatrix(Mat Kgg, void* inputs,int analysis_type,int sub_analysis_type){670 void DataSet::CreateKMatrix(Mat Kgg,int analysis_type,int sub_analysis_type){ 671 671 672 672 vector<Object*>::iterator object; … … 679 679 680 680 element=(Element*)(*object); 681 element->CreateKMatrix(Kgg, inputs,analysis_type,sub_analysis_type);681 element->CreateKMatrix(Kgg,analysis_type,sub_analysis_type); 682 682 } 683 683 if(EnumIsLoad((*object)->Enum())){ 684 684 685 685 load=(Load*)(*object); 686 load->CreateKMatrix(Kgg, inputs,analysis_type,sub_analysis_type);686 load->CreateKMatrix(Kgg,analysis_type,sub_analysis_type); 687 687 } 688 688 } … … 719 719 /*}}}*/ 720 720 /*FUNCTION DataSet::CreatePVector{{{1*/ 721 void DataSet::CreatePVector(Vec pg, void* inputs,int analysis_type,int sub_analysis_type){721 void DataSet::CreatePVector(Vec pg,int analysis_type,int sub_analysis_type){ 722 722 723 723 vector<Object*>::iterator object; … … 730 730 731 731 element=(Element*)(*object); 732 element->CreatePVector(pg, inputs,analysis_type,sub_analysis_type);732 element->CreatePVector(pg,analysis_type,sub_analysis_type); 733 733 } 734 734 if(EnumIsLoad((*object)->Enum())){ 735 735 736 736 load=(Load*)(*object); 737 load->CreatePVector(pg, inputs,analysis_type,sub_analysis_type);737 load->CreatePVector(pg,analysis_type,sub_analysis_type); 738 738 } 739 739 } … … 824 824 /*}}}*/ 825 825 /*FUNCTION DataSet::Du{{{1*/ 826 void DataSet::Du(Vec du_g, void* inputs,int analysis_type,int sub_analysis_type){826 void DataSet::Du(Vec du_g,int analysis_type,int sub_analysis_type){ 827 827 828 828 … … 835 835 836 836 element=(Element*)(*object); 837 element->Du(du_g, inputs,analysis_type,sub_analysis_type);837 element->Du(du_g,analysis_type,sub_analysis_type); 838 838 } 839 839 } … … 980 980 /*}}}*/ 981 981 /*FUNCTION DataSet::Gradj{{{1*/ 982 void DataSet::Gradj(Vec grad_g, void* inputs,int analysis_type,int sub_analysis_type,char* control_type){982 void DataSet::Gradj(Vec grad_g,int analysis_type,int sub_analysis_type,char* control_type){ 983 983 984 984 … … 991 991 992 992 element=(Element*)(*object); 993 element->Gradj(grad_g, inputs,analysis_type,sub_analysis_type,control_type);993 element->Gradj(grad_g,analysis_type,sub_analysis_type,control_type); 994 994 } 995 995 } … … 1024 1024 /*}}}*/ 1025 1025 /*FUNCTION DataSet::MeltingConstraints{{{1*/ 1026 void DataSet::MeltingConstraints(int* pconverged, int* pnum_unstable_constraints, void* inputs,int analysis_type,int sub_analysis_type){1026 void DataSet::MeltingConstraints(int* pconverged, int* pnum_unstable_constraints,int analysis_type,int sub_analysis_type){ 1027 1027 1028 1028 /* generic object pointer: */ … … 1044 1044 pengrid=(Pengrid*)(*object); 1045 1045 1046 pengrid->PenaltyConstrain(&unstable, inputs,analysis_type,sub_analysis_type);1046 pengrid->PenaltyConstrain(&unstable,analysis_type,sub_analysis_type); 1047 1047 1048 1048 num_unstable_constraints+=unstable; … … 1066 1066 /*}}}*/ 1067 1067 /*FUNCTION DataSet::Misfit{{{1*/ 1068 void DataSet::Misfit(double* pJ, void* inputs,int analysis_type,int sub_analysis_type){1068 void DataSet::Misfit(double* pJ,int analysis_type,int sub_analysis_type){ 1069 1069 1070 1070 double J=0;; … … 1078 1078 1079 1079 element=(Element*)(*object); 1080 J+=element->Misfit( inputs,analysis_type,sub_analysis_type);1080 J+=element->Misfit(analysis_type,sub_analysis_type); 1081 1081 1082 1082 } … … 1160 1160 /*}}}*/ 1161 1161 /*FUNCTION DataSet::PenaltyCreateKMatrix{{{1*/ 1162 void DataSet::PenaltyCreateKMatrix(Mat Kgg, void* inputs,double kmax,int analysis_type,int sub_analysis_type){1162 void DataSet::PenaltyCreateKMatrix(Mat Kgg,double kmax,int analysis_type,int sub_analysis_type){ 1163 1163 1164 1164 vector<Object*>::iterator object; … … 1170 1170 1171 1171 load=(Load*)(*object); 1172 load->PenaltyCreateKMatrix(Kgg, inputs,kmax,analysis_type,sub_analysis_type);1172 load->PenaltyCreateKMatrix(Kgg,kmax,analysis_type,sub_analysis_type); 1173 1173 } 1174 1174 } … … 1177 1177 /*}}}*/ 1178 1178 /*FUNCTION DataSet::PenaltyCreatePVector{{{1*/ 1179 void DataSet::PenaltyCreatePVector(Vec pg, void* inputs,double kmax,int analysis_type,int sub_analysis_type){1179 void DataSet::PenaltyCreatePVector(Vec pg,double kmax,int analysis_type,int sub_analysis_type){ 1180 1180 1181 1181 vector<Object*>::iterator object; … … 1187 1187 1188 1188 load=(Load*)(*object); 1189 load->PenaltyCreatePVector(pg, inputs,kmax,analysis_type,sub_analysis_type);1189 load->PenaltyCreatePVector(pg,kmax,analysis_type,sub_analysis_type); 1190 1190 } 1191 1191 } … … 1329 1329 /*}}}*/ 1330 1330 /*FUNCTION DataSet::SurfaceArea{{{1*/ 1331 void DataSet::SurfaceArea(double* pS, void* inputs,int analysis_type,int sub_analysis_type){1331 void DataSet::SurfaceArea(double* pS,int analysis_type,int sub_analysis_type){ 1332 1332 1333 1333 double S=0;; … … 1341 1341 1342 1342 element=(Element*)(*object); 1343 S+=element->SurfaceArea( inputs,analysis_type,sub_analysis_type);1343 S+=element->SurfaceArea(analysis_type,sub_analysis_type); 1344 1344 1345 1345 } … … 1368 1368 } 1369 1369 /*}}}*/ 1370 /*FUNCTION DataSet::UpdateFromInputs{{{1*/1371 void DataSet::UpdateFromInputs(void* inputs){1372 1373 vector<Object*>::iterator object;1374 Element* element=NULL;1375 Load* load=NULL;1376 Material* material=NULL;1377 Node* node=NULL;1378 1379 for ( object=objects.begin() ; object < objects.end(); object++ ){1380 1381 if(EnumIsElement((*object)->Enum())){1382 1383 element=(Element*)(*object);1384 element->UpdateFromInputs(inputs);1385 }1386 if(EnumIsLoad((*object)->Enum())){1387 1388 load=(Load*)(*object);1389 load->UpdateFromInputs(inputs);1390 }1391 if(EnumIsMaterial((*object)->Enum())){1392 1393 material=(Material*)(*object);1394 material->UpdateFromInputs(inputs);1395 }1396 if((*object)->Enum()==NodeEnum){1397 node=(Node*)(*object);1398 node->UpdateFromInputs(inputs);1399 }1400 }1401 1402 }1403 /*}}}*/1404 1370 /*FUNCTION DataSet::UpdateVertexPositions{{{1*/ 1405 1371 void DataSet::UpdateVertexPositions(double* thickness,double* bed){ -
issm/trunk/src/c/DataSet/DataSet.h
r3621 r3649 13 13 #include "../toolkits/toolkits.h" 14 14 #include "../objects/Object.h" 15 class Inputs; 16 class Parameters; 15 17 16 18 class DataSet{ 17 19 18 p rivate:20 public: 19 21 20 22 /*internals: */ … … 29 31 int* sorted_ids; 30 32 int* id_offsets; 31 32 public:33 33 34 34 /*constructors, destructors: {{{1*/ … … 62 62 void FlagNodeSets(Vec pv_g, Vec pv_m, Vec pv_n, Vec pv_f, Vec pv_s); 63 63 void clear(); 64 void Configure(DataSet* elements,DataSet* loads, DataSet* nodes, DataSet* vertices, DataSet* materials,DataSet* parameters);64 void Configure(DataSet* elements,DataSet* loads, DataSet* nodes, DataSet* vertices, DataSet* materials,Parameters* parameters); 65 65 Object* GetObjectByOffset(int offset); 66 66 Object* GetObjectById(int* poffset,int eid); … … 68 68 void SetSorting(int* in_sorted_ids,int* in_id_offsets); 69 69 void Sort(); 70 void CreateKMatrix(Mat Kgg,void* inputs, int analysis_type,int sub_analysis_type); 71 void CreatePVector(Vec pg,void* inputs, int analysis_type,int sub_analysis_type); 72 void UpdateFromInputs(void* inputs); 70 void CreateKMatrix(Mat Kgg, int analysis_type,int sub_analysis_type); 71 void CreatePVector(Vec pg, int analysis_type,int sub_analysis_type); 73 72 void UpdateInputs(double* solution,int analysis_type,int sub_analysis_type); 74 void PenaltyCreateKMatrix(Mat Kgg, void* inputs,double kmax,int analysis_type,int sub_analysis_type);75 void PenaltyCreatePVector(Vec pg, void* inputs,double kmax,int analysis_type,int sub_analysis_type);73 void PenaltyCreateKMatrix(Mat Kgg,double kmax,int analysis_type,int sub_analysis_type); 74 void PenaltyCreatePVector(Vec pg,double kmax,int analysis_type,int sub_analysis_type); 76 75 int RiftIsPresent(); 77 76 int MeltingIsPresent(); 78 void MeltingConstraints(int* pconverged, int* pnum_unstable_constraints, void* inputs,int analysis_type,int sub_analysis_type);77 void MeltingConstraints(int* pconverged, int* pnum_unstable_constraints,int analysis_type,int sub_analysis_type); 79 78 DataSet* Copy(void); 80 void Du(Vec du_g, void* inputs,int analysis_type,int sub_analysis_type);81 void Gradj(Vec grad_g, void* inputs,int analysis_type,int sub_analysis_type,char* control_type);82 void Misfit(double* pJ, void* inputs,int analysis_type,int sub_analysis_type);83 void CostFunction(double* pJ, void* inputs,int analysis_type,int sub_analysis_type);84 void SurfaceArea(double* pS, void* inputs,int analysis_type,int sub_analysis_type);79 void Du(Vec du_g,int analysis_type,int sub_analysis_type); 80 void Gradj(Vec grad_g,int analysis_type,int sub_analysis_type,char* control_type); 81 void Misfit(double* pJ, int analysis_type,int sub_analysis_type); 82 void CostFunction(double* pJ, int analysis_type,int sub_analysis_type); 83 void SurfaceArea(double* pS, int analysis_type,int sub_analysis_type); 85 84 void FieldAverageOntoVertices(Vec fieldsum,Vec connectivity,double* field); 86 85 void FieldDepthAverageAtBase(Vec field,double* field_serial,char* fieldname); 87 86 int DeleteObject(Object* object); 88 void ComputeBasalStress(Vec sigma_b, void* inputs,int analysis_type,int sub_analysis_type);89 void ComputePressure(Vec p_g, void* inputs,int analysis_type,int sub_analysis_type);90 void ComputeStrainRate(Vec eps, void* inputs,int analysis_type,int sub_analysis_type);87 void ComputeBasalStress(Vec sigma_b,int analysis_type,int sub_analysis_type); 88 void ComputePressure(Vec p_g,int analysis_type,int sub_analysis_type); 89 void ComputeStrainRate(Vec eps,int analysis_type,int sub_analysis_type); 91 90 int FindResult(void* pvalue, char* name); 92 91 void FieldExtrude(Vec field,double* field_serial,char* field_name, int collapse); -
issm/trunk/src/c/DataSet/Inputs.cpp
r3647 r3649 9 9 #endif 10 10 11 12 #include <vector> 13 #include <functional> 14 #include <algorithm> 15 #include <iostream> 16 11 17 #include "./DataSet.h" 12 18 #include "./Inputs.h" 19 20 #include "../shared/shared.h" 21 #include "../include/macros.h" 22 #include "../EnumDefinitions/EnumDefinitions.h" 23 24 using namespace std; 25 13 26 14 27 /*Object constructors and destructor*/ … … 19 32 /*}}}*/ 20 33 /*FUNCTION Inputs::Inputs(int in_enum){{{1*/ 21 Inputs::Inputs(int in_enum): DataSet(in_enum){ 22 { 34 Inputs::Inputs(int in_enum): DataSet(in_enum) { 23 35 //do nothing; 24 36 return; -
issm/trunk/src/c/objects/Node.cpp
r3632 r3649 227 227 /*Object management: {{{1*/ 228 228 /*FUNCTION Node::Configure {{{2*/ 229 void Node::Configure(DataSet* nodesin ){229 void Node::Configure(DataSet* nodesin,DataSet* verticesin){ 230 230 231 231 int i; … … 233 233 /*Take care of hooking up all objects for this element, ie links the objects in the hooks to their respective 234 234 * datasets, using internal ids and offsets hidden in hooks: */ 235 hvertex.configure( nodesin);235 hvertex.configure(verticesin); 236 236 hupper_node.configure(nodesin); 237 237 -
issm/trunk/src/c/objects/Node.h
r3637 r3649 39 39 /*}}}*/ 40 40 /*FUNCTION object management {{{1*/ 41 void Configure(DataSet* nodes );41 void Configure(DataSet* nodes,DataSet* vertices); 42 42 void DeepEcho(); 43 43 void Demarshall(char** pmarshalled_dataset); -
issm/trunk/src/c/objects/Numericalflux.cpp
r3647 r3649 60 60 int e1,e2; 61 61 int i1,i2; 62 int j; 62 63 int pos1,pos2; 63 64 int num_nodes; … … 74 75 75 76 /*Get left and right elements*/ 76 e1=( double)iomodel->edges[4*i+2]; //edges are [node1 node2 elem1 elem2]77 e2=( double)iomodel->edges[4*i+3]; //edges are [node1 node2 elem1 elem2]77 e1=(int)iomodel->edges[4*i+2]; //edges are [node1 node2 elem1 elem2] 78 e2=(int)iomodel->edges[4*i+3]; //edges are [node1 node2 elem1 elem2] 78 79 if (isnan(e2)){ 79 80 /* Boundary edge, only one element */ … … 136 137 /*Hooks: */ 137 138 this->hnodes.Init(numericalflux_node_ids,num_nodes); 138 this->helements.Init(&numericalflux_elem_ids,num_elems); 139 this->hmatpar.Init(&numericalflux_mparid,1); 139 this->helements.Init(numericalflux_elem_ids,num_elems); 140 140 141 141 //intialize and add as many inputs per element as requested: -
issm/trunk/src/c/objects/Numericalflux.h
r3647 r3649 28 28 Numericalflux(int numericalflux_id,int* numericalflux_node_ids,int numnodes, int* numericalflux_element_ids, int numelements); 29 29 Numericalflux(int numericalflux_id,Hook* numericalflux_hnodes, Hook* numericalflux_helements, Parameters* parameters, Inputs* numericalflux_inputs); 30 Numericalflux ::Numericalflux(int numericalflux_id,int i, IoModel* iomodel);30 Numericalflux(int numericalflux_id,int i, IoModel* iomodel); 31 31 ~Numericalflux(); 32 32 /*}}}*/ -
issm/trunk/src/c/objects/objects.h
r3612 r3649 5 5 #ifndef ALL_OBJECTS_H_ 6 6 #define ALL_OBJECTS_H_ 7 8 class Object;9 class Matice;10 class Matpar;11 class Node;12 class Penta;13 class Tria;14 class Sing;15 class Beam;16 class Spc;17 class Rgb;18 class Icefront;19 class Riftfront;20 class Penpair;21 class Pengrid;22 class Numericalflux;23 class Param;24 class Element;25 class NodeSets;26 class Model;27 class TriaVertexInput;28 class DoubleInput;29 class IntInput;30 class BoolInput;31 class Input;32 7 33 8 /*Abstract class: */ … … 57 32 #include "./Input.h" 58 33 #include "./TriaVertexInput.h" 34 #include "./Vertex.h" 35 #include "./Numpar.h" 59 36 #include "./BoolInput.h" 60 37 #include "./IntInput.h"
Note:
See TracChangeset
for help on using the changeset viewer.