02.04.2013 Views

Welcome to Adams/Solver Subroutines - Kxcad.net

Welcome to Adams/Solver Subroutines - Kxcad.net

Welcome to Adams/Solver Subroutines - Kxcad.net

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

118<br />

<strong>Adams</strong>/<strong>Solver</strong><br />

Computing Partial Derivatives<br />

The computation of the partial derivatives of a complicated FORTRAN subroutine can be an<br />

overwhelming task. MSC investigated the software, Au<strong>to</strong>matic Differentiation of FORTRAN<br />

(ADIFOR), that may be able <strong>to</strong> au<strong>to</strong>mate this task.<br />

ADIFOR is a <strong>to</strong>ol for au<strong>to</strong>matic computation of derivatives of function defined in FORTRAN 77<br />

programs.<br />

Au<strong>to</strong>matic differentiation is a technique for computing the derivatives of functions described by<br />

computer programs. ADIFOR implements au<strong>to</strong>matic differentiation by transforming a collection of<br />

FORTRAN 77 subroutines that compute a function f in<strong>to</strong> new FORTRAN 77 subroutines that compute<br />

the derivatives of the outputs of f with respect <strong>to</strong> a specified set of inputs of f.<br />

ADIFOR 2.0 consists of:<br />

• ADIFOR Preprocessor<br />

• ADIntrinsics template expander and library<br />

• SparsLinC library.<br />

Figure 1 shows a block diagram of the ADIFOR 2.0 process, which consists of three steps:<br />

1. Apply the ADIFOR Preprocessor <strong>to</strong> your FORTRAN 77 program <strong>to</strong> produce augmented code for<br />

the computation of derivatives. The preprocessor invokes the ADIntrinsics template expander<br />

directly.<br />

2. Construct a derivative driver code that invokes the generated derivative code and uses the<br />

computed derivatives.<br />

3. Compile the generated derivative code and your derivative driver code, and link these with the<br />

derivative support packages. That is, the ADIntrinsics exception handling package and<br />

(optionally) the SparsLinC sparse derivative package.<br />

Figure 1. Block Diagram of the ADIFOR Process

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!