#include #include #include #include "contextAD.h" double nextRandom() { dbad_currentSeed += dbad_seed ; if (dbad_currentSeed>1.0) dbad_currentSeed-=1.0 ; return dbad_currentSeed ; } void context_tgt_init(double epsilon, double seed) { dbad_mode = 1 ; dbad_ddeps = epsilon ; dbad_seed = seed ; char* phase = getenv("DBAD_PHASE") ; if (phase==NULL) { printf("Please set DBAD_PHASE environment variable to 1 (perturbed) or 2 (tangent)\n") ; exit(0) ; } else if (strcmp(phase,"2")==0) { printf("Tangent code, seed=%7.1e\n", seed) ; printf("=============================================\n") ; dbad_phase = 2 ; dbad_currentSeed = 0.0 ; } else if (strcmp(phase,"1")==0) { printf("Perturbed run, seed=%7.1e, epsilon=%7.1e\n", seed, epsilon) ; printf("=============================================\n") ; dbad_phase = 1 ; dbad_currentSeed = 0.0 ; } else if (strcmp(phase,"99")==0) { printf("INTERNAL INTERFACE TESTS, seed=%7.1e, epsilon=%7.1e\n", seed, epsilon) ; printf("=============================================\n") ; dbad_phase = 99 ; } else { printf("DBAD_PHASE environment variable must be set to 1 or 2\n") ; exit(0) ; } } /** Version of context_tgt_init called from Fortran */ void context_tgt_init_(double *epsilon, double *seed) { context_tgt_init(*epsilon, *seed) ; } void context_tgt_initreal8(char* varname, double *indep, double *indepd) { *indepd = nextRandom() ; if (dbad_phase==1) *indep = (*indep)+dbad_ddeps*(*indepd) ; else if (dbad_phase==99) printf("initreal8_ of %s: %24.16e //%24.16e\n", varname, *indep, *indepd) ; } /** Version of context_tgt_initreal8 called from Fortran */ void context_tgt_initreal8_(char* varname, double *indep, double *indepd) { context_tgt_initreal8(varname, indep, indepd) ; } void context_tgt_initreal8array(char* varname, double *indep, double *indepd, int length) { int i ; for (i=0 ; i