Changeset 25318
- Timestamp:
- 07/31/20 09:35:33 (5 years ago)
- Location:
- issm/trunk-jpl/src/c/classes/Elements
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/classes/Elements/Element.h
r25317 r25318 232 232 virtual void Configure(Elements* elements,Loads* loads,Nodes* nodes,Vertices* vertices,Materials* materials,Parameters* parameters,Inputs2* inputs2in)=0; 233 233 virtual void ControlInputSetGradient(IssmDouble* gradient,int enum_type,int control_index,int offset,int M,int N,int interp)=0; 234 virtual void ControlInputSetGradient(IssmDouble* gradient,int enum_type,int control_index)=0;235 234 virtual void ControlToVectors(Vector<IssmPDouble>* vector_control, Vector<IssmPDouble>* vector_gradient,int control_enum,int control_interp)=0; 236 235 virtual void CreateDistanceInputFromSegmentlist(IssmDouble* distances,int distanceenum){_error_("not implemented yet");}; … … 336 335 virtual void SetElementInput(Inputs2* inputs2,int numindices,int* indices,IssmDouble* values,int enum_in){_error_("not implemented yet");}; 337 336 virtual void SetControlInputsFromVector(IssmDouble* vector,int control_enum,int control_index,int offset,int M,int N)=0; 338 virtual void SetControlInputsFromVector(IssmDouble* vector,int control_enum,int control_index)=0;339 337 virtual void SetCurrentConfiguration(Elements* elements,Loads* loads,Nodes* nodes,Materials* materials,Parameters* parameters)=0; 340 338 virtual void SetTemporaryElementType(int element_type_in)=0; -
issm/trunk-jpl/src/c/classes/Elements/Penta.cpp
r25317 r25318 423 423 } 424 424 else{ 425 int domaintype,index1,index2;425 int index1,index2; 426 426 const IssmPDouble epsilon = 1.e-15; 427 427 IssmDouble s1,s2; … … 545 545 } 546 546 else{ 547 int domaintype,index1,index2;547 int index1,index2; 548 548 const IssmPDouble epsilon = 1.e-15; 549 549 IssmDouble s1,s2; … … 936 936 } 937 937 /*}}}*/ 938 void Penta::ControlInputSetGradient(IssmDouble* gradient,int enum_type,int control_index){/*{{{*/939 940 int idlist[NUMVERTICES];941 int vertexlids[NUMVERTICES];942 IssmDouble grad_list[NUMVERTICES];943 944 if(enum_type==MaterialsRheologyBbarEnum) enum_type = MaterialsRheologyBEnum;945 if(enum_type==DamageDbarEnum) enum_type = DamageDEnum;946 947 GradientIndexing(&idlist[0],control_index);948 for(int i=0;i<NUMVERTICES;i++) grad_list[i]=gradient[idlist[i]];949 for(int i=0;i<NUMVERTICES;i++) vertexlids[i]=this->vertices[i]->lid;950 951 this->inputs2->SetTriaControlInputGradient(enum_type,P1Enum,NUMVERTICES,&vertexlids[0],&grad_list[0]);952 }/*}}}*/953 938 void Penta::ControlToVectors(Vector<IssmPDouble>* vector_control, Vector<IssmPDouble>* vector_gradient,int control_enum,int control_interp){/*{{{*/ 954 939 … … 2035 2020 _assert_(!scaled); 2036 2021 2037 int domaintype,index1,index2;2022 int index1,index2; 2038 2023 const IssmPDouble epsilon = 1.e-15; 2039 2024 IssmDouble s1,s2; … … 2155 2140 _assert_(!scaled); 2156 2141 2157 int domaintype,index1,index2;2142 int index1,index2; 2158 2143 const IssmPDouble epsilon = 1.e-15; 2159 2144 IssmDouble s1,s2; … … 3401 3386 } 3402 3387 3403 /*Get Domain type*/3404 int domaintype;3405 parameters->FindParam(&domaintype,DomainTypeEnum);3406 3407 /*Specific case for depth averaged quantities*/3408 if(domaintype==Domain2DverticalEnum){3409 if(control_enum==MaterialsRheologyBbarEnum){3410 control_enum=MaterialsRheologyBEnum;3411 if(!IsOnBase()) return;3412 }3413 if(control_enum==DamageDbarEnum){3414 control_enum=DamageDEnum;3415 if(!IsOnBase()) return;3416 }3417 }3418 3419 3388 /*Get out if this is not an element input*/ 3420 3389 if(!IsInputEnum(control_enum)) return; … … 3448 3417 3449 3418 /*Extrude depending on the control*/ 3450 if(control_init==MaterialsRheologyBbarEnum){3451 this->ControlInputExtrude(control_enum,-1);3452 }3453 if(control_init==DamageDbarEnum){3454 this->ControlInputExtrude(control_enum,-1);3455 }3456 }3457 /*}}}*/3458 void Penta::SetControlInputsFromVector(IssmDouble* vector,int control_enum,int control_index){/*{{{*/3459 3460 _error_("not needed anymore?");3461 3462 IssmDouble values[NUMVERTICES];3463 int lidlist[NUMVERTICES];3464 int idlist[NUMVERTICES],control_init;3465 3466 /*Specific case for depth averaged quantities*/3467 control_init=control_enum;3468 if(control_enum==MaterialsRheologyBbarEnum){3469 control_enum=MaterialsRheologyBEnum;3470 if(!IsOnBase()) return;3471 }3472 if(control_enum==DamageDbarEnum){3473 control_enum=DamageDEnum;3474 if(!IsOnBase()) return;3475 }3476 3477 /*Get Domain type*/3478 int domaintype;3479 parameters->FindParam(&domaintype,DomainTypeEnum);3480 3481 /*Specific case for depth averaged quantities*/3482 if(domaintype==Domain2DverticalEnum){3483 if(control_enum==MaterialsRheologyBbarEnum){3484 control_enum=MaterialsRheologyBEnum;3485 if(!IsOnBase()) return;3486 }3487 if(control_enum==DamageDbarEnum){3488 control_enum=DamageDEnum;3489 if(!IsOnBase()) return;3490 }3491 }3492 3493 /*Get out if this is not an element input*/3494 if(!IsInputEnum(control_enum)) return;3495 3496 /*prepare index list*/3497 this->GetVerticesLidList(&lidlist[0]);3498 GradientIndexing(&idlist[0],control_index);3499 3500 /*Get values on vertices*/3501 for(int i=0;i<NUMVERTICES;i++){3502 values[i]=vector[idlist[i]];3503 }3504 3505 /*Set Input*/3506 ElementInput2* input=this->inputs2->GetControlInput2Data(control_enum,"value"); _assert_(input);3507 input->SetInput(P1Enum,NUMVERTICES,&lidlist[0],&values[0]);3508 3419 if(control_init==MaterialsRheologyBbarEnum){ 3509 3420 this->ControlInputExtrude(control_enum,-1); … … 3900 3811 _assert_(!scaled); 3901 3812 3902 int domaintype,index1,index2;3813 int index1,index2; 3903 3814 const IssmPDouble epsilon = 1.e-15; 3904 3815 IssmDouble s1,s2; … … 4018 3929 _assert_(!scaled); 4019 3930 4020 int domaintype,index1,index2;3931 int index1,index2; 4021 3932 const IssmPDouble epsilon = 1.e-15; 4022 3933 IssmDouble s1,s2; -
issm/trunk-jpl/src/c/classes/Elements/Penta.h
r25317 r25318 64 64 void Configure(Elements* elements,Loads* loads,Nodes* nodes,Vertices* vertices,Materials* materials,Parameters* parameters,Inputs2* inputs2in); 65 65 void ControlInputSetGradient(IssmDouble* gradient,int enum_type,int control_index,int offset,int M,int N,int interp); 66 void ControlInputSetGradient(IssmDouble* gradient,int enum_type,int control_index);67 66 void ControlToVectors(Vector<IssmPDouble>* vector_control, Vector<IssmPDouble>* vector_gradient,int control_enum,int control_interp); 68 67 void CreateDistanceInputFromSegmentlist(IssmDouble* distances,int distanceenum); … … 168 167 void SetElementInput(Inputs2* inputs2,int numindices,int* indices,IssmDouble* values,int enum_in); 169 168 void SetControlInputsFromVector(IssmDouble* vector,int control_enum,int control_index,int offset, int M,int N); 170 void SetControlInputsFromVector(IssmDouble* vector,int control_enum,int control_index);171 169 void SetCurrentConfiguration(Elements* elements,Loads* loads,Nodes* nodes,Materials* materials,Parameters* parameters); 172 170 void SetTemporaryElementType(int element_type_in); -
issm/trunk-jpl/src/c/classes/Elements/Seg.h
r25317 r25318 51 51 void Configure(Elements* elements,Loads* loads,Nodes* nodesin,Vertices* verticesin,Materials* materials,Parameters* parameters,Inputs2* inputs2in){_error_("not implemented yet");}; 52 52 void ControlInputSetGradient(IssmDouble* gradient,int enum_type,int control_index,int offset,int M,int N,int interp){_error_("not implemented yet");}; 53 void ControlInputSetGradient(IssmDouble* gradient,int enum_type,int control_index){_error_("not implemented yet");};54 53 void ControlToVectors(Vector<IssmPDouble>* vector_control, Vector<IssmPDouble>* vector_gradient,int control_enum,int control_interp){_error_("not implemented yet");}; 55 54 void ElementResponse(IssmDouble* presponse,int response_enum){_error_("not implemented yet");}; … … 135 134 void ResetHooks(){_error_("not implemented yet");}; 136 135 void SetControlInputsFromVector(IssmDouble* vector,int control_enum,int control_index,int offset,int M,int N){_error_("not implemented yet");}; 137 void SetControlInputsFromVector(IssmDouble* vector,int control_enum,int control_index){_error_("not implemented yet");};138 136 void SetCurrentConfiguration(Elements* elements,Loads* loads,Nodes* nodes,Materials* materials,Parameters* parameters){_error_("not implemented yet");}; 139 137 void SetTemporaryElementType(int element_type_in){_error_("not implemented yet");}; -
issm/trunk-jpl/src/c/classes/Elements/Tetra.h
r25317 r25318 49 49 void Configure(Elements* elements,Loads* loads,Nodes* nodesin,Vertices* verticesin,Materials* materials,Parameters* parameters,Inputs2* inputs2in); 50 50 void ControlInputSetGradient(IssmDouble* gradient,int enum_type,int control_index,int offset,int M,int N,int interp){_error_("not implemented yet");}; 51 void ControlInputSetGradient(IssmDouble* gradient,int enum_type,int control_index){_error_("not implemented yet");};52 51 void ControlToVectors(Vector<IssmPDouble>* vector_control, Vector<IssmPDouble>* vector_gradient,int control_enum,int control_interp){_error_("not implemented yet");}; 53 52 IssmDouble DragCoefficientAbsGradient(void){_error_("not implemented yet");}; … … 141 140 void ReduceMatrices(ElementMatrix* Ke,ElementVector* pe); 142 141 void SetControlInputsFromVector(IssmDouble* vector,int control_enum,int control_index,int offset,int M, int N){_error_("not implemented yet");}; 143 void SetControlInputsFromVector(IssmDouble* vector,int control_enum,int control_index){_error_("not implemented yet");};144 142 void SetCurrentConfiguration(Elements* elements,Loads* loads,Nodes* nodes,Materials* materials,Parameters* parameters); 145 143 void SetTemporaryElementType(int element_type_in){_error_("not implemented yet");}; -
issm/trunk-jpl/src/c/classes/Elements/Tria.cpp
r25317 r25318 1131 1131 } 1132 1132 else _error_("Type not supported"); 1133 1134 }/*}}}*/1135 void Tria::ControlInputSetGradient(IssmDouble* gradient,int enum_type,int control_index){/*{{{*/1136 _error_("NOT NEEDED ANYMORE (remove)");1137 1138 int idlist[NUMVERTICES];1139 int vertexlids[NUMVERTICES];1140 IssmDouble grad_list[NUMVERTICES];1141 1142 GradientIndexing(&idlist[0],control_index);1143 for(int i=0;i<NUMVERTICES;i++) grad_list[i]=gradient[idlist[i]];1144 for(int i=0;i<NUMVERTICES;i++) vertexlids[i]=this->vertices[i]->lid;1145 1146 this->inputs2->SetTriaControlInputGradient(enum_type,P1Enum,NUMVERTICES,&vertexlids[0],&grad_list[0]);1147 1133 1148 1134 }/*}}}*/ … … 4005 3991 } 4006 3992 else _error_("Type not supported"); 4007 }4008 /*}}}*/4009 void Tria::SetControlInputsFromVector(IssmDouble* vector,int control_enum,int control_index){/*{{{*/4010 4011 IssmDouble values[NUMVERTICES];4012 int idlist[NUMVERTICES];4013 int lidlist[NUMVERTICES];4014 4015 /*Get Domain type*/4016 int domaintype;4017 parameters->FindParam(&domaintype,DomainTypeEnum);4018 4019 /*Specific case for depth averaged quantities*/4020 if(domaintype==Domain2DverticalEnum){4021 if(control_enum==MaterialsRheologyBbarEnum){4022 control_enum=MaterialsRheologyBEnum;4023 if(!IsOnBase()) return;4024 }4025 if(control_enum==DamageDbarEnum){4026 control_enum=DamageDEnum;4027 if(!IsOnBase()) return;4028 }4029 }4030 4031 /*Get out if this is not an element input*/4032 if(!IsInputEnum(control_enum)) return;4033 4034 /*prepare index list*/4035 this->GetVerticesLidList(&lidlist[0]);4036 GradientIndexing(&idlist[0],control_index);4037 4038 /*Get values on vertices*/4039 for(int i=0;i<NUMVERTICES;i++){4040 values[i]=vector[idlist[i]];4041 }4042 4043 /*Set Input*/4044 ElementInput2* input=this->inputs2->GetControlInput2Data(control_enum,"value"); _assert_(input);4045 input->SetInput(P1Enum,NUMVERTICES,&lidlist[0],&values[0]);4046 3993 } 4047 3994 /*}}}*/ -
issm/trunk-jpl/src/c/classes/Elements/Tria.h
r25317 r25318 67 67 void Configure(Elements* elements,Loads* loads,Nodes* nodesin,Vertices* verticesin,Materials* materials,Parameters* parameters,Inputs2* inputs2in); 68 68 void ControlInputSetGradient(IssmDouble* gradient,int enum_type,int control_index,int offset,int M,int N,int interp); 69 void ControlInputSetGradient(IssmDouble* gradient,int enum_type,int control_index);70 69 void ControlToVectors(Vector<IssmPDouble>* vector_control, Vector<IssmPDouble>* vector_gradient,int control_enum,int control_interp); 71 70 void CreateDistanceInputFromSegmentlist(IssmDouble* distances,int distanceenum); … … 131 130 void SetElementInput(Inputs2* inputs2,int numindices,int* indices,IssmDouble* values,int enum_in); 132 131 void SetControlInputsFromVector(IssmDouble* vector,int control_enum,int control_index,int offset,int M,int N); 133 void SetControlInputsFromVector(IssmDouble* vector,int control_enum,int control_index);134 132 void SetCurrentConfiguration(Elements* elements,Loads* loads,Nodes* nodes,Materials* materials,Parameters* parameters); 135 133 Element* SpawnBasalElement(bool depthaverage_materials);
Note:
See TracChangeset
for help on using the changeset viewer.