pcops - nicolob/pep-full GitHub Wiki

pcops

Type: subroutine

Defined in: pcops.f

Definition: subroutine PCOPS(m1,ivec,iabs1i)

Description

j.f.chandler  -  1977 sep
subroutine to oversee copying of partials from old obslib
tape.  the decision whether to copy or compute is based on
the value of ict(4).
ict(4)=-3  do quick copy of all partials.
-2  do quick copy, provided that all partials exist on old
tape.  if some do not, act as if ict(4)=0.
* * * note * * in quick copy this routine is never called.
-1  copy only if new l vector is not set. (not implemented)
0  copy if old partial exists (except partials w.r.t. probe
parameters and certain other cases subject to change).
1  always compute partials.  iabs1 is set to zero in obsred
to indicate this option (or if there is no old tape)
m1 - index of 1st element to use in mvec (list mode only)
ivec - 4-character name of vector (e.g. 'prm ' for lprm,mprm)
iabs1 - copying flag, non-zero iff copying is allowed.
pcops must be called once for each new l vector.  note - even
if the l vector contains both 'slots' and a 'list' , only
one setup is needed.  for example, lpl(1-6) are slots for
initial condtions, and lpl(7-30) are a list of other
parameters.   the setup is done as follows:
l=0
call pcops(7,'pl  ',iabs1)
then process partials in two batches, e.g.:
iflag=0
call pcopy(l,6,iflag,1,lpl,mpl)
and then:
iflag=1
call pcopy(l,30,iflag,1,lpl,mpl)
input to pcopy
l - where to start in lvec (begin at lvec(l+1))
lim - highest allowed index for lvec (i.e. size of lvec)
iflag - mode indicator:
0  'slot' mode.  lvec consists of ones and zeroes.
1  'list' mode.  lvec contains a list of parameter numbers,
ended by first zero.
iswtch - copy switch:
1  Copy if possible.
0  Do not copy partials, but return a value indicating whether
the old partial could be copied.
-1 Copy after all.  Setup was done with the previous call, when
iswtch was 0 (and the copying was deferred).
lvec - l vector for output partials - deriv(296,2)
mvec - m vector for old obslib tape partials - vired(296,2)
output:
indices l, m (internal to pcopy), kind, and mind are updated
and partials are copied until either (a) the l vector is
finished or (b) a partial can't be copied for some reason.
(that includes the case where input iswtch=0)
iflag - completion indicator:
0  lvec not finished.  must call pcopy again after computing
latest partial (i.e. lvec(l) )
1  lvec is finished.  either l.ge.lim, or end of list.
iswtch - not changed unless input value was zero or -1.
0  Partial cannot be copied, must compute.
1  Partial can be copied if necessary (i.e., if it can't be
computed).  In order to copy this partial after all and
rejoin the logical flow, just reset iflag to indicate mode,
set iswtch to -1, and go back to the loop calling PCOPY.

Included Files

  • globdefs.inc
  • lfix.inc
  • ltrapobs.inc
  • mtrap.inc
  • partcm.inc

Arguments

  • m1
  • ivec
  • iabs1i

Calls

Called By

  • ...

Notes

  • ...
⚠️ **GitHub.com Fallback** ⚠️