Index: ../trunk-jpl/src/c/cores/transient_core.cpp =================================================================== --- ../trunk-jpl/src/c/cores/transient_core.cpp (revision 25591) +++ ../trunk-jpl/src/c/cores/transient_core.cpp (revision 25592) @@ -332,11 +332,13 @@ transient_step(femmodel); /*Go through our dependent variables, and compute the response:*/ - DataSet* dependent_objects=((DataSetParam*)femmodel->parameters->FindParamObject(AutodiffDependentObjectsEnum))->value; - for(Object* & object:dependent_objects->objects){ - DependentObject* dep=(DependentObject*)object; - dep->Responsex(&output_value,femmodel); - dep->AddValue(output_value); + if(finaltime==time){ + DataSet* dependent_objects=((DataSetParam*)femmodel->parameters->FindParamObject(AutodiffDependentObjectsEnum))->value; + for(Object* & object:dependent_objects->objects){ + DependentObject* dep=(DependentObject*)object; + dep->Responsex(&output_value,femmodel); + dep->AddValue(output_value); + } } if(VerboseSolution()) _printf0_(" counting number of active variables\n"); @@ -377,16 +379,11 @@ SetControlInputsFromVectorx(femmodel,X); IssmDouble J = 0.; - if(0){ - DataSet* dependent_objects=((DataSetParam*)femmodel->parameters->FindParamObject(AutodiffDependentObjectsEnum))->value; - for(Object* & object:dependent_objects->objects){ - DependentObject* dep=(DependentObject*)object; - J += dep->GetValue(); - } + DataSet* dependent_objects=((DataSetParam*)femmodel->parameters->FindParamObject(AutodiffDependentObjectsEnum))->value; + for(Object* & object:dependent_objects->objects){ + DependentObject* dep=(DependentObject*)object; + J += dep->GetValue(); } - else{ - femmodel->IceVolumeAboveFloatationx(&J,false); - } tape_codi.registerOutput(J); tape_codi.setPassive(); @@ -434,6 +431,16 @@ <parameters->FindParamObject(AutodiffDependentObjectsEnum))->value; + for(Object* & object:dependent_objects->objects){ + DependentObject* dep=(DependentObject*)object; + dep->Responsex(&output_value,femmodel); + dep->AddValue(output_value); + } + } + /*First and last segment need special treatment*/ if(thisstep==finalstep) break; if(reverse_step==1 && ii==recording_frequency-2) break; @@ -459,6 +466,8 @@ for(int i=0; i(Xsize);