Re: [Ad-dev] [openAD] #179: need logic for explicit initialization of derivative components
#179: need logic for explicit initialization of derivative components -------------------------+-------------------------------------------------- Reporter: utke | Owner: hlcm Type: enhancement | Status: assigned Priority: major | Milestone: MATWS adjoint Component: xaifBooster | Keywords: -------------------------+-------------------------------------------------- Comment(by utke): Replying to [comment:1 utke]:
The current active type has a default initialization to 0 that is needed for correctness of the adjoint computation but is not permitted in Fortran if the active type occurs e.g. in an Equivalence. The analog in C/C++ is the use of the active type in a "union". For this scenario we need an option for explicit initialization or the active type of A: all locally declared variables (that are not "static") in a given procedure B: all globally declared variables at some predefined point.
For A: a change in the xaif may be needed to distinguish scopes for static from non-static variables. For B: the postprocessor should generate an initialization procedure to be called by having the user inject the call into his driver code.
Addendum to B: to avoid nameclashes between modules and common blocks we step through the global symbol table and for each module and each common block generate a separate init procedure all of which are kept in a list and then called in a cover-all init. Example: common /CA/ a,b,c, double precision a,b,c turns into: subroutine CA_init common /CA/ a,b,c, double precision a,b,c a%d=0 etc end subroutine and then subroutine OAD_globalVar_init() call CA_init() call ..._init end subroutine -- Ticket URL: <http://trac.mcs.anl.gov/projects/openAD/ticket/179#comment:6> OpenAD <http://www.mcs.anl.gov/openad> Bug tracking for OpenAD components
participants (1)
-
OpenAD