!-------------------------------------- LICENCE BEGIN ------------------------------------ !Environment Canada - Atmospheric Science and Technology License/Disclaimer, ! version 3; Last Modified: May 7, 2008. !This is free but copyrighted software; you can use/redistribute/modify it under the terms !of the Environment Canada - Atmospheric Science and Technology License/Disclaimer !version 3 or (at your option) any later version that should be found at: !http://collaboration.cmc.ec.gc.ca/science/rpn.comm/license.html ! !This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; !without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. !See the above mentioned License/Disclaimer for more details. !You should have received a copy of the License/Disclaimer along with this software; !if not, you can write to: EC-RPN COMM Group, 2121 TransCanada, suite 500, Dorval (Quebec), !CANADA, H9P 1J3; or send e-mail to service.rpn@ec.gc.ca !-------------------------------------- LICENCE END -------------------------------------- ***s/r adw_tricub_ad - ADJ of adw_tricub_tl * #include "model_macros_f.h"*
subroutine adw_tricub_ad ( F_out, F_in, F_inzz, 1 % F_capx, % F_capy, % F_capz, F_cz, % F_inm, F_inzzm,F_nm, % F_capxm,F_xggm,F_xddm, % F_capym,F_yggm,F_yddm, % F_capzm,F_czm, F_num, F_mono_L,i0,in,j0,jn,kn) * implicit none * logical F_mono_L * integer F_num,i0,in,j0,jn,kn * real F_in(*), F_inzz(*) * real F_out (F_num), % F_capx(F_num), F_capy(F_num), F_capz(F_num), F_cz (F_num) * integer F_nm(F_num) * real F_inm(*), F_inzzm(*) * real F_capxm(F_num), F_capym(F_num), F_capzm(F_num), F_czm (F_num), % F_xggm (F_num), F_xddm (F_num), F_yggm (F_num), F_yddm (F_num) * *author * monique tanguay * *revision * v2_31 - Tanguay M. - initial MPI version * v3_00 - Tanguay M. - restore vectorization in adjoint of semi-Lag. * v3_02 - Tanguay M. - restore tracers monotone if V4dg_conf.ne.0 * v3_03 - Tanguay M. - Adjoint Lam configuration * v3_11 - Tanguay M. - Remove restoration of vectorization in adjoint of semi-Lag * v3_11 - Lee V. - OpenMP for ADW_MAIN_3_INT_AD * *language * fortran 77 * *object * Do the adjoint of tri-cubic semi-Lagrangian interpolation * *ADJ of *arguments *______________________________________________________________________ * | | | * NAME | DESCRIPTION | I/O | *--------------|-------------------------------------------------|-----| * | | | * F_out | result of interpolation | o | * F_in | field to interpolate | i | * F_inzz | precomputed 2nd vertical derivatives | i | * | | | * F_n | positions in the 3D volume of interpolation | i | * | boxes | | * | | | * F_capx | \ | i | * F_xgg | precomputed displacements and interpolation | i | * F_xdd | / terms along the x-direction | i | * | | | * F_capy | \ | i | * F_ygg | precomputed displacements and interpolation | i | * F_ydd | / terms along the y-direction | i | * | | | * F_capz | \ precomputed displacements and interpolation | i | * F_cz | / terms along the z-direction | i | * | | | * F_num | number of points to interpolate | i | * | | | * F_mono_L | switch: .true. : monotonic interpolation | i | *--------------|-------------------------------------------------|-----| * *implicits #include "glb_ld.cdk"
#include "adw.cdk"
************************************************************************ integer n, nijag, i, j, k,nij * real prmin , prmax , % prmin0, prmax0, % prmin1, prmax1, % prmin2, prmax2, work * integer o1, o2, o3, o4 * real*8 xx_8, xm_8, p1_8, p2_8, p3_8, p4_8, t1_8, t2_8 * real*8 a1_8, a2_8, a3_8, a4_8, b1_8, b2_8, b3_8, b4_8, % c1_8, c2_8, c3_8, c4_8, d1_8, d2_8, d3_8, d4_8, % a1_y_8, b1_y_8, c1_y_8, d1_y_8 * real prminm, prmaxm, prmin0m, prmax0m, % prmin1m, prmax1m, prmin2m, prmax2m, work_m * real foutm * real*8 ggm_8, ddm_8, xxm_8, xmm_8, p1m_8, p2m_8, p3m_8, p4m_8, % t1m_8, t2m_8, t3m_8, p10m_8, p20m_8, p30m_8, p31m_8, p40m_8 * real*8 a1m_8, a2m_8, a3m_8, a4m_8, b1m_8, b2m_8, b3m_8, b4m_8, % c1m_8, c2m_8, c3m_8, c4m_8, d1m_8, d2m_8, d3m_8, d4m_8, % a1m_y_8, b1m_y_8, c1m_y_8, d1m_y_8 * real*8, parameter :: ZERO_8 = 0.0 * ______________________________________________________ * nij = l_ni*l_nj nijag = Adw_nit * Adw_njt * if ( F_mono_L ) then * do 100 k=1,kn do 90 j=j0,jn do 80 i=i0,in * n = (k-1)*nij + ((j-1)*l_ni) + i * * ZERO adjoint variables * ---------------------- prmin = ZERO_8 prmax = ZERO_8 prmin0 = ZERO_8 prmax0 = ZERO_8 prmin1 = ZERO_8 prmax1 = ZERO_8 prmin2 = ZERO_8 prmax2 = ZERO_8 work = ZERO_8 * * ------------------ * TRAJECTORY (START) * ------------------ *********************************************************************** * *********************************************************************** * x interpolation *********************************************************************** xxm_8 = F_capxm(n) xmm_8 = 1 - xxm_8 ggm_8 = F_xggm(n) ddm_8 = F_xddm(n) * t1m_8 = 1 + ggm_8 t2m_8 = 1 + ddm_8 p1m_8 = ggm_8 + t2m_8 p4m_8 = ddm_8 * t2m_8 * p1m_8 p1m_8 = ggm_8 * t1m_8 * p1m_8 t3m_8 = ggm_8 * t2m_8 t1m_8 = t1m_8 * ddm_8 p2m_8 = t2m_8 - xxm_8 p3m_8 = ggm_8 + xxm_8 t2m_8 =-xxm_8 * xmm_8 p4m_8 = t2m_8 * p3m_8 / p4m_8 p1m_8 = t2m_8 * p2m_8 / p1m_8 p3m_8 = p2m_8 * p3m_8 p2m_8 = xmm_8 * p3m_8 / t3m_8 p3m_8 = xxm_8 * p3m_8 / t1m_8 * o1 = F_nm(n)-Adw_nit o2 = F_nm(n) o3 = F_nm(n)+Adw_nit o4 = F_nm(n)+Adw_nit+Adw_nit * a1m_8 = p1m_8 * F_inm(o1-1) + p2m_8 * F_inm(o1) + p3m_8 * F_inm(o1+1) + p4m_8 * F_inm(o1+2) * * TRAJECTORY * ---------- * The following max statement is expanded as one IF block prmax0m = max(F_inm(o2),F_inm(o2+1)) * * The following min statement is expanded as one IF block prmin0m = min(F_inm(o2),F_inm(o2+1)) * a2m_8 = p1m_8 * F_inm(o2-1) + p2m_8 * F_inm(o2) + p3m_8 * F_inm(o2+1) + p4m_8 * F_inm(o2+2) * * TRAJECTORY * ---------- * The following max statement is expanded as two IF block prmax1m = max(prmax0m,F_inm(o3),F_inm(o3+1)) * * The following min statement is expanded as two IF block prmin1m = min(prmin0m,F_inm(o3),F_inm(o3+1)) * a3m_8 = p1m_8 * F_inm(o3-1) + p2m_8 * F_inm(o3) + p3m_8 * F_inm(o3+1) + p4m_8 * F_inm(o3+2) a4m_8 = p1m_8 * F_inm(o4-1) + p2m_8 * F_inm(o4) + p3m_8 * F_inm(o4+1) + p4m_8 * F_inm(o4+2) * b1m_8 = p1m_8 * F_inzzm(o1-1) + p2m_8 * F_inzzm(o1) + p3m_8 * F_inzzm(o1+1) + p4m_8 * F_inzzm(o1+2) b2m_8 = p1m_8 * F_inzzm(o2-1) + p2m_8 * F_inzzm(o2) + p3m_8 * F_inzzm(o2+1) + p4m_8 * F_inzzm(o2+2) b3m_8 = p1m_8 * F_inzzm(o3-1) + p2m_8 * F_inzzm(o3) + p3m_8 * F_inzzm(o3+1) + p4m_8 * F_inzzm(o3+2) b4m_8 = p1m_8 * F_inzzm(o4-1) + p2m_8 * F_inzzm(o4) + p3m_8 * F_inzzm(o4+1) + p4m_8 * F_inzzm(o4+2) * o1 = o1 + nijag o2 = o2 + nijag o3 = o3 + nijag o4 = o4 + nijag * c1m_8 = p1m_8 * F_inm(o1-1) + p2m_8 * F_inm(o1) + p3m_8 * F_inm(o1+1) + p4m_8 * F_inm(o1+2) * * TRAJECTORY * ---------- * The following max statement is expanded as two IF block prmax2m = max(prmax1m,F_inm(o2),F_inm(o2+1)) * * The following min statement is expanded as two IF block prmin2m = min(prmin1m,F_inm(o2),F_inm(o2+1)) * c2m_8 = p1m_8 * F_inm(o2-1) + p2m_8 * F_inm(o2) + p3m_8 * F_inm(o2+1) + p4m_8 * F_inm(o2+2) * * TRAJECTORY * ---------- * The following max statement is expanded as two IF block prmaxm = max(prmax2m,F_inm(o3),F_inm(o3+1)) * * The following min statement is expanded as two IF block prminm = min(prmin2m,F_inm(o3),F_inm(o3+1)) * c3m_8 = p1m_8 * F_inm(o3-1) + p2m_8 * F_inm(o3) + p3m_8 * F_inm(o3+1) + p4m_8 * F_inm(o3+2) c4m_8 = p1m_8 * F_inm(o4-1) + p2m_8 * F_inm(o4) + p3m_8 * F_inm(o4+1) + p4m_8 * F_inm(o4+2) * d1m_8 = p1m_8 * F_inzzm(o1-1) + p2m_8 * F_inzzm(o1) + p3m_8 * F_inzzm(o1+1) + p4m_8 * F_inzzm(o1+2) d2m_8 = p1m_8 * F_inzzm(o2-1) + p2m_8 * F_inzzm(o2) + p3m_8 * F_inzzm(o2+1) + p4m_8 * F_inzzm(o2+2) d3m_8 = p1m_8 * F_inzzm(o3-1) + p2m_8 * F_inzzm(o3) + p3m_8 * F_inzzm(o3+1) + p4m_8 * F_inzzm(o3+2) d4m_8 = p1m_8 * F_inzzm(o4-1) + p2m_8 * F_inzzm(o4) + p3m_8 * F_inzzm(o4+1) + p4m_8 * F_inzzm(o4+2) * *********************************************************************** * y interpolation *********************************************************************** xxm_8 = F_capym(n) xmm_8 = 1 - xxm_8 * ggm_8 = F_yggm(n) ddm_8 = F_yddm(n) * t1m_8 = 1 + ggm_8 t2m_8 = 1 + ddm_8 p1m_8 = ggm_8 + t2m_8 p4m_8 = ddm_8 * t2m_8 * p1m_8 p1m_8 = ggm_8 * t1m_8 * p1m_8 t3m_8 = ggm_8 * t2m_8 t1m_8 = t1m_8 * ddm_8 p2m_8 = t2m_8 - xxm_8 p3m_8 = ggm_8 + xxm_8 t2m_8 =-xxm_8 * xmm_8 p4m_8 = t2m_8 * p3m_8 / p4m_8 p1m_8 = t2m_8 * p2m_8 / p1m_8 p3m_8 = p2m_8 * p3m_8 p2m_8 = xmm_8 * p3m_8 / t3m_8 p3m_8 = xxm_8 * p3m_8 / t1m_8 * a1m_y_8 = p1m_8 * a1m_8 + p2m_8 * a2m_8 + p3m_8 * a3m_8 + p4m_8 * a4m_8 b1m_y_8 = p1m_8 * b1m_8 + p2m_8 * b2m_8 + p3m_8 * b3m_8 + p4m_8 * b4m_8 c1m_y_8 = p1m_8 * c1m_8 + p2m_8 * c2m_8 + p3m_8 * c3m_8 + p4m_8 * c4m_8 d1m_y_8 = p1m_8 * d1m_8 + p2m_8 * d2m_8 + p3m_8 * d3m_8 + p4m_8 * d4m_8 * *********************************************************************** * z interpolation *********************************************************************** xxm_8 = F_capzm(n) xmm_8 = 1.0 - xxm_8 t1m_8 = F_czm(n) * ( xmm_8 + 1.0 ) t2m_8 = F_czm(n) * ( xxm_8 + 1.0 ) * * TRAJECTORY * ---------- foutm = xmm_8 * a1m_y_8 + t1m_8 * b1m_y_8 + xxm_8 * c1m_y_8 + t2m_8 * d1m_y_8 * * ---------------- * TRAJECTORY (END) * ---------------- * * -------------------- * ADJOINT CALCULATIONS * -------------------- * * ADJ of ******************************************************************************** * z interpolation ******************************************************************************** * * ADJ * --- if(prminm.gt.foutm) then prmin = F_out(n) + prmin F_out(n) = ZERO_8 endif if(prmaxm.lt.foutm) then prmax = F_out(n) + prmax F_out(n) = ZERO_8 endif * xm_8 = F_out(n) * a1m_y_8 t1_8 = F_out(n) * b1m_y_8 xx_8 = F_out(n) * c1m_y_8 t2_8 = F_out(n) * d1m_y_8 a1_y_8 = xmm_8 * F_out(n) b1_y_8 = t1m_8 * F_out(n) c1_y_8 = xxm_8 * F_out(n) d1_y_8 = t2m_8 * F_out(n) F_out(n)= ZERO_8 * F_cz(n) = t2_8 * ( xxm_8 + 1.0 ) + F_cz(n) xx_8 = F_czm(n) * ( t2_8 ) + xx_8 F_cz(n) = t1_8 * ( xmm_8 + 1.0 ) + F_cz(n) xm_8 = F_czm(n) * ( t1_8 ) + xm_8 * xx_8 = - xm_8 + xx_8 F_capz(n)= xx_8 + F_capz(n) * * ADJ of ******************************************************************************** * y interpolation ******************************************************************************** p1_8 = d1_y_8 * d1m_8 p2_8 = d1_y_8 * d2m_8 p3_8 = d1_y_8 * d3m_8 p4_8 = d1_y_8 * d4m_8 d1_8 = p1m_8 * d1_y_8 d2_8 = p2m_8 * d1_y_8 d3_8 = p3m_8 * d1_y_8 d4_8 = p4m_8 * d1_y_8 * p1_8 = c1_y_8 * c1m_8 + p1_8 p2_8 = c1_y_8 * c2m_8 + p2_8 p3_8 = c1_y_8 * c3m_8 + p3_8 p4_8 = c1_y_8 * c4m_8 + p4_8 c1_8 = p1m_8 * c1_y_8 c2_8 = p2m_8 * c1_y_8 c3_8 = p3m_8 * c1_y_8 c4_8 = p4m_8 * c1_y_8 * p1_8 = b1_y_8 * b1m_8 + p1_8 p2_8 = b1_y_8 * b2m_8 + p2_8 p3_8 = b1_y_8 * b3m_8 + p3_8 p4_8 = b1_y_8 * b4m_8 + p4_8 b1_8 = p1m_8 * b1_y_8 b2_8 = p2m_8 * b1_y_8 b3_8 = p3m_8 * b1_y_8 b4_8 = p4m_8 * b1_y_8 * p1_8 = a1_y_8 * a1m_8 + p1_8 p2_8 = a1_y_8 * a2m_8 + p2_8 p3_8 = a1_y_8 * a3m_8 + p3_8 p4_8 = a1_y_8 * a4m_8 + p4_8 a1_8 = p1m_8 * a1_y_8 a2_8 = p2m_8 * a1_y_8 a3_8 = p3m_8 * a1_y_8 a4_8 = p4m_8 * a1_y_8 * * --------------------------- * Recall TRAJECTORY Y (START) * --------------------------- * xxm_8 = F_capym(n) xmm_8 = 1 - xxm_8 ggm_8 = F_yggm(n) ddm_8 = F_yddm(n) * t1m_8 = 1 + ggm_8 t2m_8 = 1 + ddm_8 p1m_8 = ggm_8 + t2m_8 p40m_8 = ddm_8 * t2m_8 * p1m_8 p10m_8 = ggm_8 * t1m_8 * p1m_8 t3m_8 = ggm_8 * t2m_8 t1m_8 = t1m_8 * ddm_8 p20m_8 = t2m_8 - xxm_8 p30m_8 = ggm_8 + xxm_8 t2m_8 =-xxm_8 * xmm_8 p4m_8 = t2m_8 * p30m_8 / p40m_8 p1m_8 = t2m_8 * p20m_8 / p10m_8 p31m_8 = p20m_8* p30m_8 p2m_8 = xmm_8 * p31m_8 / t3m_8 p3m_8 = xxm_8 * p31m_8 / t1m_8 * * ------------------------- * Recall TRAJECTORY Y (END) * ------------------------- * xx_8 = p3_8 * p31m_8 / t1m_8 p3_8 = xxm_8 * p3_8 / t1m_8 * xm_8 = p2_8 * p31m_8 / t3m_8 p3_8 = xmm_8 * p2_8 / t3m_8 + p3_8 * p2_8 = p3_8 * p30m_8 p3_8 = p20m_8* p3_8 * t2_8 = p1_8 * p20m_8 / p10m_8 p2_8 = t2m_8 * p1_8 / p10m_8 + p2_8 * t2_8 = p4_8 * p30m_8 / p40m_8 + t2_8 p3_8 = t2m_8 * p4_8 / p40m_8 + p3_8 * xx_8 = -t2_8 * xmm_8 + xx_8 xm_8 =-xxm_8 * t2_8 + xm_8 * xx_8 = p3_8 + xx_8 * xx_8 = -p2_8 + xx_8 * xx_8 = - xm_8 + xx_8 F_capy(n) = xx_8 + F_capy(n) * * ADJ of ******************************************************************************** * x interpolation ******************************************************************************** * * --------------------------- * Recall TRAJECTORY X (START) * --------------------------- * xxm_8 = F_capxm(n) xmm_8 = 1 - xxm_8 ggm_8 = F_xggm(n) ddm_8 = F_xddm(n) * t1m_8 = 1 + ggm_8 t2m_8 = 1 + ddm_8 p1m_8 = ggm_8 + t2m_8 p40m_8 = ddm_8 * t2m_8 * p1m_8 p10m_8 = ggm_8 * t1m_8 * p1m_8 t3m_8 = ggm_8 * t2m_8 t1m_8 = t1m_8 * ddm_8 p20m_8 = t2m_8 - xxm_8 p30m_8 = ggm_8 + xxm_8 t2m_8 =-xxm_8 * xmm_8 p4m_8 = t2m_8 * p30m_8 / p40m_8 p1m_8 = t2m_8 * p20m_8 / p10m_8 p31m_8 = p20m_8* p30m_8 p2m_8 = xmm_8 * p31m_8 / t3m_8 p3m_8 = xxm_8 * p31m_8 / t1m_8 * * ------------------------- * Recall TRAJECTORY X (END) * ------------------------- * o1 = F_nm(n)-Adw_nit o2 = F_nm(n) o3 = F_nm(n)+Adw_nit o4 = F_nm(n)+Adw_nit+Adw_nit * o1 = o1 + nijag o2 = o2 + nijag o3 = o3 + nijag o4 = o4 + nijag * * ------------------------------------ p1_8 = d4_8 * F_inzzm(o4-1) p2_8 = d4_8 * F_inzzm(o4) p3_8 = d4_8 * F_inzzm(o4+1) p4_8 = d4_8 * F_inzzm(o4+2) * F_inzz(o4-1) = p1m_8 * d4_8 + F_inzz(o4-1) F_inzz(o4) = p2m_8 * d4_8 + F_inzz(o4) F_inzz(o4+1) = p3m_8 * d4_8 + F_inzz(o4+1) F_inzz(o4+2) = p4m_8 * d4_8 + F_inzz(o4+2) * * ------------------------------------ p1_8 = d3_8 * F_inzzm(o3-1) + p1_8 p2_8 = d3_8 * F_inzzm(o3) + p2_8 p3_8 = d3_8 * F_inzzm(o3+1) + p3_8 p4_8 = d3_8 * F_inzzm(o3+2) + p4_8 * F_inzz(o3-1) = p1m_8 * d3_8 + F_inzz (o3-1) F_inzz(o3) = p2m_8 * d3_8 + F_inzz (o3) F_inzz(o3+1) = p3m_8 * d3_8 + F_inzz (o3+1) F_inzz(o3+2) = p4m_8 * d3_8 + F_inzz (o3+2) * * ------------------------------------ p1_8 = d2_8 * F_inzzm(o2-1) + p1_8 p2_8 = d2_8 * F_inzzm(o2) + p2_8 p3_8 = d2_8 * F_inzzm(o2+1) + p3_8 p4_8 = d2_8 * F_inzzm(o2+2) + p4_8 * F_inzz(o2-1) = p1m_8 * d2_8 + F_inzz (o2-1) F_inzz(o2) = p2m_8 * d2_8 + F_inzz (o2) F_inzz(o2+1) = p3m_8 * d2_8 + F_inzz (o2+1) F_inzz(o2+2) = p4m_8 * d2_8 + F_inzz (o2+2) * * ------------------------------------ p1_8 = d1_8 * F_inzzm(o1-1) + p1_8 p2_8 = d1_8 * F_inzzm(o1) + p2_8 p3_8 = d1_8 * F_inzzm(o1+1) + p3_8 p4_8 = d1_8 * F_inzzm(o1+2) + p4_8 * F_inzz(o1-1) = p1m_8 * d1_8 + F_inzz (o1-1) F_inzz(o1) = p2m_8 * d1_8 + F_inzz (o1) F_inzz(o1+1) = p3m_8 * d1_8 + F_inzz (o1+1) F_inzz(o1+2) = p4m_8 * d1_8 + F_inzz (o1+2) * * ------------------------------------ p1_8 = c4_8 * F_inm(o4-1) + p1_8 p2_8 = c4_8 * F_inm(o4) + p2_8 p3_8 = c4_8 * F_inm(o4+1) + p3_8 p4_8 = c4_8 * F_inm(o4+2) + p4_8 * F_in(o4-1) = p1m_8 * c4_8 + F_in(o4-1) F_in(o4) = p2m_8 * c4_8 + F_in(o4) F_in(o4+1) = p3m_8 * c4_8 + F_in(o4+1) F_in(o4+2) = p4m_8 * c4_8 + F_in(o4+2) * * ------------------------------------ p1_8 = c3_8 * F_inm(o3-1) + p1_8 p2_8 = c3_8 * F_inm(o3) + p2_8 p3_8 = c3_8 * F_inm(o3+1) + p3_8 p4_8 = c3_8 * F_inm(o3+2) + p4_8 * F_in(o3-1) = p1m_8 * c3_8 + F_in(o3-1) F_in(o3) = p2m_8 * c3_8 + F_in(o3) F_in(o3+1) = p3m_8 * c3_8 + F_in(o3+1) F_in(o3+2) = p4m_8 * c3_8 + F_in(o3+2) * * ------------------------------------ * * Recall TRAJECTORY * ----------------- work_m = F_inm(o3) if(F_inm(o3+1).lt.F_inm(o3)) then work_m = F_inm(o3+1) endif * * ADJ * --- if(prmin2m.lt.work_m) then prmin2 = prmin + prmin2 prmin = ZERO_8 else work = prmin + work prmin = ZERO_8 endif if(F_inm(o3+1).lt.F_inm(o3)) then F_in(o3+1) = work + F_in(o3+1) work = ZERO_8 endif F_in(o3) = work + F_in(o3) work = ZERO_8 * * Recall TRAJECTORY * ----------------- work_m = F_inm(o3) if(F_inm(o3+1).gt.F_inm(o3)) then work_m = F_inm(o3+1) endif * * ADJ * --- if(prmax2m.gt.work_m) then prmax2 = prmax + prmax2 prmax = ZERO_8 else work = prmax + work prmax = ZERO_8 endif if(F_inm(o3+1).gt.F_inm(o3)) then F_in(o3+1) = work + F_in(o3+1) work = ZERO_8 endif F_in(o3) = work + F_in(o3) work = ZERO_8 * * ------------------------------------ p1_8 = c2_8 * F_inm(o2-1) + p1_8 p2_8 = c2_8 * F_inm(o2) + p2_8 p3_8 = c2_8 * F_inm(o2+1) + p3_8 p4_8 = c2_8 * F_inm(o2+2) + p4_8 * F_in(o2-1) = p1m_8 * c2_8 + F_in(o2-1) F_in(o2) = p2m_8 * c2_8 + F_in(o2) F_in(o2+1) = p3m_8 * c2_8 + F_in(o2+1) F_in(o2+2) = p4m_8 * c2_8 + F_in(o2+2) * * ------------------------------------ * * Recall TRAJECTORY * ----------------- work_m = F_inm(o2) if(F_inm(o2+1).lt.F_inm(o2)) then work_m = F_inm(o2+1) endif * * ADJ * --- if(prmin1m.lt.work_m) then prmin1 = prmin2 + prmin1 prmin2 = ZERO_8 else work = prmin2 + work prmin2 = ZERO_8 endif if(F_inm(o2+1).lt.F_inm(o2)) then F_in(o2+1) = work + F_in(o2+1) work = ZERO_8 endif F_in(o2) = work + F_in(o2) work = ZERO_8 * * Recall TRAJECTORY * ----------------- work_m = F_inm(o2) if(F_inm(o2+1).gt.F_inm(o2)) then work_m = F_inm(o2+1) endif * * ADJ * --- if(prmax1m.gt.work_m) then prmax1 = prmax2 + prmax1 prmax2 = ZERO_8 else work = prmax2 + work prmax2 = ZERO_8 endif if(F_inm(o2+1).gt.F_inm(o2)) then F_in(o2+1) = work + F_in(o2+1) work = ZERO_8 endif F_in(o2) = work + F_in(o2) work = ZERO_8 * * ------------------------------------ p1_8 = c1_8 * F_inm(o1-1) + p1_8 p2_8 = c1_8 * F_inm(o1) + p2_8 p3_8 = c1_8 * F_inm(o1+1) + p3_8 p4_8 = c1_8 * F_inm(o1+2) + p4_8 * F_in(o1-1) = p1m_8 * c1_8 + F_in(o1-1) F_in(o1) = p2m_8 * c1_8 + F_in(o1) F_in(o1+1) = p3m_8 * c1_8 + F_in(o1+1) F_in(o1+2) = p4m_8 * c1_8 + F_in(o1+2) * * ------------------------------------ * o1 = F_nm(n)-Adw_nit o2 = F_nm(n) o3 = F_nm(n)+Adw_nit o4 = F_nm(n)+Adw_nit+Adw_nit * * ------------------------------------ p1_8 = b4_8 * F_inzzm(o4-1) + p1_8 p2_8 = b4_8 * F_inzzm(o4) + p2_8 p3_8 = b4_8 * F_inzzm(o4+1) + p3_8 p4_8 = b4_8 * F_inzzm(o4+2) + p4_8 * F_inzz(o4-1) = p1m_8 * b4_8 + F_inzz(o4-1) F_inzz(o4) = p2m_8 * b4_8 + F_inzz(o4) F_inzz(o4+1) = p3m_8 * b4_8 + F_inzz(o4+1) F_inzz(o4+2) = p4m_8 * b4_8 + F_inzz(o4+2) * * ------------------------------------ p1_8 = b3_8 * F_inzzm(o3-1) + p1_8 p2_8 = b3_8 * F_inzzm(o3) + p2_8 p3_8 = b3_8 * F_inzzm(o3+1) + p3_8 p4_8 = b3_8 * F_inzzm(o3+2) + p4_8 * F_inzz(o3-1) = p1m_8 * b3_8 + F_inzz(o3-1) F_inzz(o3) = p2m_8 * b3_8 + F_inzz(o3) F_inzz(o3+1) = p3m_8 * b3_8 + F_inzz(o3+1) F_inzz(o3+2) = p4m_8 * b3_8 + F_inzz(o3+2) * * ------------------------------------ p1_8 = b2_8 * F_inzzm(o2-1) + p1_8 p2_8 = b2_8 * F_inzzm(o2) + p2_8 p3_8 = b2_8 * F_inzzm(o2+1) + p3_8 p4_8 = b2_8 * F_inzzm(o2+2) + p4_8 * F_inzz(o2-1) = p1m_8 * b2_8 + F_inzz(o2-1) F_inzz(o2) = p2m_8 * b2_8 + F_inzz(o2) F_inzz(o2+1) = p3m_8 * b2_8 + F_inzz(o2+1) F_inzz(o2+2) = p4m_8 * b2_8 + F_inzz(o2+2) * * ------------------------------------ p1_8 = b1_8 * F_inzzm(o1-1) + p1_8 p2_8 = b1_8 * F_inzzm(o1) + p2_8 p3_8 = b1_8 * F_inzzm(o1+1) + p3_8 p4_8 = b1_8 * F_inzzm(o1+2) + p4_8 * F_inzz(o1-1) = p1m_8 * b1_8 + F_inzz(o1-1) F_inzz(o1) = p2m_8 * b1_8 + F_inzz(o1) F_inzz(o1+1) = p3m_8 * b1_8 + F_inzz(o1+1) F_inzz(o1+2) = p4m_8 * b1_8 + F_inzz(o1+2) * * ------------------------------------ p1_8 = a4_8 * F_inm(o4-1) + p1_8 p2_8 = a4_8 * F_inm(o4) + p2_8 p3_8 = a4_8 * F_inm(o4+1) + p3_8 p4_8 = a4_8 * F_inm(o4+2) + p4_8 * F_in(o4-1) = p1m_8 * a4_8 + F_in(o4-1) F_in(o4) = p2m_8 * a4_8 + F_in(o4) F_in(o4+1) = p3m_8 * a4_8 + F_in(o4+1) F_in(o4+2) = p4m_8 * a4_8 + F_in(o4+2) * * ------------------------------------ p1_8 = a3_8 * F_inm(o3-1) + p1_8 p2_8 = a3_8 * F_inm(o3) + p2_8 p3_8 = a3_8 * F_inm(o3+1) + p3_8 p4_8 = a3_8 * F_inm(o3+2) + p4_8 * F_in(o3-1) = p1m_8 * a3_8 + F_in(o3-1) F_in(o3) = p2m_8 * a3_8 + F_in(o3) F_in(o3+1) = p3m_8 * a3_8 + F_in(o3+1) F_in(o3+2) = p4m_8 * a3_8 + F_in(o3+2) * * ------------------------------------ * * Recall TRAJECTORY * ----------------- work_m = F_inm(o3) if(F_inm(o3+1).lt.F_inm(o3)) then work_m = F_inm(o3+1) endif * * ADJ * --- if(prmin0m.lt.work_m) then prmin0 = prmin1 + prmin0 prmin1 = ZERO_8 else work = prmin1 + work prmin1 = ZERO_8 endif if(F_inm(o3+1).lt.F_inm(o3)) then F_in(o3+1) = work + F_in(o3+1) work = ZERO_8 endif F_in(o3) = work + F_in(o3) work = ZERO_8 * * Recall TRAJECTORY * ----------------- work_m = F_inm(o3) if(F_inm(o3+1).gt.F_inm(o3)) then work_m = F_inm(o3+1) endif * * ADJ * --- if(prmax0m.gt.work_m) then prmax0 = prmax1 + prmax0 prmax1 = ZERO_8 else work = prmax1 + work prmax1 = ZERO_8 endif if(F_inm(o3+1).gt.F_inm(o3)) then F_in(o3+1) = work + F_in(o3+1) work = ZERO_8 endif F_in(o3) = work + F_in(o3) work = ZERO_8 * * ------------------------------------ p1_8 = a2_8 * F_inm(o2-1) + p1_8 p2_8 = a2_8 * F_inm(o2) + p2_8 p3_8 = a2_8 * F_inm(o2+1) + p3_8 p4_8 = a2_8 * F_inm(o2+2) + p4_8 * F_in(o2-1) = p1m_8 * a2_8 + F_in(o2-1) F_in(o2) = p2m_8 * a2_8 + F_in(o2) F_in(o2+1) = p3m_8 * a2_8 + F_in(o2+1) F_in(o2+2) = p4m_8 * a2_8 + F_in(o2+2) * * ------------------------------------ * * ADJ * --- if(F_inm(o2+1).lt.F_inm(o2)) then F_in(o2+1) = prmin0 + F_in(o2+1) prmin0 = ZERO_8 endif F_in(o2) = prmin0 + F_in(o2) prmin0 = ZERO_8 * * ADJ * --- if(F_inm(o2+1).gt.F_inm(o2)) then F_in(o2+1) = prmax0 + F_in(o2+1) prmax0 = ZERO_8 endif F_in(o2) = prmax0 + F_in(o2) prmax0 = ZERO_8 * * ------------------------------------ p1_8 = a1_8 * F_inm(o1-1) + p1_8 p2_8 = a1_8 * F_inm(o1) + p2_8 p3_8 = a1_8 * F_inm(o1+1) + p3_8 p4_8 = a1_8 * F_inm(o1+2) + p4_8 * F_in(o1-1) = p1m_8 * a1_8 + F_in(o1-1) F_in(o1) = p2m_8 * a1_8 + F_in(o1) F_in(o1+1) = p3m_8 * a1_8 + F_in(o1+1) F_in(o1+2) = p4m_8 * a1_8 + F_in(o1+2) * ------------------------------------ * xx_8 = p3_8 * p31m_8 / t1m_8 p3_8 = xxm_8 * p3_8 / t1m_8 * xm_8 = p2_8 * p31m_8 / t3m_8 p3_8 = xmm_8 * p2_8 / t3m_8 + p3_8 * p2_8 = p3_8 * p30m_8 p3_8 = p20m_8* p3_8 * t2_8 = p1_8 * p20m_8 / p10m_8 p2_8 = t2m_8 * p1_8 / p10m_8 + p2_8 * t2_8 = p4_8 * p30m_8 / p40m_8 + t2_8 p3_8 = t2m_8 * p4_8 / p40m_8 + p3_8 * xx_8 = -t2_8 * xmm_8 + xx_8 xm_8 =-xxm_8 * t2_8 + xm_8 * xx_8 = p3_8 + xx_8 * xx_8 = -p2_8 + xx_8 * xx_8 = - xm_8 + xx_8 F_capx(n) = xx_8 + F_capx(n) * 80 continue 90 continue 100 continue * else * do 200 k=1,kn do 190 j=j0,jn do 180 i=i0,in * n = (k-1)*nij + ((j-1)*l_ni) + i * * ------------------ * TRAJECTORY (START) * ------------------ *********************************************************************** * *********************************************************************** * x interpolation *********************************************************************** xxm_8 = F_capxm(n) xmm_8 = 1 - xxm_8 ggm_8 = F_xggm(n) ddm_8 = F_xddm(n) * t1m_8 = 1 + ggm_8 t2m_8 = 1 + ddm_8 p1m_8 = ggm_8 + t2m_8 p4m_8 = ddm_8 * t2m_8 * p1m_8 p1m_8 = ggm_8 * t1m_8 * p1m_8 t3m_8 = ggm_8 * t2m_8 t1m_8 = t1m_8 * ddm_8 p2m_8 = t2m_8 - xxm_8 p3m_8 = ggm_8 + xxm_8 t2m_8 =-xxm_8 * xmm_8 p4m_8 = t2m_8 * p3m_8 / p4m_8 p1m_8 = t2m_8 * p2m_8 / p1m_8 p3m_8 = p2m_8 * p3m_8 p2m_8 = xmm_8 * p3m_8 / t3m_8 p3m_8 = xxm_8 * p3m_8 / t1m_8 * o1 = F_nm(n)-Adw_nit o2 = F_nm(n) o3 = F_nm(n)+Adw_nit o4 = F_nm(n)+Adw_nit+Adw_nit * a1m_8 = p1m_8 * F_inm(o1-1) + p2m_8 * F_inm(o1) + p3m_8 * F_inm(o1+1) + p4m_8 * F_inm(o1+2) a2m_8 = p1m_8 * F_inm(o2-1) + p2m_8 * F_inm(o2) + p3m_8 * F_inm(o2+1) + p4m_8 * F_inm(o2+2) a3m_8 = p1m_8 * F_inm(o3-1) + p2m_8 * F_inm(o3) + p3m_8 * F_inm(o3+1) + p4m_8 * F_inm(o3+2) a4m_8 = p1m_8 * F_inm(o4-1) + p2m_8 * F_inm(o4) + p3m_8 * F_inm(o4+1) + p4m_8 * F_inm(o4+2) * b1m_8 = p1m_8 * F_inzzm(o1-1) + p2m_8 * F_inzzm(o1) + p3m_8 * F_inzzm(o1+1) + p4m_8 * F_inzzm(o1+2) b2m_8 = p1m_8 * F_inzzm(o2-1) + p2m_8 * F_inzzm(o2) + p3m_8 * F_inzzm(o2+1) + p4m_8 * F_inzzm(o2+2) b3m_8 = p1m_8 * F_inzzm(o3-1) + p2m_8 * F_inzzm(o3) + p3m_8 * F_inzzm(o3+1) + p4m_8 * F_inzzm(o3+2) b4m_8 = p1m_8 * F_inzzm(o4-1) + p2m_8 * F_inzzm(o4) + p3m_8 * F_inzzm(o4+1) + p4m_8 * F_inzzm(o4+2) * o1 = o1 + nijag o2 = o2 + nijag o3 = o3 + nijag o4 = o4 + nijag * c1m_8 = p1m_8 * F_inm(o1-1) + p2m_8 * F_inm(o1) + p3m_8 * F_inm(o1+1) + p4m_8 * F_inm(o1+2) c2m_8 = p1m_8 * F_inm(o2-1) + p2m_8 * F_inm(o2) + p3m_8 * F_inm(o2+1) + p4m_8 * F_inm(o2+2) c3m_8 = p1m_8 * F_inm(o3-1) + p2m_8 * F_inm(o3) + p3m_8 * F_inm(o3+1) + p4m_8 * F_inm(o3+2) c4m_8 = p1m_8 * F_inm(o4-1) + p2m_8 * F_inm(o4) + p3m_8 * F_inm(o4+1) + p4m_8 * F_inm(o4+2) * d1m_8 = p1m_8 * F_inzzm(o1-1) + p2m_8 * F_inzzm(o1) + p3m_8 * F_inzzm(o1+1) + p4m_8 * F_inzzm(o1+2) d2m_8 = p1m_8 * F_inzzm(o2-1) + p2m_8 * F_inzzm(o2) + p3m_8 * F_inzzm(o2+1) + p4m_8 * F_inzzm(o2+2) d3m_8 = p1m_8 * F_inzzm(o3-1) + p2m_8 * F_inzzm(o3) + p3m_8 * F_inzzm(o3+1) + p4m_8 * F_inzzm(o3+2) d4m_8 = p1m_8 * F_inzzm(o4-1) + p2m_8 * F_inzzm(o4) + p3m_8 * F_inzzm(o4+1) + p4m_8 * F_inzzm(o4+2) * * *********************************************************************** * y interpolation *********************************************************************** xxm_8 = F_capym(n) xmm_8 = 1 - xxm_8 * ggm_8 = F_yggm(n) ddm_8 = F_yddm(n) * t1m_8 = 1 + ggm_8 t2m_8 = 1 + ddm_8 p1m_8 = ggm_8 + t2m_8 p4m_8 = ddm_8 * t2m_8 * p1m_8 p1m_8 = ggm_8 * t1m_8 * p1m_8 t3m_8 = ggm_8 * t2m_8 t1m_8 = t1m_8 * ddm_8 p2m_8 = t2m_8 - xxm_8 p3m_8 = ggm_8 + xxm_8 t2m_8 =-xxm_8 * xmm_8 p4m_8 = t2m_8 * p3m_8 / p4m_8 p1m_8 = t2m_8 * p2m_8 / p1m_8 p3m_8 = p2m_8 * p3m_8 p2m_8 = xmm_8 * p3m_8 / t3m_8 p3m_8 = xxm_8 * p3m_8 / t1m_8 * a1m_y_8 = p1m_8 * a1m_8 + p2m_8 * a2m_8 + p3m_8 * a3m_8 + p4m_8 * a4m_8 b1m_y_8 = p1m_8 * b1m_8 + p2m_8 * b2m_8 + p3m_8 * b3m_8 + p4m_8 * b4m_8 c1m_y_8 = p1m_8 * c1m_8 + p2m_8 * c2m_8 + p3m_8 * c3m_8 + p4m_8 * c4m_8 d1m_y_8 = p1m_8 * d1m_8 + p2m_8 * d2m_8 + p3m_8 * d3m_8 + p4m_8 * d4m_8 * *********************************************************************** * z interpolation *********************************************************************** xxm_8 = F_capzm(n) xmm_8 = 1.0 - xxm_8 t1m_8 = F_czm(n) * ( xmm_8 + 1.0 ) t2m_8 = F_czm(n) * ( xxm_8 + 1.0 ) * * ---------------- * TRAJECTORY (END) * ---------------- * * -------------------- * ADJOINT CALCULATIONS * -------------------- * * ADJ of ******************************************************************************** * z interpolation ******************************************************************************** xm_8 = F_out(n) * a1m_y_8 t1_8 = F_out(n) * b1m_y_8 xx_8 = F_out(n) * c1m_y_8 t2_8 = F_out(n) * d1m_y_8 a1_y_8 = xmm_8 * F_out(n) b1_y_8 = t1m_8 * F_out(n) c1_y_8 = xxm_8 * F_out(n) d1_y_8 = t2m_8 * F_out(n) F_out(n)= ZERO_8 * F_cz(n) = t2_8 * ( xxm_8 + 1.0 ) + F_cz(n) xx_8 = F_czm(n) * ( t2_8 ) + xx_8 F_cz(n) = t1_8 * ( xmm_8 + 1.0 ) + F_cz(n) xm_8 = F_czm(n) * ( t1_8 ) + xm_8 * xx_8 = - xm_8 + xx_8 F_capz(n)= xx_8 + F_capz(n) * * ADJ of ******************************************************************************** * y interpolation ******************************************************************************** p1_8 = d1_y_8 * d1m_8 p2_8 = d1_y_8 * d2m_8 p3_8 = d1_y_8 * d3m_8 p4_8 = d1_y_8 * d4m_8 d1_8 = p1m_8 * d1_y_8 d2_8 = p2m_8 * d1_y_8 d3_8 = p3m_8 * d1_y_8 d4_8 = p4m_8 * d1_y_8 * p1_8 = c1_y_8 * c1m_8 + p1_8 p2_8 = c1_y_8 * c2m_8 + p2_8 p3_8 = c1_y_8 * c3m_8 + p3_8 p4_8 = c1_y_8 * c4m_8 + p4_8 c1_8 = p1m_8 * c1_y_8 c2_8 = p2m_8 * c1_y_8 c3_8 = p3m_8 * c1_y_8 c4_8 = p4m_8 * c1_y_8 * p1_8 = b1_y_8 * b1m_8 + p1_8 p2_8 = b1_y_8 * b2m_8 + p2_8 p3_8 = b1_y_8 * b3m_8 + p3_8 p4_8 = b1_y_8 * b4m_8 + p4_8 b1_8 = p1m_8 * b1_y_8 b2_8 = p2m_8 * b1_y_8 b3_8 = p3m_8 * b1_y_8 b4_8 = p4m_8 * b1_y_8 * p1_8 = a1_y_8 * a1m_8 + p1_8 p2_8 = a1_y_8 * a2m_8 + p2_8 p3_8 = a1_y_8 * a3m_8 + p3_8 p4_8 = a1_y_8 * a4m_8 + p4_8 a1_8 = p1m_8 * a1_y_8 a2_8 = p2m_8 * a1_y_8 a3_8 = p3m_8 * a1_y_8 a4_8 = p4m_8 * a1_y_8 * * --------------------------- * Recall TRAJECTORY Y (START) * --------------------------- * xxm_8 = F_capym(n) xmm_8 = 1 - xxm_8 ggm_8 = F_yggm(n) ddm_8 = F_yddm(n) * t1m_8 = 1 + ggm_8 t2m_8 = 1 + ddm_8 p1m_8 = ggm_8 + t2m_8 p40m_8 = ddm_8 * t2m_8 * p1m_8 p10m_8 = ggm_8 * t1m_8 * p1m_8 t3m_8 = ggm_8 * t2m_8 t1m_8 = t1m_8 * ddm_8 p20m_8 = t2m_8 - xxm_8 p30m_8 = ggm_8 + xxm_8 t2m_8 =-xxm_8 * xmm_8 p4m_8 = t2m_8 * p30m_8 / p40m_8 p1m_8 = t2m_8 * p20m_8 / p10m_8 p31m_8 = p20m_8* p30m_8 p2m_8 = xmm_8 * p31m_8 / t3m_8 p3m_8 = xxm_8 * p31m_8 / t1m_8 * * ------------------------- * Recall TRAJECTORY Y (END) * ------------------------- * xx_8 = p3_8 * p31m_8 / t1m_8 p3_8 = xxm_8 * p3_8 / t1m_8 * xm_8 = p2_8 * p31m_8 / t3m_8 p3_8 = xmm_8 * p2_8 / t3m_8 + p3_8 * p2_8 = p3_8 * p30m_8 p3_8 = p20m_8* p3_8 * t2_8 = p1_8 * p20m_8 / p10m_8 p2_8 = t2m_8 * p1_8 / p10m_8 + p2_8 * t2_8 = p4_8 * p30m_8 / p40m_8 + t2_8 p3_8 = t2m_8 * p4_8 / p40m_8 + p3_8 * xx_8 = -t2_8 * xmm_8 + xx_8 xm_8 =-xxm_8 * t2_8 + xm_8 * xx_8 = p3_8 + xx_8 * xx_8 = -p2_8 + xx_8 * xx_8 = - xm_8 + xx_8 F_capy(n) = xx_8 + F_capy(n) * * ADJ of ******************************************************************************** * x interpolation ******************************************************************************** * * --------------------------- * Recall TRAJECTORY X (START) * --------------------------- * xxm_8 = F_capxm(n) xmm_8 = 1 - xxm_8 ggm_8 = F_xggm(n) ddm_8 = F_xddm(n) * t1m_8 = 1 + ggm_8 t2m_8 = 1 + ddm_8 p1m_8 = ggm_8 + t2m_8 p40m_8 = ddm_8 * t2m_8 * p1m_8 p10m_8 = ggm_8 * t1m_8 * p1m_8 t3m_8 = ggm_8 * t2m_8 t1m_8 = t1m_8 * ddm_8 p20m_8 = t2m_8 - xxm_8 p30m_8 = ggm_8 + xxm_8 t2m_8 =-xxm_8 * xmm_8 p4m_8 = t2m_8 * p30m_8 / p40m_8 p1m_8 = t2m_8 * p20m_8 / p10m_8 p31m_8 = p20m_8* p30m_8 p2m_8 = xmm_8 * p31m_8 / t3m_8 p3m_8 = xxm_8 * p31m_8 / t1m_8 * * ------------------------- * Recall TRAJECTORY X (END) * ------------------------- * o1 = F_nm(n)-Adw_nit o2 = F_nm(n) o3 = F_nm(n)+Adw_nit o4 = F_nm(n)+Adw_nit+Adw_nit * o1 = o1 + nijag o2 = o2 + nijag o3 = o3 + nijag o4 = o4 + nijag * * ------------------------------------ p1_8 = d4_8 * F_inzzm(o4-1) p2_8 = d4_8 * F_inzzm(o4) p3_8 = d4_8 * F_inzzm(o4+1) p4_8 = d4_8 * F_inzzm(o4+2) * F_inzz(o4-1) = p1m_8 * d4_8 + F_inzz(o4-1) F_inzz(o4) = p2m_8 * d4_8 + F_inzz(o4) F_inzz(o4+1) = p3m_8 * d4_8 + F_inzz(o4+1) F_inzz(o4+2) = p4m_8 * d4_8 + F_inzz(o4+2) * * ------------------------------------ p1_8 = d3_8 * F_inzzm(o3-1) + p1_8 p2_8 = d3_8 * F_inzzm(o3) + p2_8 p3_8 = d3_8 * F_inzzm(o3+1) + p3_8 p4_8 = d3_8 * F_inzzm(o3+2) + p4_8 * F_inzz(o3-1) = p1m_8 * d3_8 + F_inzz (o3-1) F_inzz(o3) = p2m_8 * d3_8 + F_inzz (o3) F_inzz(o3+1) = p3m_8 * d3_8 + F_inzz (o3+1) F_inzz(o3+2) = p4m_8 * d3_8 + F_inzz (o3+2) * * ------------------------------------ p1_8 = d2_8 * F_inzzm(o2-1) + p1_8 p2_8 = d2_8 * F_inzzm(o2) + p2_8 p3_8 = d2_8 * F_inzzm(o2+1) + p3_8 p4_8 = d2_8 * F_inzzm(o2+2) + p4_8 * F_inzz(o2-1) = p1m_8 * d2_8 + F_inzz (o2-1) F_inzz(o2) = p2m_8 * d2_8 + F_inzz (o2) F_inzz(o2+1) = p3m_8 * d2_8 + F_inzz (o2+1) F_inzz(o2+2) = p4m_8 * d2_8 + F_inzz (o2+2) * * ------------------------------------ p1_8 = d1_8 * F_inzzm(o1-1) + p1_8 p2_8 = d1_8 * F_inzzm(o1) + p2_8 p3_8 = d1_8 * F_inzzm(o1+1) + p3_8 p4_8 = d1_8 * F_inzzm(o1+2) + p4_8 * F_inzz(o1-1) = p1m_8 * d1_8 + F_inzz (o1-1) F_inzz(o1) = p2m_8 * d1_8 + F_inzz (o1) F_inzz(o1+1) = p3m_8 * d1_8 + F_inzz (o1+1) F_inzz(o1+2) = p4m_8 * d1_8 + F_inzz (o1+2) * * ------------------------------------ p1_8 = c4_8 * F_inm(o4-1) + p1_8 p2_8 = c4_8 * F_inm(o4) + p2_8 p3_8 = c4_8 * F_inm(o4+1) + p3_8 p4_8 = c4_8 * F_inm(o4+2) + p4_8 * F_in(o4-1) = p1m_8 * c4_8 + F_in(o4-1) F_in(o4) = p2m_8 * c4_8 + F_in(o4) F_in(o4+1) = p3m_8 * c4_8 + F_in(o4+1) F_in(o4+2) = p4m_8 * c4_8 + F_in(o4+2) * * ------------------------------------ p1_8 = c3_8 * F_inm(o3-1) + p1_8 p2_8 = c3_8 * F_inm(o3) + p2_8 p3_8 = c3_8 * F_inm(o3+1) + p3_8 p4_8 = c3_8 * F_inm(o3+2) + p4_8 * F_in(o3-1) = p1m_8 * c3_8 + F_in(o3-1) F_in(o3) = p2m_8 * c3_8 + F_in(o3) F_in(o3+1) = p3m_8 * c3_8 + F_in(o3+1) F_in(o3+2) = p4m_8 * c3_8 + F_in(o3+2) * * ------------------------------------ p1_8 = c2_8 * F_inm(o2-1) + p1_8 p2_8 = c2_8 * F_inm(o2) + p2_8 p3_8 = c2_8 * F_inm(o2+1) + p3_8 p4_8 = c2_8 * F_inm(o2+2) + p4_8 * F_in(o2-1) = p1m_8 * c2_8 + F_in(o2-1) F_in(o2) = p2m_8 * c2_8 + F_in(o2) F_in(o2+1) = p3m_8 * c2_8 + F_in(o2+1) F_in(o2+2) = p4m_8 * c2_8 + F_in(o2+2) * * ------------------------------------ p1_8 = c1_8 * F_inm(o1-1) + p1_8 p2_8 = c1_8 * F_inm(o1) + p2_8 p3_8 = c1_8 * F_inm(o1+1) + p3_8 p4_8 = c1_8 * F_inm(o1+2) + p4_8 * F_in(o1-1) = p1m_8 * c1_8 + F_in(o1-1) F_in(o1) = p2m_8 * c1_8 + F_in(o1) F_in(o1+1) = p3m_8 * c1_8 + F_in(o1+1) F_in(o1+2) = p4m_8 * c1_8 + F_in(o1+2) * * ------------------------------------ * o1 = F_nm(n)-Adw_nit o2 = F_nm(n) o3 = F_nm(n)+Adw_nit o4 = F_nm(n)+Adw_nit+Adw_nit * * ------------------------------------ p1_8 = b4_8 * F_inzzm(o4-1) + p1_8 p2_8 = b4_8 * F_inzzm(o4) + p2_8 p3_8 = b4_8 * F_inzzm(o4+1) + p3_8 p4_8 = b4_8 * F_inzzm(o4+2) + p4_8 * F_inzz(o4-1) = p1m_8 * b4_8 + F_inzz(o4-1) F_inzz(o4) = p2m_8 * b4_8 + F_inzz(o4) F_inzz(o4+1) = p3m_8 * b4_8 + F_inzz(o4+1) F_inzz(o4+2) = p4m_8 * b4_8 + F_inzz(o4+2) * * ------------------------------------ p1_8 = b3_8 * F_inzzm(o3-1) + p1_8 p2_8 = b3_8 * F_inzzm(o3) + p2_8 p3_8 = b3_8 * F_inzzm(o3+1) + p3_8 p4_8 = b3_8 * F_inzzm(o3+2) + p4_8 * F_inzz(o3-1) = p1m_8 * b3_8 + F_inzz(o3-1) F_inzz(o3) = p2m_8 * b3_8 + F_inzz(o3) F_inzz(o3+1) = p3m_8 * b3_8 + F_inzz(o3+1) F_inzz(o3+2) = p4m_8 * b3_8 + F_inzz(o3+2) * * ------------------------------------ p1_8 = b2_8 * F_inzzm(o2-1) + p1_8 p2_8 = b2_8 * F_inzzm(o2) + p2_8 p3_8 = b2_8 * F_inzzm(o2+1) + p3_8 p4_8 = b2_8 * F_inzzm(o2+2) + p4_8 * F_inzz(o2-1) = p1m_8 * b2_8 + F_inzz(o2-1) F_inzz(o2) = p2m_8 * b2_8 + F_inzz(o2) F_inzz(o2+1) = p3m_8 * b2_8 + F_inzz(o2+1) F_inzz(o2+2) = p4m_8 * b2_8 + F_inzz(o2+2) * * ------------------------------------ p1_8 = b1_8 * F_inzzm(o1-1) + p1_8 p2_8 = b1_8 * F_inzzm(o1) + p2_8 p3_8 = b1_8 * F_inzzm(o1+1) + p3_8 p4_8 = b1_8 * F_inzzm(o1+2) + p4_8 * F_inzz(o1-1) = p1m_8 * b1_8 + F_inzz(o1-1) F_inzz(o1) = p2m_8 * b1_8 + F_inzz(o1) F_inzz(o1+1) = p3m_8 * b1_8 + F_inzz(o1+1) F_inzz(o1+2) = p4m_8 * b1_8 + F_inzz(o1+2) * * ------------------------------------ p1_8 = a4_8 * F_inm(o4-1) + p1_8 p2_8 = a4_8 * F_inm(o4) + p2_8 p3_8 = a4_8 * F_inm(o4+1) + p3_8 p4_8 = a4_8 * F_inm(o4+2) + p4_8 * F_in(o4-1) = p1m_8 * a4_8 + F_in(o4-1) F_in(o4) = p2m_8 * a4_8 + F_in(o4) F_in(o4+1) = p3m_8 * a4_8 + F_in(o4+1) F_in(o4+2) = p4m_8 * a4_8 + F_in(o4+2) * * ------------------------------------ p1_8 = a3_8 * F_inm(o3-1) + p1_8 p2_8 = a3_8 * F_inm(o3) + p2_8 p3_8 = a3_8 * F_inm(o3+1) + p3_8 p4_8 = a3_8 * F_inm(o3+2) + p4_8 * F_in(o3-1) = p1m_8 * a3_8 + F_in(o3-1) F_in(o3) = p2m_8 * a3_8 + F_in(o3) F_in(o3+1) = p3m_8 * a3_8 + F_in(o3+1) F_in(o3+2) = p4m_8 * a3_8 + F_in(o3+2) * * ------------------------------------ p1_8 = a2_8 * F_inm(o2-1) + p1_8 p2_8 = a2_8 * F_inm(o2) + p2_8 p3_8 = a2_8 * F_inm(o2+1) + p3_8 p4_8 = a2_8 * F_inm(o2+2) + p4_8 * F_in(o2-1) = p1m_8 * a2_8 + F_in(o2-1) F_in(o2) = p2m_8 * a2_8 + F_in(o2) F_in(o2+1) = p3m_8 * a2_8 + F_in(o2+1) F_in(o2+2) = p4m_8 * a2_8 + F_in(o2+2) * * ------------------------------------ p1_8 = a1_8 * F_inm(o1-1) + p1_8 p2_8 = a1_8 * F_inm(o1) + p2_8 p3_8 = a1_8 * F_inm(o1+1) + p3_8 p4_8 = a1_8 * F_inm(o1+2) + p4_8 * F_in(o1-1) = p1m_8 * a1_8 + F_in(o1-1) F_in(o1) = p2m_8 * a1_8 + F_in(o1) F_in(o1+1) = p3m_8 * a1_8 + F_in(o1+1) F_in(o1+2) = p4m_8 * a1_8 + F_in(o1+2) * ------------------------------------ * xx_8 = p3_8 * p31m_8 / t1m_8 p3_8 = xxm_8 * p3_8 / t1m_8 * xm_8 = p2_8 * p31m_8 / t3m_8 p3_8 = xmm_8 * p2_8 / t3m_8 + p3_8 * p2_8 = p3_8 * p30m_8 p3_8 = p20m_8* p3_8 * t2_8 = p1_8 * p20m_8 / p10m_8 p2_8 = t2m_8 * p1_8 / p10m_8 + p2_8 * t2_8 = p4_8 * p30m_8 / p40m_8 + t2_8 p3_8 = t2m_8 * p4_8 / p40m_8 + p3_8 * xx_8 = -t2_8 * xmm_8 + xx_8 xm_8 =-xxm_8 * t2_8 + xm_8 * xx_8 = p3_8 + xx_8 * xx_8 = -p2_8 + xx_8 * xx_8 = - xm_8 + xx_8 F_capx(n) = xx_8 + F_capx(n) * 180 continue 190 continue 200 continue * endif * return end