Changeset 22424
- Timestamp:
- 02/16/18 08:03:30 (7 years ago)
- Location:
- issm/trunk-jpl/src/c/modules
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/modules/GetVectorFromControlInputsx/GetVectorFromControlInputsx.cpp
r18870 r22424 7 7 #include "../../toolkits/toolkits.h" 8 8 9 void GetVectorFromControlInputsx(Vector<IssmDouble>** pvector, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,const char* data,bool onsid){ 9 void GetVectorFromControlInputsx(Vector<IssmDouble>** pvector, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,const char* data,bool onsid){/*{{{*/ 10 10 11 11 int num_controls; … … 32 32 xDelete<int>(control_type); 33 33 *pvector=vector; 34 } 35 36 void GetVectorFromControlInputsx( IssmDouble** pvector, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters, const char* data,bool onsid){ 34 }/*}}}*/ 35 void GetVectorFromControlInputsx( IssmDouble** pvector, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters, const char* data,bool onsid){/*{{{*/ 37 36 38 37 /*output: */ … … 50 49 /*Assign output pointers:*/ 51 50 *pvector=vector; 52 } 51 }/*}}}*/ 52 53 /*For autodiff, we sometimes need to cast our vectors to passive*/ 54 #ifdef _HAVE_ADOLC_ 55 void GetPassiveVectorFromControlInputsx(Vector<IssmPDouble>** pvector, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,const char* data,bool onsid){/*{{{*/ 56 57 /*Get active vector first*/ 58 Vector<IssmDouble>* activevector=NULL; 59 Vector<IssmPDouble>* vector=NULL; 60 int size; 61 62 /*Retrieve some parameters*/ 63 GetVectorFromControlInputsx(&activevector, elements,nodes, vertices, loads, materials, parameters,data,onsid); 64 65 /*Serialize vector*/ 66 activevector->GetSize(&size); 67 IssmDouble* dactivevector=activevector->ToMPISerial(); 68 69 /*Cast to passive*/ 70 vector=new Vector<IssmPDouble>(size); 71 for(int i=0;i<size;i++){ 72 vector->SetValue(i,reCast<IssmPDouble>(dactivevector[i]),INS_VAL); 73 } 74 vector->Assemble(); 75 76 /*Assign output pointers:*/ 77 delete activevector; 78 xDelete<IssmDouble>(dactivevector); 79 *pvector=vector; 80 81 }/*}}}*/ 82 void GetPassiveVectorFromControlInputsx(IssmPDouble** pvector, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters, const char* data,bool onsid){/*{{{*/ 83 84 /*Get active vector first*/ 85 Vector<IssmDouble>* activevector=NULL; 86 IssmPDouble* vector=NULL; 87 int size; 88 89 /*Retrieve some parameters*/ 90 GetVectorFromControlInputsx(&activevector, elements,nodes, vertices, loads, materials, parameters,data,onsid); 91 92 /*Serialize vector*/ 93 activevector->GetSize(&size); 94 IssmDouble* dactivevector=activevector->ToMPISerial(); 95 96 /*Cast to passive*/ 97 vector=xNew<IssmPDouble>(size); 98 for(int i=0;i<size;i++) vector[i] = reCast<IssmPDouble>(dactivevector[i]); 99 100 /*Assign output pointers:*/ 101 delete activevector; 102 xDelete<IssmDouble>(dactivevector); 103 *pvector=vector; 104 105 }/*}}}*/ 106 #else 107 void GetPassiveVectorFromControlInputsx(Vector<IssmPDouble>** pvector, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,const char* data,bool onsid){/*{{{*/ 108 109 GetVectorFromControlInputsx(pvector, elements,nodes, vertices, loads, materials, parameters,data,onsid); 110 111 }/*}}}*/ 112 void GetPassiveVectorFromControlInputsx(IssmPDouble** pvector, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters, const char* data,bool onsid){/*{{{*/ 113 114 GetVectorFromControlInputsx(pvector, elements,nodes, vertices, loads, materials, parameters,data,onsid); 115 }/*}}}*/ 116 #endif -
issm/trunk-jpl/src/c/modules/GetVectorFromControlInputsx/GetVectorFromControlInputsx.h
r18870 r22424 11 11 void GetVectorFromControlInputsx( IssmDouble** pvector, Elements* elements,Nodes* nodes, Vertices* vertices,Loads* loads, Materials* materials, Parameters* parameters,const char* data="value",bool onsid=false); 12 12 13 void GetPassiveVectorFromControlInputsx(Vector<double>** pvector, Elements* elements,Nodes* nodes, Vertices* vertices,Loads* loads, Materials* materials, Parameters* parameters,const char* data="value",bool onsid=false); 14 void GetPassiveVectorFromControlInputsx(double** pvector, Elements* elements,Nodes* nodes, Vertices* vertices,Loads* loads, Materials* materials, Parameters* parameters,const char* data="value",bool onsid=false); 15 13 16 #endif /* _GETVECTORFROMCONTROLINPUTSXX_H */ -
issm/trunk-jpl/src/c/modules/GetVectorFromInputsx/GetVectorFromInputsx.cpp
r21746 r22424 7 7 #include "../../toolkits/toolkits.h" 8 8 9 void GetVectorFromInputsx(Vector<IssmDouble>** pvector,FemModel* femmodel,int name,int type){ 9 void GetVectorFromInputsx(Vector<IssmDouble>** pvector,FemModel* femmodel,int name,int type){/*{{{*/ 10 10 11 11 int i; … … 35 35 /*Assign output pointers:*/ 36 36 *pvector=vector; 37 } 38 39 void GetVectorFromInputsx(IssmDouble** pvector,FemModel* femmodel,int name, int type){ 37 }/*}}}*/ 38 void GetVectorFromInputsx(IssmDouble** pvector,FemModel* femmodel,int name, int type){/*{{{*/ 40 39 41 40 /*output: */ … … 53 52 /*Assign output pointers:*/ 54 53 *pvector=vector; 55 } 56 57 void GetVectorFromInputsx(IssmDouble** pvector,int* pvector_size, FemModel* femmodel,int name){ 54 }/*}}}*/ 55 void GetVectorFromInputsx(IssmDouble** pvector,int* pvector_size, FemModel* femmodel,int name){/*{{{*/ 58 56 59 57 int interpolation_type; … … 76 74 } 77 75 else _error_("interpolation type : " << interpolation_type << " not supported yet!"); 78 } 76 }/*}}}*/ -
issm/trunk-jpl/src/c/modules/GetVectorFromInputsx/GetVectorFromInputsx.h
r21746 r22424 10 10 void GetVectorFromInputsx( Vector<IssmDouble>** pvector,FemModel* femmodel,int name,int type); 11 11 void GetVectorFromInputsx( IssmDouble** pvector,FemModel* femmodel,int name,int type); 12 void 12 void GetVectorFromInputsx(IssmDouble** pvector,int* pvector_size, FemModel* femmodel,int name); 13 13 14 14 #endif /* _GETVECTORFROMINPUTSXX_H */
Note:
See TracChangeset
for help on using the changeset viewer.