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 ==================================================================