C $Header: /u/gcmpack/MITgcm/pkg/profiles/active_file_profiles_ad.F,v 1.8 2015/08/06 15:48:20 gforget Exp $ C $Name: $ #include "PROFILES_OPTIONS.h" c ================================================================== c c active_files_ad.F: Routines to handle the I/O of the active file c for the adjoint calculations. All files are c direct access files. c c Routines c c o adactive_read_profile - Adjoint of active_read_profile c o adactive_write_profile - Adjoint of active_write_profile c c changed: gforget@ocean.mit.edu 23-Mar-2006 c c ================================================================== subroutine ADACTIVE_READ_PROFILE( I active_num_file, I nadactive_var, I adactive_var, I active_varnum, I irec, I lAdInit, I myiter, I bi, I bj, I mythid & ) C !DESCRIPTION: \bv c ================================================================== c SUBROUTINE adactive_read_profile c ================================================================== c o Adjoint of active_read_profile. c ================================================================== implicit none c == global variables == #include "EEPARAMS.h" #include "SIZE.h" #ifdef ALLOW_PROFILES # include "PROFILES_SIZE.h" # include "profiles.h" #endif c == routine arguments == c active_var_file: filename c nadactive_var: integer size of adactive_var c adactive_var: array c irec: record number c myIter: number of optimization iteration (default: 0) c mythid: thread number for this instance c doglobalread: flag for global or local read/write c (default: .false.) c lAdInit: initialisation of corresponding adjoint c variable and write to active file integer nadactive_var,active_num_file _RL adactive_var(nadactive_var) integer irec,active_varnum integer myiter integer bi,bj,mythid logical lAdInit #ifdef ALLOW_PROFILES call ACTIVE_READ_PROFILE_RL( fidadjoint(active_num_file,bi,bj) , & active_num_file, & nadactive_var, adactive_var, active_varnum, lAdInit, & irec, prof_ind_glob(active_num_file,irec,bi,bj), & REVERSE_SIMULATION, myiter,bi,bj, mythid) #endif end
c ================================================================== c ================================================================== c ================================================================== subroutine ADACTIVE_WRITE_PROFILE( I active_num_file, I nadactive_var, I adactive_var, I active_varnum, I irec, I myiter, I bi, I bj, I mythid, I dummy & ) C !DESCRIPTION: \bv c ================================================================== c SUBROUTINE adactive_write_profile c ================================================================== c o Adjoint of active_write_profile. c ================================================================== implicit none c == global variables == #include "EEPARAMS.h" #include "SIZE.h" #ifdef ALLOW_PROFILES # include "PROFILES_SIZE.h" # include "profiles.h" #endif c == routine arguments == c active_var_file: filename c nadactive_var: integer size of adactive_var c adactive_var: array c irec: record number c myIter: number of optimization iteration (default: 0) c mythid: thread number for this instance c doglobalread: flag for global or local read/write c (default: .false.) c lAdInit: initialisation of corresponding adjoint c variable and write to active file integer nadactive_var,active_num_file _RL adactive_var(nadactive_var) integer irec,active_varnum integer myiter integer bi,bj,mythid _RL dummy c == end of interface == #ifdef ALLOW_PROFILES call ACTIVE_WRITE_PROFILE_RL( fidadjoint(active_num_file,bi,bj) , & active_num_file, & nadactive_var, adactive_var, active_varnum, & irec, prof_ind_glob(active_num_file,irec,bi,bj), & REVERSE_SIMULATION, myiter,bi,bj, mythid) #endif end
c ==================================================================