Source code for itmlogic.preparatory_subroutines.qlrpfl

import math
from itmlogic.preparatory_subroutines.hzns import hzns
from itmlogic.preparatory_subroutines.dlthx import dlthx
from itmlogic.preparatory_subroutines.zlsq1 import zlsq1
from itmlogic.lrprop import lrprop

[docs]def qlrpfl(prop): """ Preparatory subroutine for point-to-point mode, as in Section 43 by Hufford (see references/itm.pdf). Parameters ---------- prop : dict Contains all input propagation parameters. Returns ------- prop : dict Contains all input and output propagation parameters. """ prop['dist'] = prop['pfl'][0] * prop['pfl'][1] np = prop['pfl'][0] prop['the'], prop['dl'] = ( hzns(prop['pfl'], prop['dist'], prop['hg'], prop['gme']) ) xl = {} for j in range(0,2): xl[j] = min(15 * prop['hg'][j], 0.1 * prop['dl'][j]) xl[1] = prop['dist'] - xl[1] prop['dh'] = dlthx(prop['pfl'], xl[0], xl[1]) if prop['dl'][0] + prop['dl'][1] >= 1.5 * prop['dist']: prop['he'] = [] za, zb = zlsq1(prop['pfl'], xl[0], xl[1]) prop['he'].append(prop['hg'][0] + max(prop['pfl'][2] - za, 0)) prop['he'].append(prop['hg'][1] + max(prop['pfl'][np+1] - zb, 0)) for j in range(1, 2): prop['dl'][j] = ( math.sqrt(2 *prop['he'][j] / prop['gme']) * math.exp(-0.07 * math.sqrt(prop['dh'] / max(prop['he'][j], 5))) ) q = prop['dl'][0] + prop['dl'][1] if q <= prop['dist']: q = (prop['dist'] / q)**2 for j in range(1, 2): prop['he'][j] = prop['he'][j] * q prop['dl'][j] = ( math.sqrt(2 * prop['he'][j] / prop['gme']) * math.exp(-0.07 * math.sqrt(prop['dh'] / max(prop['he'][j], 5))) ) for j in range(0,2): q = math.sqrt(2 * prop['he'][j] / prop['gme']) prop['the'][j] = ( (0.65 * prop['dh'] * (q / prop['dl'][j] - 1) - 2 * prop['he'][j]) / q ) else: za, q = zlsq1(prop['pfl'], xl[0], 0.9 * prop['dl'][0]) q, zb = zlsq1(prop['pfl'], prop['dist'] - 0.9 * prop['dl'][1], xl[1]) prop['he'] = [] prop['he'].append(prop['hg'][0] + max(prop['pfl'][2] - za, 0)) prop['he'].append(prop['hg'][1] + max(prop['pfl'][np+2] - zb, 0)) prop['mdp'] = -1 prop['lvar'] = max(prop['lvar'], 3) if prop['mdvarx'] >= 0: prop['mdvar'] = prop['mdvarx'] prop['lvar'] = max(prop['lvar'], 4) if prop['klimx'] > 0: prop['klim'] = prop['klimx'] prop['lvar'] = 5 prop = lrprop(0, prop) return prop