Changeset 8646 for issm/trunk/src/c/objects/Elements/Penta.cpp
- Timestamp:
- 06/16/11 14:13:46 (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk/src/c/objects/Elements/Penta.cpp
r8643 r8646 3876 3876 /*FUNCTION Penta::Gradj {{{1*/ 3877 3877 void Penta::Gradj(Vec gradient,int control_type){ 3878 /*dJ/dalpha = ∂L/∂alpha = ∂J/∂alpha + ∂/∂alpha(KU-F)*/ 3878 3879 3879 3880 int i,approximation; … … 3883 3884 if(IsOnWater())return; 3884 3885 3886 /*First deal with ∂/∂alpha(KU-F)*/ 3885 3887 switch(control_type){ 3886 3888 … … 3962 3964 default: 3963 3965 _error_("control type %s not supported yet: ",EnumToStringx(control_type)); 3966 } 3967 3968 /*Now deal with ∂J/∂alpha*/ 3969 int *responses = NULL; 3970 int num_responses,resp; 3971 this->parameters->FindParam(&num_responses,NumResponsesEnum); 3972 this->parameters->FindParam(&responses,NULL,NULL,StepResponsesEnum); 3973 3974 for(resp=0;resp<num_responses;resp++) switch(responses[resp]){ 3975 3976 case ThicknessAbsMisfitEnum: 3977 case SurfaceAbsVelMisfitEnum: 3978 case SurfaceRelVelMisfitEnum: 3979 case SurfaceLogVelMisfitEnum: 3980 case SurfaceLogVxVyMisfitEnum: 3981 case SurfaceAverageVelMisfitEnum: 3982 /*Nothing, J does not depends on the parameter being inverted for*/ 3983 break; 3984 case DragCoefficientAbsGradientEnum: 3985 if (!IsOnBed()) return; 3986 tria=(Tria*)SpawnTria(0,1,2); //nodes 0, 1 and 2 make the new tria. 3987 tria->GradjDragGradient(gradient,resp); 3988 delete tria->matice; delete tria; 3989 break; 3990 default: 3991 _error_("response %s not supported yet",EnumToStringx(responses[resp])); 3964 3992 } 3965 3993 } … … 5046 5074 /*Create inputs and add to DataSetInput*/ 5047 5075 DatasetInput* datasetinput=new DatasetInput(WeightsEnum); 5048 for( j=0;j<iomodel->num_cm_responses;j++){5049 for( i=0;i<6;i++)nodeinputs[i]=iomodel->weights[penta_vertex_ids[i]-1];5076 for(i=0;i<iomodel->num_cm_responses;i++){ 5077 for(j=0;j<6;j++)nodeinputs[j]=iomodel->weights[(penta_vertex_ids[j]-1)*iomodel->num_cm_responses+i]; 5050 5078 datasetinput->inputs->AddObject(new PentaVertexInput(WeightsEnum,nodeinputs)); 5051 5079 }
Note:
See TracChangeset
for help on using the changeset viewer.