source: CIVL/examples/experimental/reverse_CIVL/adic_driver.c

main
Last change on this file was ea777aa, checked in by Alex Wilton <awilton@…>, 3 years ago

Moved examples, include, build_default.properties, common.xml, and README out from dev.civl.com into the root of the repo.

git-svn-id: svn://vsl.cis.udel.edu/civl/trunk@5704 fb995dde-84ed-4084-dfe6-e5aef3e2452c

  • Property mode set to 100644
File size: 1014 bytes
Line 
1#include <string.h>
2#include <stdlib.h>
3#include <stdio.h>
4
5//#include "ad_grad_reverse.hpp"
6#include "ad_types.h"
7#include "ad_rev.h"
8#include "ad_tape.h"
9
10void ad_o_fcn(DERIV_TYPE *ad_var_ret,DERIV_TYPE *obj,DERIV_TYPE x[6]);
11
12int g_fcn(double *obj, double g_x[6], const double x[6]) {
13 int i;
14 int j;
15 int ndir = 1;
16 DERIV_TYPE ad_var_ret, ad_obj, ad_x[6];
17 int retval;
18
19 // Set indpendent variables
20 ADIC_SetReverseMode();
21 ADIC_Init();
22 __ADIC_TapeInit();
23 ADIC_SetIndepArray(ad_x,6);
24 ADIC_SetDep(ad_obj);
25 for(i=0;i<6;i++) {
26 DERIV_val(ad_x[i]) = x[i];
27 }
28 ADIC_SetIndepDone();
29
30 // Invoke AD function
31 our_rev_mode.plain = 0;
32 our_rev_mode.tape = 1;
33 our_rev_mode.adjoint = 0;
34 ad_o_fcn(&ad_var_ret, &ad_obj, ad_x);
35 retval = DERIV_val(ad_var_ret);
36
37 our_rev_mode.tape = 0;
38 our_rev_mode.adjoint = 1;
39 ad_o_fcn(&ad_var_ret, &ad_obj, ad_x);
40
41 *obj = DERIV_val(ad_obj);
42 for (i=0;i<6;i++) g_x[i] = DERIV_grad(ad_x[i])[0];
43 ADIC_Finalize();
44 return retval;
45}
Note: See TracBrowser for help on using the repository browser.