Changeset 25592
- Timestamp:
- 09/24/20 13:32:38 (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/cores/transient_core.cpp
r25578 r25592 333 333 334 334 /*Go through our dependent variables, and compute the response:*/ 335 DataSet* dependent_objects=((DataSetParam*)femmodel->parameters->FindParamObject(AutodiffDependentObjectsEnum))->value; 336 for(Object* & object:dependent_objects->objects){ 337 DependentObject* dep=(DependentObject*)object; 338 dep->Responsex(&output_value,femmodel); 339 dep->AddValue(output_value); 335 if(finaltime==time){ 336 DataSet* dependent_objects=((DataSetParam*)femmodel->parameters->FindParamObject(AutodiffDependentObjectsEnum))->value; 337 for(Object* & object:dependent_objects->objects){ 338 DependentObject* dep=(DependentObject*)object; 339 dep->Responsex(&output_value,femmodel); 340 dep->AddValue(output_value); 341 } 340 342 } 341 343 … … 378 380 379 381 IssmDouble J = 0.; 380 if(0){ 381 DataSet* dependent_objects=((DataSetParam*)femmodel->parameters->FindParamObject(AutodiffDependentObjectsEnum))->value; 382 for(Object* & object:dependent_objects->objects){ 383 DependentObject* dep=(DependentObject*)object; 384 J += dep->GetValue(); 385 } 386 } 387 else{ 388 femmodel->IceVolumeAboveFloatationx(&J,false); 382 DataSet* dependent_objects=((DataSetParam*)femmodel->parameters->FindParamObject(AutodiffDependentObjectsEnum))->value; 383 for(Object* & object:dependent_objects->objects){ 384 DependentObject* dep=(DependentObject*)object; 385 J += dep->GetValue(); 389 386 } 390 387 tape_codi.registerOutput(J); … … 435 432 transient_step(femmodel); 436 433 434 /*Go through our dependent variables, and compute the response:*/ 435 if(thistime==finaltime){ 436 DataSet* dependent_objects=((DataSetParam*)femmodel->parameters->FindParamObject(AutodiffDependentObjectsEnum))->value; 437 for(Object* & object:dependent_objects->objects){ 438 DependentObject* dep=(DependentObject*)object; 439 dep->Responsex(&output_value,femmodel); 440 dep->AddValue(output_value); 441 } 442 } 443 437 444 /*First and last segment need special treatment*/ 438 445 if(thisstep==finalstep) break; … … 460 467 for(int i=0; i<Xsize; i++) Xb[i] += X[i].gradient(); 461 468 } 469 /*Clear tape*/ 470 tape_codi.reset(); 462 471 463 472 /*Broadcast gradient to other ranks (make sure to sum all gradients)*/
Note:
See TracChangeset
for help on using the changeset viewer.