28     use dc_date, only: dcdifftimecreate
    33     character(len = *), 
intent(in):: file
    37     character(len = *), 
intent(in):: varname
    55     type(
gt_history), 
intent(inout), 
optional, 
target:: history
    63     logical, 
intent(in), 
optional:: overwrite
    72     type(
gt_variable), 
pointer:: vwork(:) =>null(), dimvars(:) =>null()
    74     character(STRING):: fullname, url, copyurl
    75     integer, 
pointer:: count_work(:) =>null()
    76     integer, 
pointer:: var_avr_count_work(:) =>null()
    77     integer:: var_avr_length
    78     logical, 
pointer:: var_avr_firstput_work(:) =>null()
    79     real(DP), 
pointer:: var_avr_coefsum_work(:) =>null()
    80     real(DP), 
pointer:: var_avr_baseint_work(:) =>null()
    81     real(DP), 
pointer:: var_avr_prevtime_work(:) =>null()
    85     integer:: nvars, numdims, i
    86     logical:: growable, overwrite_required
    87     character(*), 
parameter:: subname = 
"HistoryCopyVariable1"    89     call beginsub(subname, 
'file=%c varname=%c', &
    90       & c1=trim(file), c2=trim(varname))
    92     if (
present(history)) 
then    99     if (
associated(hst % vars)) 
then   100       nvars = 
size(hst % vars(:))
   102       count_work => hst % count
   103       nullify(hst % vars, hst % count)
   104       allocate(hst % vars(nvars + 1), hst % count(nvars + 1))
   105       hst % vars(1:nvars) = vwork(1:nvars)
   106       hst % count(1:nvars) = count_work(1:nvars)
   107       deallocate(vwork, count_work)
   108       count_work => hst % growable_indices
   109       nullify(hst % growable_indices)
   110       allocate(hst % growable_indices(nvars + 1))
   111       hst % growable_indices(1:nvars) = count_work(1:nvars)
   112       deallocate(count_work)
   118       var_avr_count_work => hst % var_avr_count
   119       nullify( hst % var_avr_count )
   120       allocate( hst % var_avr_count(nvars + 1) )
   121       hst % var_avr_count(1:nvars) = var_avr_count_work(1:nvars)
   122       deallocate( var_avr_count_work )
   124       var_avr_data_work => hst % var_avr_data
   125       nullify(hst % var_avr_data)
   126       allocate(hst % var_avr_data(nvars + 1))
   128         hst % var_avr_data(i) % length = var_avr_data_work(i) % length
   129         allocate(hst % var_avr_data(i) % &
   130           & a_dataavr(var_avr_data_work(i) % length))
   131         hst % var_avr_data(i) % a_DataAvr = var_avr_data_work(i) % a_DataAvr
   133       deallocate( var_avr_data_work )
   135       var_avr_firstput_work => hst % var_avr_firstput
   136       nullify( hst % var_avr_firstput )
   137       allocate( hst % var_avr_firstput(nvars + 1) )
   138       hst % var_avr_firstput(1:nvars) = var_avr_firstput_work(1:nvars)
   139       deallocate( var_avr_firstput_work )
   141       var_avr_coefsum_work => hst % var_avr_coefsum
   142       nullify( hst % var_avr_coefsum )
   143       allocate( hst % var_avr_coefsum(nvars + 1) )
   144       hst % var_avr_coefsum(1:nvars) = var_avr_coefsum_work(1:nvars)
   145       deallocate( var_avr_coefsum_work )
   147       var_avr_baseint_work => hst % var_avr_baseint
   148       nullify( hst % var_avr_baseint )
   149       allocate( hst % var_avr_baseint(nvars + 1) )
   150       hst % var_avr_baseint(1:nvars) = var_avr_baseint_work(1:nvars)
   151       deallocate( var_avr_baseint_work )
   153       var_avr_prevtime_work => hst % var_avr_prevtime
   154       nullify( hst % var_avr_prevtime )
   155       allocate( hst % var_avr_prevtime(nvars + 1) )
   156       hst % var_avr_prevtime(1:nvars) = var_avr_prevtime_work(1:nvars)
   157       deallocate( var_avr_prevtime_work )
   161       allocate(hst % vars(1), hst % count(2), hst % growable_indices(1))
   163       allocate(hst % var_avr_count(1), hst % var_avr_data(1))
   164       allocate(hst % var_avr_firstput(1), hst % var_avr_coefsum(1))
   165       allocate(hst % var_avr_baseint(1), hst % var_avr_prevtime(1))
   167     nvars = 
size(hst % vars(:))
   168     hst % growable_indices(nvars) = 0
   169     hst % count(nvars) = 0
   170     hst % var_avr_count(nvars) = -1
   171     hst % var_avr_firstput = .true.
   172     hst % var_avr_coefsum(nvars) = 0.0_dp
   173     hst % var_avr_baseint(nvars) = 0.0_dp
   177     hst % var_avr_prevtime(nvars) = hst % var_avr_baseint(nvars)
   181     call open(copyfrom, copyurl)
   184     call inquire(hst % dimvars(1), url=url)
   186     overwrite_required = .true.
   188     call create(hst % vars(nvars), trim(fullname), copyfrom, &
   189       &      copyvalue=.false., overwrite=overwrite_required)
   192     call inquire(hst % vars(nvars), alldims=numdims)
   193     allocate(dimvars(numdims))
   197       call open(var=dimvars(i), source_var=hst % vars(nvars), &
   198         &    dimord=i, count_compact=.true.)
   200       call inquire(var=dimvars(i), growable=growable)
   202         hst % growable_indices(nvars) = i
   207     if (hst % growable_indices(nvars) /= 0) 
then   208       call slice(hst % vars(nvars), hst % growable_indices(nvars), &
   209         & start=1, count=1, stride=1)
   214     call inquire( hst % vars(nvars), 
size = var_avr_length )
   215     allocate( hst % var_avr_data(nvars) % a_DataAvr(var_avr_length) )
   216     hst % var_avr_data(nvars) % length = var_avr_length
   217     hst % var_avr_data(nvars) % a_DataAvr = 0.0_dp
 
type(gt_history), target, save, public default
 
integer, parameter, public token
単語やキーワードを保持する文字型変数の種別型パラメタ 
 
character, parameter, public gt_atmark
 
logical function, public present_and_false(arg)
 
subroutine historycopyvariable1(file, varname, history, overwrite)
 
integer, parameter, public dp
倍精度実数型変数 
 
subroutine, public dbgmessage(fmt, i, r, d, L, n, c1, c2, c3, ca)
 
subroutine, public beginsub(name, fmt, i, r, d, L, n, c1, c2, c3, ca, version)
 
subroutine, public endsub(name, fmt, i, r, d, L, n, c1, c2, c3, ca)
 
integer, parameter, public string
文字列を保持する 文字型変数の種別型パラメタ