Changeset 3967
- Timestamp:
- 05/27/10 10:07:17 (15 years ago)
- Location:
- issm/trunk/src/c
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk/src/c/DataSet/DataSet.cpp
r3966 r3967 577 577 } 578 578 /*}}}*/ 579 /*FUNCTION DataSet::CostFunction{{{1*/580 void DataSet::CostFunction(double* pJ,int analysis_type,int sub_analysis_type){581 582 double J=0;;583 584 vector<Object*>::iterator object;585 Element* element=NULL;586 587 for ( object=objects.begin() ; object < objects.end(); object++ ){588 589 if(EnumIsElement((*object)->Enum())){590 591 element=(Element*)(*object);592 J+=element->CostFunction(analysis_type,sub_analysis_type);593 594 }595 }596 597 /*Assign output pointers:*/598 *pJ=J;599 600 }601 /*}}}*/602 579 /*FUNCTION DataSet::CreatePartitioningVector{{{1*/ 603 580 void DataSet::CreatePartitioningVector(Vec* ppartition,int numberofobjects){ … … 707 684 xfree((void**)&truedofs); 708 685 xfree((void**)&alltruedofs); 709 710 }711 /*}}}*/712 /*FUNCTION DataSet::Du{{{1*/713 void DataSet::Du(Vec du_g,int analysis_type,int sub_analysis_type){714 715 716 vector<Object*>::iterator object;717 Element* element=NULL;718 719 for ( object=objects.begin() ; object < objects.end(); object++ ){720 721 if(EnumIsElement((*object)->Enum())){722 723 element=(Element*)(*object);724 element->Du(du_g,analysis_type,sub_analysis_type);725 }726 }727 728 686 729 687 } … … 966 924 } 967 925 /*}}}*/ 968 /*FUNCTION DataSet::Gradj{{{1*/969 void DataSet::Gradj(Vec grad_g,int analysis_type,int sub_analysis_type,int control_type){970 971 972 vector<Object*>::iterator object;973 Element* element=NULL;974 975 for ( object=objects.begin() ; object < objects.end(); object++ ){976 977 if(EnumIsElement((*object)->Enum())){978 979 element=(Element*)(*object);980 element->Gradj(grad_g,analysis_type,sub_analysis_type,control_type);981 }982 }983 984 985 }986 /*}}}*/987 926 /*FUNCTION DataSet::MeltingIsPresent{{{1*/ 988 927 int DataSet::MeltingIsPresent(){ … … 1050 989 *pconverged=converged; 1051 990 *pnum_unstable_constraints=num_unstable_constraints; 1052 }1053 /*}}}*/1054 /*FUNCTION DataSet::Misfit{{{1*/1055 void DataSet::Misfit(double* pJ,int analysis_type,int sub_analysis_type){1056 1057 double J=0;;1058 1059 vector<Object*>::iterator object;1060 Element* element=NULL;1061 1062 for ( object=objects.begin() ; object < objects.end(); object++ ){1063 1064 if(EnumIsElement((*object)->Enum())){1065 1066 element=(Element*)(*object);1067 J+=element->Misfit(analysis_type,sub_analysis_type);1068 1069 }1070 }1071 1072 /*Assign output pointers:*/1073 *pJ=J;1074 1075 991 } 1076 992 /*}}}*/ -
issm/trunk/src/c/DataSet/DataSet.h
r3966 r3967 81 81 void MeltingConstraints(int* pconverged, int* pnum_unstable_constraints,int analysis_type,int sub_analysis_type); 82 82 DataSet* Copy(void); 83 void Du(Vec du_g,int analysis_type,int sub_analysis_type);84 void Gradj(Vec grad_g,int analysis_type,int sub_analysis_type,int control_type);85 void Misfit(double* pJ, int analysis_type,int sub_analysis_type);86 void CostFunction(double* pJ, int analysis_type,int sub_analysis_type);87 83 void SurfaceArea(double* pS, int analysis_type,int sub_analysis_type); 88 84 void FieldAverageOntoVertices(Vec fieldsum,Vec connectivity,double* field); -
issm/trunk/src/c/modules/ConfigureObjectsx/ConfigureObjectsx.cpp
r3913 r3967 12 12 int ConfigureObjectsx( DataSet* elements, DataSet* loads, DataSet* nodes, DataSet* vertices, DataSet* materials,Parameters* parameters){ 13 13 14 /*Intermediary*/ 14 15 int noerr=1; 15 16 int i; 16 17 extern int num_procs;18 extern int my_rank;17 Element* element=NULL; 18 Load* load=NULL; 19 Node* node=NULL; 19 20 20 21 //_printf_(" Configuring elements...\n"); 21 elements->Configure(elements,loads,nodes,vertices,materials,parameters); 22 for (i=0;i<elements->Size();i++){ 23 element=(Element*)elements->GetObjectByOffset(i); 24 element->Configure(elements,loads,nodes,materials,parameters); 25 } 22 26 //_printf_(" Configuring loads...\n"); 23 loads->Configure(elements,loads,nodes,vertices,materials,parameters); 27 for (i=0;i<loads->Size();i++){ 28 load=(Load*)loads->GetObjectByOffset(i); 29 load->Configure(elements,loads,nodes,vertices,materials,parameters); 30 } 24 31 //_printf_(" Configuring nodes...\n"); 25 nodes->Configure(elements,loads,nodes,vertices,materials,parameters); 32 for (i=0;i<nodes->Size();i++){ 33 node=(Node*)nodes->GetObjectByOffset(i); 34 node->Configure(nodes,vertices); 35 } 26 36 //_printf_(" Configuring parameters...\n"); 37 /*parameters ARE NOT configured!*/ 27 38 parameters->Configure(elements,loads,nodes,vertices,materials,parameters); 28 39 -
issm/trunk/src/c/modules/CostFunctionx/CostFunctionx.cpp
r3913 r3967 15 15 16 16 /*Intermediary*/ 17 int i; 17 18 double fit; 18 19 double S; 20 Element* element=NULL; 19 21 20 22 /*output: */ 21 double J ;23 double J=0; 22 24 double J_sum; 23 25 … … 33 35 elements->UpdateInputsFromVector(&S,SurfaceAreaEnum,ConstantEnum); 34 36 35 /*Compute gradients: */ 36 elements->CostFunction(&J,analysis_type,sub_analysis_type); 37 /*Compute cost function: */ 38 for (i=0;i<elements->Size();i++){ 39 element=(Element*)elements->GetObjectByOffset(i); 40 J+=element->CostFunction(analysis_type,sub_analysis_type); 41 } 37 42 38 43 /*Sum all J from all cpus of the cluster:*/ -
issm/trunk/src/c/modules/Dofx/Dofx.cpp
r3913 r3967 32 32 33 33 /*Initialize dofvecs: */ 34 partition=new DofVec("partition");34 partition=new DofVec("partition"); 35 35 tpartition=new DofVec("tpartition"); 36 36 -
issm/trunk/src/c/modules/Dux/Dux.cpp
r3913 r3967 20 20 double fit=-1; 21 21 double S; 22 Element* element=NULL; 22 23 23 24 /*output: */ … … 25 26 26 27 /*First, get elements and loads configured: */ 27 elements-> Configure(elements,loads, nodes, vertices, materials,parameters);28 nodes-> Configure(elements,loads, nodes, vertices, materials,parameters);28 elements-> Configure(elements,loads, nodes, vertices, materials,parameters); 29 nodes-> Configure(elements,loads, nodes, vertices, materials,parameters); 29 30 parameters->Configure(elements,loads, nodes, vertices, materials,parameters); 30 31 … … 42 43 43 44 /*Compute velocity difference: */ 44 elements->Du(du_g,analysis_type,sub_analysis_type); 45 for (i=0;i<elements->Size();i++){ 46 element=(Element*)elements->GetObjectByOffset(i); 47 element->Du(du_g,analysis_type,sub_analysis_type); 48 } 45 49 46 50 /*Assemble vector: */ -
issm/trunk/src/c/modules/Gradjx/Gradjx.cpp
r3913 r3967 13 13 int analysis_type,int sub_analysis_type,int control_type){ 14 14 15 /*Intermediary*/ 16 int i; 17 Element* element=NULL; 18 15 19 /*output: */ 16 20 Vec grad_g=NULL; 17 21 18 22 /*First, get elements and loads configured: */ 19 elements-> Configure(elements,loads, nodes,vertices, materials,parameters);20 nodes-> Configure(elements,loads, nodes,vertices, materials,parameters);23 elements-> Configure(elements,loads, nodes,vertices, materials,parameters); 24 nodes-> Configure(elements,loads, nodes,vertices, materials,parameters); 21 25 parameters->Configure(elements,loads, nodes,vertices, materials,parameters); 22 26 … … 25 29 26 30 /*Compute gradients: */ 27 elements->Gradj(grad_g,analysis_type,sub_analysis_type,control_type); 31 for (i=0;i<elements->Size();i++){ 32 element=(Element*)elements->GetObjectByOffset(i); 33 element->Gradj(grad_g,analysis_type,sub_analysis_type,control_type); 34 } 28 35 29 36 /*Assemble vector: */ -
issm/trunk/src/c/modules/Misfitx/Misfitx.cpp
r3913 r3967 17 17 int fit; 18 18 double S; 19 int i; 20 Element* element=NULL; 19 21 20 22 /*output: */ 21 double J ;23 double J=0; 22 24 double J_sum; 23 25 … … 32 34 /*add surface area to elements :*/ 33 35 elements->UpdateInputsFromVector(&S,SurfaceAreaEnum,ConstantEnum); 34 35 36 36 37 /*Compute Misfit: */ 37 elements->Misfit(&J,analysis_type,sub_analysis_type); 38 for (i=0;i<elements->Size();i++){ 39 element=(Element*)elements->GetObjectByOffset(i); 40 J+=element->Misfit(analysis_type,sub_analysis_type); 41 } 38 42 39 43 /*Sum all J from all cpus of the cluster:*/
Note:
See TracChangeset
for help on using the changeset viewer.