{"sections":[{"heading":"Start with the supported boundary","paragraphs":["JoSIM-Pro 2.9 does not directly import arbitrary Touchstone S-parameter files or fit sampled network data. It accepts supported circuit/line models, including an already fitted passive scalar real-pole WIDEBAND model. Renaming an .s2p file, including it as circuit text or inventing a .MODEL ... S2P declaration does not convert the network.","First decide whether the external network can be represented by a supported model family. A resonant multiport, arbitrary complex-pole fit or frequency-dependent multiconductor matrix cannot be assumed equivalent to a uniform scalar line. If the supported form cannot represent the required behaviour, retain an explicit handoff limit rather than forcing coefficients into the wrong model.","If you start with S-parameter data from InductEx or TetraHenry, use the linked plotting/export and frequency-refinement guides to identify the source data and its resolution. Obtaining an accepted WIDEBAND coefficient model remains a separate step; a data or plot file alone does not supply that model."],"table":{"columns":["Available representation","Relevant boundary"],"rows":[["LOSSLESS / LCLADDER","Scalar differential delay/impedance, with a finite LC ladder for LCLADDER; no physical loss or common-mode path."],["RLGC","Constant scalar per-unit-length R, L, G and C for a uniform differential line."],["WIDEBAND","Constant scalar L/C and base R/G, plus supported nonnegative real-pole loss increments. An external fitting process must supply this representation."],["MODAL","Two independent constant lossless modes; no general modal loss or mode conversion along the line."],["@MTL","Uniform coupled line with constant symmetric passive RLGC matrices and an explicit reference conductor. It does not accept frequency-dependent matrix fits."],["Arbitrary sampled or rational multiport","No general import, vector fitting or passivity repair is established by this workflow."]],"wrap":true}},{"heading":"Prepare an external fit without losing the reference conventions","paragraphs":["In the supplied Version 1.0-style two-port reference, # Hz S RI R 50 declares hertz, scattering parameters, real/imaginary pairs and a common real 50-ohm reference. Pair order is S11, S21, S12, S22. The official IBIS specification also describes other versions, orders and formats; this deliberately small teaching parser does not implement them."],"steps":["Retain the original complex data, frequency units and band, physical port map, reference conductors/planes, reference impedances and any de-embedding. Record whether ports are single-ended or mixed-mode. A magnitude-only curve cannot preserve phase or establish the required time-domain network.","Choose a supported topology and fit form. For a scalar uniform line, obtain its length and per-length base R/L/G/C and, when needed, real-pole R/G increments. Keep the external fit procedure, residuals, causality/passivity assessment and validity band with the model.","Convert the coefficient basis and units explicitly, then validate the complete JoSIM model against the original complex response under matching termination/reference conditions. Increase NSEG and check numerical sensitivity separately from fit error.","If the representation, reference conversion or validity evidence is missing, stop at that missing step. This knowledge-base client checks a supplied model; it does not provide the external fitter or recover missing measurement metadata."]},{"heading":"Express the accepted real-pole basis","paragraphs":["For this model, s = j·2πf. R(s) = RPERL + Σ RDELTA[k]·s/(s + 2π·RFREQ[k]); G(s) has the corresponding GDELTA/GFREQ terms. Series impedance per length is R(s) + s·LPERL; shunt admittance per length is G(s) + s·CPERL. Pole frequencies in the JoSIM lists are Hz, not angular rates in rad/s.","A fitter using D + Σ residue/(s + pole) has a different coefficient basis. Algebraically, Δ·s/(s+p) = Δ − Δ·p/(s+p). Copying raw residues into RDELTA/GDELTA would therefore change the model, including its sign and constant term. Rewrite the representation and recheck its response before use.","Base R/G and all increments must be nonnegative; L/C must be positive. Matching frequency/increment lists have equal length, strictly increasing positive frequencies and at most 64 terms per list. The core rejects negative increments and unpaired lists. That validation does not fit data or repair an invalid external model."]},{"heading":"Use the complete synthetic example","paragraphs":["The five-file download supplies forward.cir, reverse.cir, wb_model.cir, reference.s2p and check_handoff.py. The line is 1 mm long. Its SI per-metre base values are R = 500 Ω/m, L = 250 nH/m, G = 0.001 S/m and C = 100 pF/m. One series-loss increment is 1000 Ω/m at 5 GHz; one shunt-loss increment is 0.002 S/m at 10 GHz. FMAX is 20 GHz.","This is a public synthetic uniform-line example, not a fit to measured hardware. The reference is the continuous line’s analytic ABCD response at 21 frequencies from 1 to 20 GHz. JoSIM uses a finite section model. Their comparison tests model admission, port reconstruction and spatial discretisation without pretending that synthetic data establish physical accuracy.","Both ports are single-ended relative to node 0 at the line ends, with real 50-ohm reference impedances. LEN uses metres consistently with the per-metre coefficients. The source and load resistors each equal 50 ohms. This symmetric reciprocal example cannot independently identify every possible port-order mistake in an unrelated network."]},{"figures":[{"asset_id":"josim-wideband-response","caption":"Actual forward-excitation node phasors. The roughly 0.5 V transfer reflects the matched source/load arrangement; S21 is reconstructed from complex data, not read directly from this plot."}],"heading":"Run and inspect the model in JoSIM-Pro","steps":["Extract all five files into a new writable folder. Open forward.cir, keep wb_model.cir beside it and save the intended source. Use a compatible licensed 2.9 GUI with the required runtime/daemon.","Choose a new CSV destination under a writable results directory in Run > Run settings..., then Run simulation. Inspect the current AC case, diagnostics and the complex magnitude/phase panels for V(P1) and V(P2). The frequency axis is displayed in GHz; CSV stores Hz.","Run reverse.cir into a different destination. The source now excites P2 while the physical P1/P2 labels remain fixed. Retain both typed complex CSVs and their current case/configuration records.","Reopen a newly committed AC CSV through File > Open to inspect it as a complex imported-result tab. This inspection does not rerun the circuit or import Touchstone data."]},{"heading":"Reconstruct all four scattering parameters","paragraphs":["The source is a 1 V peak, zero-phase Thevenin voltage behind 50 ohms; the opposite port is terminated in 50 ohms. For forward excitation, S11 = 2·V(P1) − 1 and S21 = 2·V(P2). For reverse excitation, S22 = 2·V(P2) − 1 and S12 = 2·V(P1). These formulas apply to this exact source amplitude/angle and equal real reference arrangement.","More generally divide each voltage by the complex source phasor before applying the same matched-source relationships. The common peak-to-RMS scale cancels in the dimensionless ratios; it does not make a peak voltage a power measurement. Unequal/complex references, mixed-mode transforms and other terminations need their own correct wave definitions and conversion.","Compare complex values at matching frequencies before reducing them to magnitude, dB or phase. The client stores S11, S21, S12 and S22 as real/imaginary columns. It also checks sampled maximum power-wave gain. A finite frequency-sample check is not a general proof of an arbitrary external model’s passivity or causality."]},{"code":"$ErrorActionPreference = 'Stop'\n$python = 'python'\n$josim = 'C:\\Program Files\\SUN Magnetics\\JoSIM-Pro\\bin\\josim-pro-cli.exe'\n$licence = 'C:\\Program Files\\SUN Magnetics\\Licenses\\sm_license_jpro.txt'\n& $python -B .\\check_handoff.py --josim $josim --licence $licence --results .\\handoff-results\nif ($LASTEXITCODE -ne 0) { throw 'The current model or reference comparison failed.' }\n(Get-Content -LiteralPath .\\handoff-results\\receipt.json -Raw | ConvertFrom-Json).cases | Format-Table","heading":"Check the supplied model from PowerShell","language":"powershell","paragraphs":["Run this complete command from the extracted teaching folder. Select your actual Python, compatible JoSIM 2.9 CLI and existing issued JoSIM licence path. The checked client uses 64-bit Windows CPython 3.13.11 and its standard library.","Use a new result directory. The client runs both port excitations at NSEG 4, 8 and 16, reconstructs scattering data and compares them with the supplied reference. It references the selected licence in an isolated child configuration without copying licence contents."]},{"heading":"Separate fit error, spatial refinement and device accuracy","paragraphs":["The checked maximum absolute complex error across all four S entries and 21 frequencies is about 0.00182260 at NSEG 4, 0.000454280 at 8 and 0.000113485 at 16. The teaching criterion requires decreasing error and a finest error below 0.001; the coarse model does not meet that limit. These are dimensionless complex differences, not dB or a universal relative-accuracy tolerance.","At each level, model-response.csv contains frequency_Hz and paired real/imaginary columns for S11, S21, S12 and S22. receipt.json records current status, error, input/runtime identities and output hashes. Exit 0 with status passed means this complete example met its current checks; exit 2 means input, execution or comparison failure.","The reference has no external fitting residual because it was generated from the supplied continuous-line coefficients. A real external-data workflow must separately report its fit error, spatial discretisation, transient timestep sensitivity where relevant and agreement with the intended device. The AC example does not qualify transient timing or all line families."]},{"heading":"Keep FMAX and failure recovery explicit","paragraphs":["FMAX declares the intended fit band; it does not filter a transient waveform. Standalone AC rejects a sweep containing a frequency above FMAX. The native check deliberately requests 21 GHz against 20 GHz, confirms rejection and preservation of the earlier authoritative CSV, then reruns the original saved source into a fresh generation.","For a transient application, check the relevant signal spectrum against the model’s validity and repeat timestep and NSEG refinement separately. The manual’s initial guidance is at least ten timesteps per finite-line section transit time; that is a starting resolution estimate, not an accuracy guarantee. WIDEBAND fixed-step operation requires BDF and does not accept explicit ICV/ICI relaxation state.","A missing model/include, negative increment, unpaired frequency list or invented S2P model declaration must be corrected at its source. Do not silently discard a loss term, change its sign or widen FMAX to hide a failing validation. The complete parser refuses a 75-ohm reference rather than treating it as 50 ohms.","After correction, select a new results directory and require current complete typed outputs. Existing study generations are refused. Review private logs, source paths and configurations before sharing; an old file or a plausible magnitude plot is not proof that the current handoff succeeded."]},{"code":"* Port 1 driven by a 1 V peak Thevenin source with 50 ohm source impedance\n.INCLUDE \"wb_model.cir\"\nVDRIVE DRIVE 0 DC 0 AC 1 0\nRSOURCE DRIVE P1 50\nTLINE P1 0 P2 0 TYPE=WIDEBAND MODEL=WB LEN=1m NSEG=16\nRLOAD P2 0 50\n.OPTION SEED=27\n.AC LIN 21 1G 20G\n.PRINT AC V(P1) V(P2)\n.END","heading":"Save forward.cir","language":"text"},{"code":"* Port 2 driven; the physical P1/P2 labels and 50 ohm reference are unchanged\n.INCLUDE \"wb_model.cir\"\nVDRIVE DRIVE 0 DC 0 AC 1 0\nRSOURCE DRIVE P2 50\nTLINE P1 0 P2 0 TYPE=WIDEBAND MODEL=WB LEN=1m NSEG=16\nRLOAD P1 0 50\n.OPTION SEED=27\n.AC LIN 21 1G 20G\n.PRINT AC V(P1) V(P2)\n.END","heading":"Save reverse.cir","language":"text"},{"code":"* Public synthetic uniform-line coefficients; SI units per metre\n* This supplied real-pole model was not fitted to a measured device\n.MODEL WB WIDEBAND(RPERL=500 LPERL=250n GPERL=0.001 CPERL=100p RFREQ=(5G) RDELTA=(1000) GFREQ=(10G) GDELTA=(0.002) FMAX=20G)","heading":"Save wb_model.cir","language":"text"},{"code":"! Public synthetic uniform-line reference, not measured customer data\n! 1 mm line; R=500 ohm/m L=250nH/m G=0.001S/m C=100pF/m\n! Dynamic R: 1000*s/(s+2*pi*5GHz); dynamic G: 0.002*s/(s+2*pi*10GHz)\n! Port 1=P1-to-ground; port 2=P2-to-ground; both reference planes at line ends\n! Touchstone 1 two-port order: S11 S21 S12 S22; real/imaginary; real 50 ohm\n! Continuous uniform-line ABCD model, independent of the finite JoSIM ladder\n# Hz S RI R 50\n1000000000 0.0053898014893489178 0.0017290816792524487 0.99406459176418105 -0.033148419655665728 0.99406459176418105 -0.033148419655665728 0.0053898014893489178 0.0017290816792524487\n1950000000 0.0064523793192443508 0.0029422873075120866 0.99161297417561112 -0.064182357171455817 0.99161297417561112 -0.064182357171455817 0.0064523793192443508 0.0029422873075120866\n2900000000 0.0077948983930122779 0.0035628853453049092 0.98798698236366345 -0.094569475880433046 0.98798698236366345 -0.094569475880433046 0.0077948983930122779 0.0035628853453049092\n3850000000 0.0091207772904957247 0.0036506110386246844 0.98348457094109532 -0.12434200528405333 0.98348457094109532 -0.12434200528405333 0.0091207772904957247 0.0036506110386246844\n4800000000 0.010270697888394683 0.0033600217630603952 0.9782678388733318 -0.15362688465063143 0.9782678388733318 -0.15362688465063143 0.010270697888394683 0.0033600217630603952\n5750000000 0.011196217883880397 0.0028394147426105062 0.97238923491556872 -0.18254509027261784 0.97238923491556872 -0.18254509027261784 0.011196217883880397 0.0028394147426105062\n6700000000 0.01190680185656285 0.0021961197456278922 0.96584426098656928 -0.21117704738316451 0.96584426098656928 -0.21117704738316451 0.01190680185656285 0.0021961197456278922\n7650000000 0.012432879152412275 0.001498028413172614 0.95860824128722311 -0.23956412569973776 0.95860824128722311 -0.23956412569973776 0.012432879152412275 0.001498028413172614\n8600000000 0.012807734555132032 0.00078495166337951266 0.95065435701918011 -0.26771993053300797 0.95065435701918011 -0.26771993053300797 0.012807734555132032 0.00078495166337951266\n9550000000 0.013060690959274042 7.9051332891359944e-05 0.94196044690286951 -0.2956406853957626 0.94196044690286951 -0.2956406853957626 0.013060690959274042 7.9051332891359944e-05\n10500000000 0.013215506493385877 -0.00060793383251659674 0.93251061763168963 -0.32331243524480124 0.93251061763168963 -0.32331243524480124 0.013215506493385877 -0.00060793383251659674\n11450000000 0.013290755899483489 -0.0012702030919577499 0.92229487599614612 -0.35071552995411753 0.92229487599614612 -0.35071552995411753 0.013290755899483489 -0.0012702030919577499\n12400000000 0.013300771632662625 -0.0019052484637662598 0.91130819911837802 -0.37782728169477237 0.91130819911837802 -0.37782728169477237 0.013300771632662625 -0.0019052484637662598\n13350000000 0.013256600355583103 -0.0025123346231210328 0.89954958450551814 -0.40462350499730887 0.89954958450551814 -0.40462350499730887 0.013256600355583103 -0.0025123346231210328\n14300000000 0.013166806354808176 -0.0030916388774299866 0.8870212482215204 -0.43107940062783867 0.8870212482215204 -0.43107940062783867 0.013166806354808176 -0.0030916388774299866\n15250000000 0.013038097522104119 -0.003643771118605386 0.87372799624215158 -0.45717006102247559 0.87372799624215158 -0.45717006102247559 0.013038097522104119 -0.003643771118605386\n16200000000 0.012875796792176628 -0.004169510629507601 0.85967674698456698 -0.48287075910001948 0.85967674698456698 -0.48287075910001948 0.012875796792176628 -0.004169510629507601\n17150000000 0.012684191872441986 -0.0046696660609361817 0.84487617296181994 -0.50815711347323811 0.84487617296181994 -0.50815711347323811 0.012684191872441986 -0.0046696660609361817\n18100000000 0.012466793310360108 -0.0051450050169651838 0.82933643213212127 -0.53300518332009805 0.82933643213212127 -0.53300518332009805 0.012466793310360108 -0.0051450050169651838\n19050000000 0.012226524932187149 -0.0055962226345087898 0.81306896536015749 -0.55739152342066489 0.81306896536015749 -0.55739152342066489 0.012226524932187149 -0.0055962226345087898\n20000000000 0.011965864802212001 -0.0060239316453527319 0.79608634216009289 -0.58129321685738233 0.79608634216009289 -0.58129321685738233 0.011965864802212001 -0.0060239316453527319","heading":"Save reference.s2p","language":"text"},{"code":"\"\"\"Check an already supplied scalar WIDEBAND model against a two-port reference.\n\nThis complete teaching client does not fit or convert arbitrary Touchstone data.\nThe public reference is synthetic and follows the declared uniform-line model.\n\"\"\"\nimport argparse,csv,hashlib,io,json,math,os,shutil,subprocess,sys\nfrom pathlib import Path\n\nNAMES=('forward.cir','reverse.cir','wb_model.cir','reference.s2p','check_handoff.py')\ndef sha(p):return hashlib.sha256(p.read_bytes()).hexdigest()\n\ndef reference(path):\n    rows=[];option=False\n    for line in path.read_text(encoding='ascii').splitlines():\n        text=line.split('!',1)[0].strip()\n        if not text:continue\n        if text.startswith('#'):\n            if option or text.upper().split()!=['#','HZ','S','RI','R','50']:\n                raise ValueError('This teaching parser requires one # Hz S RI R 50 option line.')\n            option=True;continue\n        if not option:raise ValueError('Missing explicit frequency/format/reference convention.')\n        values=[float(x) for x in text.split()]\n        if len(values)!=9 or not all(math.isfinite(v) for v in values):raise ValueError('Expected nine finite numbers per two-port RI row.')\n        f=values[0]\n        if f<=0 or (rows and f<=rows[-1][0]):raise ValueError('Reference frequencies must be positive and strictly increasing.')\n        # Touchstone 1 two-port order: S11, S21, S12, S22.\n        s=[complex(values[i],values[i+1]) for i in (1,3,5,7)]\n        rows.append((f,s))\n    if len(rows)!=21 or rows[0][0]!=1e9 or rows[-1][0]!=20e9:raise ValueError('Use the complete supplied 21-point reference.')\n    return rows\n\ndef ac(path):\n    first,rest=path.read_text(encoding='utf-8-sig').split('\\n',1)\n    if not first.startswith('# josim-ac-csv/1 '):raise ValueError('Expected typed complex AC data, not transient samples.')\n    metadata=json.loads(first[len('# josim-ac-csv/1 '):])\n    reader=csv.reader(io.StringIO(rest));names=next(reader)\n    if names!=['frequency (Hz)','Re(V(P1)) (V)','Im(V(P1)) (V)','Re(V(P2)) (V)','Im(V(P2)) (V)']:\n        raise ValueError('Unexpected phasor columns or port order.')\n    rows=[[float(v) for v in row] for row in reader if row]\n    if len(rows)!=21 or not all(len(row)==5 and all(math.isfinite(v) for v in row) for row in rows):\n        raise ValueError('Missing, malformed or nonfinite current AC values.')\n    return rows,metadata\n\ndef sampled_max_gain_squared(s):\n    s11,s21,s12,s22=s\n    a=abs(s11)**2+abs(s21)**2;d=abs(s12)**2+abs(s22)**2\n    b=s11.conjugate()*s12+s21.conjugate()*s22\n    return (a+d+math.sqrt((a-d)**2+4*abs(b)**2))/2\n\ndef main():\n    p=argparse.ArgumentParser(description=__doc__);p.add_argument('--josim',type=Path,required=True);p.add_argument('--licence',type=Path,required=True);p.add_argument('--results',type=Path,required=True);a=p.parse_args()\n    try:\n        root=Path(__file__).resolve().parent;original={n:sha(root/n) for n in NAMES};ref=reference(root/'reference.s2p')\n        binary,licence=[x.resolve(strict=True) for x in (a.josim,a.licence)];work=a.results.absolute()\n        if not binary.is_file() or not licence.is_file():raise ValueError('Select existing compatible CLI and issued licence files.')\n        if work.exists() or not work.parent.is_dir():raise ValueError('Use a new results directory under an existing parent.')\n        work.mkdir();home=work/'private-home';config=home/'.josimpro';config.mkdir(parents=True)\n        (config/'config.ini').write_text('[General]\\nLicenseLocation='+str(licence)+'\\n',encoding='utf-8')\n        env=os.environ.copy();env['HOME']=str(home);env['USERPROFILE']=str(home);env['LD_LIBRARY_PATH']=str(binary.parent)+':'+env.get('LD_LIBRARY_PATH','')\n        receipt={'status':'running','inputs':original,'josim_sha256':sha(binary),'cases':[],\n                 'scope':'Supplied synthetic 50-ohm scalar uniform-line model, two excitations and 4/8/16 spatial sections; no arbitrary fitting, device validation or final-package qualification.'}\n        def save():(work/'receipt.json').write_text(json.dumps(receipt,indent=2)+'\\n',encoding='utf-8')\n        save()\n        for sections in (4,8,16):\n            folder=work/f'sections-{sections}';folder.mkdir();shutil.copyfile(root/'wb_model.cir',folder/'wb_model.cir');ports={}\n            for direction in ('forward','reverse'):\n                deck=folder/(direction+'.cir');deck.write_text((root/(direction+'.cir')).read_text(encoding='utf-8').replace('NSEG=16',f'NSEG={sections}'),encoding='utf-8')\n                with (folder/(direction+'-private.log')).open('wb') as log:\n                    run=subprocess.run([str(binary),'--minimal','-P','17','-o',direction+'.csv',direction+'.cir'],cwd=folder,env=env,stdout=log,stderr=subprocess.STDOUT,timeout=120)\n                if run.returncode:raise RuntimeError('Current '+direction+' AC failed at NSEG='+str(sections)+'; inspect its private diagnostic.')\n                ports[direction],_=ac(folder/(direction+'.csv'))\n            errors=[];output=[]\n            for (f,expected),fw,rv in zip(ref,ports['forward'],ports['reverse']):\n                if abs(fw[0]-f)>1e-12*f or fw[0]!=rv[0]:raise ValueError('Frequency coordinates differ; no interpolation is performed.')\n                vp1,vp2=complex(fw[1],fw[2]),complex(fw[3],fw[4]);rp1,rp2=complex(rv[1],rv[2]),complex(rv[3],rv[4])\n                s=[2*vp1-1,2*vp2,2*rp1,2*rp2-1]\n                errors += [abs(x-y) for x,y in zip(s,expected)]\n                if sampled_max_gain_squared(s)>1+1e-10:raise ValueError('Sampled model response has power-wave gain above one.')\n                output.append([f,*[v for x in s for v in (x.real,x.imag)]])\n            with (folder/'model-response.csv').open('x',newline='',encoding='utf-8') as stream:\n                writer=csv.writer(stream);writer.writerow(['frequency_Hz','S11_re','S11_im','S21_re','S21_im','S12_re','S12_im','S22_re','S22_im']);writer.writerows(output)\n            receipt['cases'].append({'NSEG':sections,'frequencies':21,'maximum_absolute_complex_error':max(errors),\n              'response_sha256':sha(folder/'model-response.csv'),'forward_csv_sha256':sha(folder/'forward.csv'),'reverse_csv_sha256':sha(folder/'reverse.csv')});save()\n        errors=[row['maximum_absolute_complex_error'] for row in receipt['cases']]\n        if not errors[2]<errors[1]<errors[0] or errors[-1]>.001:raise ValueError('The supplied spatial-refinement/reference criterion was not met.')\n        if any(sha(root/n)!=h for n,h in original.items()):raise ValueError('An original teaching input changed.')\n        receipt.update(status='passed',inputs_preserved=True,reference_impedance_ohm=50,frequency_range_Hz=[1e9,20e9]);save()\n        print(json.dumps({'status':'passed','maximum_absolute_complex_errors':errors}));return 0\n    except (OSError,ValueError,RuntimeError,subprocess.TimeoutExpired) as error:\n        if 'receipt' in locals():receipt.update(status='failed',reason=str(error));save()\n        print(str(error),file=sys.stderr);return 2\n\nif __name__=='__main__':raise SystemExit(main())","heading":"Save check_handoff.py","language":"python"}],"canonical_url":"https://www.sun-magnetics.com/knowledge-base/sparameter-model-handoff","url":"/knowledge-base/sparameter-model-handoff","known_issues":[],"search_record":{"execution":true,"relatedProducts":["InductEx","TetraHenry"],"version_tags":["JoSIM-Pro 2.9 target"],"text":"Hand off an already fitted line model from external network data Understand the Touchstone import limit, preserve port/reference conventions and validate a supplied passive real-pole WIDEBAND model against a complete two-port example. JoSIM-Pro 2.9.0 release target; current Windows native and CLI scalar-line checks How to Touchstone s2p S-Parameter external network model WIDEBAND real pole RDELTA GDELTA RFREQ GFREQ FMAX NSEG 50 ohm reference impedance S11 S21 S12 S22 ABCD vector fitting convert passivity unsupported rejected coefficient residues radians Hz Start with the supported boundary JoSIM-Pro 2.9 does not directly import arbitrary Touchstone S-parameter files or fit sampled network data. It accepts supported circuit/line models, including an already fitted passive scalar real-pole WIDEBAND model. Renaming an .s2p file, including it as circuit text or inventing a .MODEL ... S2P declaration does not convert the network. First decide whether the external network can be represented by a supported model family. A resonant multiport, arbitrary complex-pole fit or frequency-dependent multiconductor matrix cannot be assumed equivalent to a uniform scalar line. If the supported form cannot represent the required behaviour, retain an explicit handoff limit rather than forcing coefficients into the wrong model. If you start with S-parameter data from InductEx or TetraHenry, use the linked plotting/export and frequency-refinement guides to identify the source data and its resolution. Obtaining an accepted WIDEBAND coefficient model remains a separate step; a data or plot file alone does not supply that model.  Available representation Relevant boundary LOSSLESS / LCLADDER Scalar differential delay/impedance, with a finite LC ladder for LCLADDER; no physical loss or common-mode path. RLGC Constant scalar per-unit-length R, L, G and C for a uniform differential line. WIDEBAND Constant scalar L/C and base R/G, plus supported nonnegative real-pole loss increments. An external fitting process must supply this representation. MODAL Two independent constant lossless modes; no general modal loss or mode conversion along the line. @MTL Uniform coupled line with constant symmetric passive RLGC matrices and an explicit reference conductor. It does not accept frequency-dependent matrix fits. Arbitrary sampled or rational multiport No general import, vector fitting or passivity repair is established by this workflow. Prepare an external fit without losing the reference conventions In the supplied Version 1.0-style two-port reference, # Hz S RI R 50 declares hertz, scattering parameters, real/imaginary pairs and a common real 50-ohm reference. Pair order is S11, S21, S12, S22. The official IBIS specification also describes other versions, orders and formats; this deliberately small teaching parser does not implement them. Retain the original complex data, frequency units and band, physical port map, reference conductors/planes, reference impedances and any de-embedding. Record whether ports are single-ended or mixed-mode. A magnitude-only curve cannot preserve phase or establish the required time-domain network. Choose a supported topology and fit form. For a scalar uniform line, obtain its length and per-length base R/L/G/C and, when needed, real-pole R/G increments. Keep the external fit procedure, residuals, causality/passivity assessment and validity band with the model. Convert the coefficient basis and units explicitly, then validate the complete JoSIM model against the original complex response under matching termination/reference conditions. Increase NSEG and check numerical sensitivity separately from fit error. If the representation, reference conversion or validity evidence is missing, stop at that missing step. This knowledge-base client checks a supplied model; it does not provide the external fitter or recover missing measurement metadata.  Express the accepted real-pole basis For this model, s = j·2πf. R(s) = RPERL + Σ RDELTA[k]·s/(s + 2π·RFREQ[k]); G(s) has the corresponding GDELTA/GFREQ terms. Series impedance per length is R(s) + s·LPERL; shunt admittance per length is G(s) + s·CPERL. Pole frequencies in the JoSIM lists are Hz, not angular rates in rad/s. A fitter using D + Σ residue/(s + pole) has a different coefficient basis. Algebraically, Δ·s/(s+p) = Δ − Δ·p/(s+p). Copying raw residues into RDELTA/GDELTA would therefore change the model, including its sign and constant term. Rewrite the representation and recheck its response before use. Base R/G and all increments must be nonnegative; L/C must be positive. Matching frequency/increment lists have equal length, strictly increasing positive frequencies and at most 64 terms per list. The core rejects negative increments and unpaired lists. That validation does not fit data or repair an invalid external model.  Use the complete synthetic example The five-file download supplies forward.cir, reverse.cir, wb_model.cir, reference.s2p and check_handoff.py. The line is 1 mm long. Its SI per-metre base values are R = 500 Ω/m, L = 250 nH/m, G = 0.001 S/m and C = 100 pF/m. One series-loss increment is 1000 Ω/m at 5 GHz; one shunt-loss increment is 0.002 S/m at 10 GHz. FMAX is 20 GHz. This is a public synthetic uniform-line example, not a fit to measured hardware. The reference is the continuous line’s analytic ABCD response at 21 frequencies from 1 to 20 GHz. JoSIM uses a finite section model. Their comparison tests model admission, port reconstruction and spatial discretisation without pretending that synthetic data establish physical accuracy. Both ports are single-ended relative to node 0 at the line ends, with real 50-ohm reference impedances. LEN uses metres consistently with the per-metre coefficients. The source and load resistors each equal 50 ohms. This symmetric reciprocal example cannot independently identify every possible port-order mistake in an unrelated network.  Run and inspect the model in JoSIM-Pro Extract all five files into a new writable folder. Open forward.cir, keep wb_model.cir beside it and save the intended source. Use a compatible licensed 2.9 GUI with the required runtime/daemon. Choose a new CSV destination under a writable results directory in Run > Run settings..., then Run simulation. Inspect the current AC case, diagnostics and the complex magnitude/phase panels for V(P1) and V(P2). The frequency axis is displayed in GHz; CSV stores Hz. Run reverse.cir into a different destination. The source now excites P2 while the physical P1/P2 labels remain fixed. Retain both typed complex CSVs and their current case/configuration records. Reopen a newly committed AC CSV through File > Open to inspect it as a complex imported-result tab. This inspection does not rerun the circuit or import Touchstone data.  Actual forward-excitation node phasors. The roughly 0.5 V transfer reflects the matched source/load arrangement; S21 is reconstructed from complex data, not read directly from this plot. Current native AC panels show the magnitude and phase of V(P1) and V(P2) under port-1 excitation. The source and load impedances are 50 ohms; these are node phasors, not direct scattering-parameter traces. Reconstruct all four scattering parameters The source is a 1 V peak, zero-phase Thevenin voltage behind 50 ohms; the opposite port is terminated in 50 ohms. For forward excitation, S11 = 2·V(P1) − 1 and S21 = 2·V(P2). For reverse excitation, S22 = 2·V(P2) − 1 and S12 = 2·V(P1). These formulas apply to this exact source amplitude/angle and equal real reference arrangement. More generally divide each voltage by the complex source phasor before applying the same matched-source relationships. The common peak-to-RMS scale cancels in the dimensionless ratios; it does not make a peak voltage a power measurement. Unequal/complex references, mixed-mode transforms and other terminations need their own correct wave definitions and conversion. Compare complex values at matching frequencies before reducing them to magnitude, dB or phase. The client stores S11, S21, S12 and S22 as real/imaginary columns. It also checks sampled maximum power-wave gain. A finite frequency-sample check is not a general proof of an arbitrary external model’s passivity or causality.  Check the supplied model from PowerShell Run this complete command from the extracted teaching folder. Select your actual Python, compatible JoSIM 2.9 CLI and existing issued JoSIM licence path. The checked client uses 64-bit Windows CPython 3.13.11 and its standard library. Use a new result directory. The client runs both port excitations at NSEG 4, 8 and 16, reconstructs scattering data and compares them with the supplied reference. It references the selected licence in an isolated child configuration without copying licence contents. $ErrorActionPreference = 'Stop'\n$python = 'python'\n$josim = 'C:\\Program Files\\SUN Magnetics\\JoSIM-Pro\\bin\\josim-pro-cli.exe'\n$licence = 'C:\\Program Files\\SUN Magnetics\\Licenses\\sm_license_jpro.txt'\n& $python -B .\\check_handoff.py --josim $josim --licence $licence --results .\\handoff-results\nif ($LASTEXITCODE -ne 0) { throw 'The current model or reference comparison failed.' }\n(Get-Content -LiteralPath .\\handoff-results\\receipt.json -Raw | ConvertFrom-Json).cases | Format-Table Separate fit error, spatial refinement and device accuracy The checked maximum absolute complex error across all four S entries and 21 frequencies is about 0.00182260 at NSEG 4, 0.000454280 at 8 and 0.000113485 at 16. The teaching criterion requires decreasing error and a finest error below 0.001; the coarse model does not meet that limit. These are dimensionless complex differences, not dB or a universal relative-accuracy tolerance. At each level, model-response.csv contains frequency_Hz and paired real/imaginary columns for S11, S21, S12 and S22. receipt.json records current status, error, input/runtime identities and output hashes. Exit 0 with status passed means this complete example met its current checks; exit 2 means input, execution or comparison failure. The reference has no external fitting residual because it was generated from the supplied continuous-line coefficients. A real external-data workflow must separately report its fit error, spatial discretisation, transient timestep sensitivity where relevant and agreement with the intended device. The AC example does not qualify transient timing or all line families.  Keep FMAX and failure recovery explicit FMAX declares the intended fit band; it does not filter a transient waveform. Standalone AC rejects a sweep containing a frequency above FMAX. The native check deliberately requests 21 GHz against 20 GHz, confirms rejection and preservation of the earlier authoritative CSV, then reruns the original saved source into a fresh generation. For a transient application, check the relevant signal spectrum against the model’s validity and repeat timestep and NSEG refinement separately. The manual’s initial guidance is at least ten timesteps per finite-line section transit time; that is a starting resolution estimate, not an accuracy guarantee. WIDEBAND fixed-step operation requires BDF and does not accept explicit ICV/ICI relaxation state. A missing model/include, negative increment, unpaired frequency list or invented S2P model declaration must be corrected at its source. Do not silently discard a loss term, change its sign or widen FMAX to hide a failing validation. The complete parser refuses a 75-ohm reference rather than treating it as 50 ohms. After correction, select a new results directory and require current complete typed outputs. Existing study generations are refused. Review private logs, source paths and configurations before sharing; an old file or a plausible magnitude plot is not proof that the current handoff succeeded.  Save forward.cir * Port 1 driven by a 1 V peak Thevenin source with 50 ohm source impedance\n.INCLUDE \"wb_model.cir\"\nVDRIVE DRIVE 0 DC 0 AC 1 0\nRSOURCE DRIVE P1 50\nTLINE P1 0 P2 0 TYPE=WIDEBAND MODEL=WB LEN=1m NSEG=16\nRLOAD P2 0 50\n.OPTION SEED=27\n.AC LIN 21 1G 20G\n.PRINT AC V(P1) V(P2)\n.END Save reverse.cir * Port 2 driven; the physical P1/P2 labels and 50 ohm reference are unchanged\n.INCLUDE \"wb_model.cir\"\nVDRIVE DRIVE 0 DC 0 AC 1 0\nRSOURCE DRIVE P2 50\nTLINE P1 0 P2 0 TYPE=WIDEBAND MODEL=WB LEN=1m NSEG=16\nRLOAD P1 0 50\n.OPTION SEED=27\n.AC LIN 21 1G 20G\n.PRINT AC V(P1) V(P2)\n.END Save wb_model.cir * Public synthetic uniform-line coefficients; SI units per metre\n* This supplied real-pole model was not fitted to a measured device\n.MODEL WB WIDEBAND(RPERL=500 LPERL=250n GPERL=0.001 CPERL=100p RFREQ=(5G) RDELTA=(1000) GFREQ=(10G) GDELTA=(0.002) FMAX=20G) Save reference.s2p ! Public synthetic uniform-line reference, not measured customer data\n! 1 mm line; R=500 ohm/m L=250nH/m G=0.001S/m C=100pF/m\n! Dynamic R: 1000*s/(s+2*pi*5GHz); dynamic G: 0.002*s/(s+2*pi*10GHz)\n! Port 1=P1-to-ground; port 2=P2-to-ground; both reference planes at line ends\n! Touchstone 1 two-port order: S11 S21 S12 S22; real/imaginary; real 50 ohm\n! Continuous uniform-line ABCD model, independent of the finite JoSIM ladder\n# Hz S RI R 50\n1000000000 0.0053898014893489178 0.0017290816792524487 0.99406459176418105 -0.033148419655665728 0.99406459176418105 -0.033148419655665728 0.0053898014893489178 0.0017290816792524487\n1950000000 0.0064523793192443508 0.0029422873075120866 0.99161297417561112 -0.064182357171455817 0.99161297417561112 -0.064182357171455817 0.0064523793192443508 0.0029422873075120866\n2900000000 0.0077948983930122779 0.0035628853453049092 0.98798698236366345 -0.094569475880433046 0.98798698236366345 -0.094569475880433046 0.0077948983930122779 0.0035628853453049092\n3850000000 0.0091207772904957247 0.0036506110386246844 0.98348457094109532 -0.12434200528405333 0.98348457094109532 -0.12434200528405333 0.0091207772904957247 0.0036506110386246844\n4800000000 0.010270697888394683 0.0033600217630603952 0.9782678388733318 -0.15362688465063143 0.9782678388733318 -0.15362688465063143 0.010270697888394683 0.0033600217630603952\n5750000000 0.011196217883880397 0.0028394147426105062 0.97238923491556872 -0.18254509027261784 0.97238923491556872 -0.18254509027261784 0.011196217883880397 0.0028394147426105062\n6700000000 0.01190680185656285 0.0021961197456278922 0.96584426098656928 -0.21117704738316451 0.96584426098656928 -0.21117704738316451 0.01190680185656285 0.0021961197456278922\n7650000000 0.012432879152412275 0.001498028413172614 0.95860824128722311 -0.23956412569973776 0.95860824128722311 -0.23956412569973776 0.012432879152412275 0.001498028413172614\n8600000000 0.012807734555132032 0.00078495166337951266 0.95065435701918011 -0.26771993053300797 0.95065435701918011 -0.26771993053300797 0.012807734555132032 0.00078495166337951266\n9550000000 0.013060690959274042 7.9051332891359944e-05 0.94196044690286951 -0.2956406853957626 0.94196044690286951 -0.2956406853957626 0.013060690959274042 7.9051332891359944e-05\n10500000000 0.013215506493385877 -0.00060793383251659674 0.93251061763168963 -0.32331243524480124 0.93251061763168963 -0.32331243524480124 0.013215506493385877 -0.00060793383251659674\n11450000000 0.013290755899483489 -0.0012702030919577499 0.92229487599614612 -0.35071552995411753 0.92229487599614612 -0.35071552995411753 0.013290755899483489 -0.0012702030919577499\n12400000000 0.013300771632662625 -0.0019052484637662598 0.91130819911837802 -0.37782728169477237 0.91130819911837802 -0.37782728169477237 0.013300771632662625 -0.0019052484637662598\n13350000000 0.013256600355583103 -0.0025123346231210328 0.89954958450551814 -0.40462350499730887 0.89954958450551814 -0.40462350499730887 0.013256600355583103 -0.0025123346231210328\n14300000000 0.013166806354808176 -0.0030916388774299866 0.8870212482215204 -0.43107940062783867 0.8870212482215204 -0.43107940062783867 0.013166806354808176 -0.0030916388774299866\n15250000000 0.013038097522104119 -0.003643771118605386 0.87372799624215158 -0.45717006102247559 0.87372799624215158 -0.45717006102247559 0.013038097522104119 -0.003643771118605386\n16200000000 0.012875796792176628 -0.004169510629507601 0.85967674698456698 -0.48287075910001948 0.85967674698456698 -0.48287075910001948 0.012875796792176628 -0.004169510629507601\n17150000000 0.012684191872441986 -0.0046696660609361817 0.84487617296181994 -0.50815711347323811 0.84487617296181994 -0.50815711347323811 0.012684191872441986 -0.0046696660609361817\n18100000000 0.012466793310360108 -0.0051450050169651838 0.82933643213212127 -0.53300518332009805 0.82933643213212127 -0.53300518332009805 0.012466793310360108 -0.0051450050169651838\n19050000000 0.012226524932187149 -0.0055962226345087898 0.81306896536015749 -0.55739152342066489 0.81306896536015749 -0.55739152342066489 0.012226524932187149 -0.0055962226345087898\n20000000000 0.011965864802212001 -0.0060239316453527319 0.79608634216009289 -0.58129321685738233 0.79608634216009289 -0.58129321685738233 0.011965864802212001 -0.0060239316453527319 Save check_handoff.py \"\"\"Check an already supplied scalar WIDEBAND model against a two-port reference.\n\nThis complete teaching client does not fit or convert arbitrary Touchstone data.\nThe public reference is synthetic and follows the declared uniform-line model.\n\"\"\"\nimport argparse,csv,hashlib,io,json,math,os,shutil,subprocess,sys\nfrom pathlib import Path\n\nNAMES=('forward.cir','reverse.cir','wb_model.cir','reference.s2p','check_handoff.py')\ndef sha(p):return hashlib.sha256(p.read_bytes()).hexdigest()\n\ndef reference(path):\n    rows=[];option=False\n    for line in path.read_text(encoding='ascii').splitlines():\n        text=line.split('!',1)[0].strip()\n        if not text:continue\n        if text.startswith('#'):\n            if option or text.upper().split()!=['#','HZ','S','RI','R','50']:\n                raise ValueError('This teaching parser requires one # Hz S RI R 50 option line.')\n            option=True;continue\n        if not option:raise ValueError('Missing explicit frequency/format/reference convention.')\n        values=[float(x) for x in text.split()]\n        if len(values)!=9 or not all(math.isfinite(v) for v in values):raise ValueError('Expected nine finite numbers per two-port RI row.')\n        f=values[0]\n        if f<=0 or (rows and f<=rows[-1][0]):raise ValueError('Reference frequencies must be positive and strictly increasing.')\n        # Touchstone 1 two-port order: S11, S21, S12, S22.\n        s=[complex(values[i],values[i+1]) for i in (1,3,5,7)]\n        rows.append((f,s))\n    if len(rows)!=21 or rows[0][0]!=1e9 or rows[-1][0]!=20e9:raise ValueError('Use the complete supplied 21-point reference.')\n    return rows\n\ndef ac(path):\n    first,rest=path.read_text(encoding='utf-8-sig').split('\\n',1)\n    if not first.startswith('# josim-ac-csv/1 '):raise ValueError('Expected typed complex AC data, not transient samples.')\n    metadata=json.loads(first[len('# josim-ac-csv/1 '):])\n    reader=csv.reader(io.StringIO(rest));names=next(reader)\n    if names!=['frequency (Hz)','Re(V(P1)) (V)','Im(V(P1)) (V)','Re(V(P2)) (V)','Im(V(P2)) (V)']:\n        raise ValueError('Unexpected phasor columns or port order.')\n    rows=[[float(v) for v in row] for row in reader if row]\n    if len(rows)!=21 or not all(len(row)==5 and all(math.isfinite(v) for v in row) for row in rows):\n        raise ValueError('Missing, malformed or nonfinite current AC values.')\n    return rows,metadata\n\ndef sampled_max_gain_squared(s):\n    s11,s21,s12,s22=s\n    a=abs(s11)**2+abs(s21)**2;d=abs(s12)**2+abs(s22)**2\n    b=s11.conjugate()*s12+s21.conjugate()*s22\n    return (a+d+math.sqrt((a-d)**2+4*abs(b)**2))/2\n\ndef main():\n    p=argparse.ArgumentParser(description=__doc__);p.add_argument('--josim',type=Path,required=True);p.add_argument('--licence',type=Path,required=True);p.add_argument('--results',type=Path,required=True);a=p.parse_args()\n    try:\n        root=Path(__file__).resolve().parent;original={n:sha(root/n) for n in NAMES};ref=reference(root/'reference.s2p')\n        binary,licence=[x.resolve(strict=True) for x in (a.josim,a.licence)];work=a.results.absolute()\n        if not binary.is_file() or not licence.is_file():raise ValueError('Select existing compatible CLI and issued licence files.')\n        if work.exists() or not work.parent.is_dir():raise ValueError('Use a new results directory under an existing parent.')\n        work.mkdir();home=work/'private-home';config=home/'.josimpro';config.mkdir(parents=True)\n        (config/'config.ini').write_text('[General]\\nLicenseLocation='+str(licence)+'\\n',encoding='utf-8')\n        env=os.environ.copy();env['HOME']=str(home);env['USERPROFILE']=str(home);env['LD_LIBRARY_PATH']=str(binary.parent)+':'+env.get('LD_LIBRARY_PATH','')\n        receipt={'status':'running','inputs':original,'josim_sha256':sha(binary),'cases':[],\n                 'scope':'Supplied synthetic 50-ohm scalar uniform-line model, two excitations and 4/8/16 spatial sections; no arbitrary fitting, device validation or final-package qualification.'}\n        def save():(work/'receipt.json').write_text(json.dumps(receipt,indent=2)+'\\n',encoding='utf-8')\n        save()\n        for sections in (4,8,16):\n            folder=work/f'sections-{sections}';folder.mkdir();shutil.copyfile(root/'wb_model.cir',folder/'wb_model.cir');ports={}\n            for direction in ('forward','reverse'):\n                deck=folder/(direction+'.cir');deck.write_text((root/(direction+'.cir')).read_text(encoding='utf-8').replace('NSEG=16',f'NSEG={sections}'),encoding='utf-8')\n                with (folder/(direction+'-private.log')).open('wb') as log:\n                    run=subprocess.run([str(binary),'--minimal','-P','17','-o',direction+'.csv',direction+'.cir'],cwd=folder,env=env,stdout=log,stderr=subprocess.STDOUT,timeout=120)\n                if run.returncode:raise RuntimeError('Current '+direction+' AC failed at NSEG='+str(sections)+'; inspect its private diagnostic.')\n                ports[direction],_=ac(folder/(direction+'.csv'))\n            errors=[];output=[]\n            for (f,expected),fw,rv in zip(ref,ports['forward'],ports['reverse']):\n                if abs(fw[0]-f)>1e-12*f or fw[0]!=rv[0]:raise ValueError('Frequency coordinates differ; no interpolation is performed.')\n                vp1,vp2=complex(fw[1],fw[2]),complex(fw[3],fw[4]);rp1,rp2=complex(rv[1],rv[2]),complex(rv[3],rv[4])\n                s=[2*vp1-1,2*vp2,2*rp1,2*rp2-1]\n                errors += [abs(x-y) for x,y in zip(s,expected)]\n                if sampled_max_gain_squared(s)>1+1e-10:raise ValueError('Sampled model response has power-wave gain above one.')\n                output.append([f,*[v for x in s for v in (x.real,x.imag)]])\n            with (folder/'model-response.csv').open('x',newline='',encoding='utf-8') as stream:\n                writer=csv.writer(stream);writer.writerow(['frequency_Hz','S11_re','S11_im','S21_re','S21_im','S12_re','S12_im','S22_re','S22_im']);writer.writerows(output)\n            receipt['cases'].append({'NSEG':sections,'frequencies':21,'maximum_absolute_complex_error':max(errors),\n              'response_sha256':sha(folder/'model-response.csv'),'forward_csv_sha256':sha(folder/'forward.csv'),'reverse_csv_sha256':sha(folder/'reverse.csv')});save()\n        errors=[row['maximum_absolute_complex_error'] for row in receipt['cases']]\n        if not errors[2]<errors[1]<errors[0] or errors[-1]>.001:raise ValueError('The supplied spatial-refinement/reference criterion was not met.')\n        if any(sha(root/n)!=h for n,h in original.items()):raise ValueError('An original teaching input changed.')\n        receipt.update(status='passed',inputs_preserved=True,reference_impedance_ohm=50,frequency_range_Hz=[1e9,20e9]);save()\n        print(json.dumps({'status':'passed','maximum_absolute_complex_errors':errors}));return 0\n    except (OSError,ValueError,RuntimeError,subprocess.TimeoutExpired) as error:\n        if 'receipt' in locals():receipt.update(status='failed',reason=str(error));save()\n        print(str(error),file=sys.stderr);return 2\n\nif __name__=='__main__':raise SystemExit(main())","id":"sparameter-model-handoff","keywords":"Touchstone s2p S-Parameter external network model WIDEBAND real pole RDELTA GDELTA RFREQ GFREQ FMAX NSEG 50 ohm reference impedance S11 S21 S12 S22 ABCD vector fitting convert passivity unsupported rejected coefficient residues radians Hz","kind":"How to","title":"Hand off an already fitted line model from external network data","product":"JoSIM-Pro"},"version":"2.9.0 release target; current Windows native and CLI scalar-line checks","id":"sparameter-model-handoff","related":["/knowledge-base/josim-ac-analysis","/knowledge-base/josim-transient-timestep","/knowledge-base/josim-missing-include","/knowledge-base/inductex-export-sparameters","/knowledge-base/inductex-frequency-refinement"],"downloads":[{"url":"/_functions/kbExample?name=sparameter-handoff.zip","scope":"Exact checked input files plus instructions; final-release/platform applicability remains pending.","files":["forward.cir","reverse.cir","wb_model.cir","reference.s2p","check_handoff.py","README.txt"],"id":"sparameter-handoff","requires":["Compatible licensed JoSIM 2.9 GUI/CLI; preserve both decks and their model library","Python 3 standard library for the complete comparison; new result directory; supplied 50-ohm RI reference only"],"title":"Complete supplied WIDEBAND model and synthetic two-port reference"}],"publication_status":"published","numerical_output":null,"provenance":{"execution_checks":[{"routes":["cli"],"scope":"Frozen licensed Windows JoSIM 2.9 CLI, supplied synthetic passive scalar real-pole line, independent continuous ABCD reference, two physical port excitations, 4/8/16 spatial refinement and invalid-model/band/reference recovery. The client does not fit arbitrary Touchstone, validate a measured network, establish transient timestep accuracy or qualify final packages Actual browser-downloaded complete five-input ZIP and exact PowerShell 7 article/README command with only Python/CLI executable selections changed. Fresh folder with spaces; six current complex AC arrays and three reconstructed response hashes reproduce the reviewed study. No external fitting, transient, physical-device or final-package qualification","result":"passed","articles":["sparameter-model-handoff"],"purpose":"already-fitted-model-two-port-refinement-and-invalid-input-recovery","version":"Frozen maintained Windows JoSIM-Pro 2.9 candidate","id":"VAL-053","records":["18 independent scoped checks","10 actual-download/exact-PowerShell-command checks"],"limit":"Synthetic uniform scalar line only. No arbitrary Touchstone fitting/conversion, measured-device validity, frequency-dependent multiconductor matrices, transient timestep or final-package qualification.","observed":{"maximum_complex_error_by_sections":{"4":0.0018225999052282776,"8":0.0004542799977591027,"16":0.0001134847284482147},"section_counts":[4,8,16],"range_Hz":[1000000000,20000000000],"reference_impedance_ohm":50,"maximum_continuous_reference_difference":3.510833468576701e-16,"maximum_reference_gain_squared":0.9998962589926577,"frequencies":21}},{"routes":["gui-native-scenario"],"scope":"Frozen maintained Windows JoSIM 2.9 native GUI with normal licensed runtime: supplied model forward/reverse AC, FMAX rejection with prior report preservation, saved-source recovery and current typed AC reopen. Images display node phasors under known matched excitation; scattering reconstruction is independently checked. No external fitting, physical picker, general transient or final-package qualification","result":"passed","articles":["sparameter-model-handoff"],"purpose":"native-model-ac-band-rejection-and-typed-result-reopen","version":"Frozen maintained Windows JoSIM-Pro 2.9 candidate","id":"VAL-054","records":["13 independent scoped checks"],"limit":"Synthetic uniform scalar line only. No arbitrary Touchstone fitting/conversion, measured-device validity, frequency-dependent multiconductor matrices, transient timestep or final-package qualification.","observed":{"frequencies":21,"native_maximum_complex_error":0.0001134847284482147,"output":"typed peak complex node-voltage phasors, not direct Touchstone import","reference_impedance_ohm":50}}],"figure_evidence":[{"evidence_limit":"Actual supplied scalar model execution and node-phasor presentation. Scattering reconstruction, spatial refinement and reference checks are separate; no arbitrary import/fitting or final-package qualification.","id":"josim-wideband-response","reference_label":"Windows current-source JoSIM 2.9 native WIDEBAND scenario, reviewed 4 November 2026"}],"review_notes":["Question classified under JoSIM-Pro because the requested endpoint and supported model contract are JoSIM-specific. No arbitrary network conversion is claimed. Eighteen CLI/reference and 13 native/artifact checks cover the complete supplied synthetic model, with full operator, external fitting, transient and final-package review remaining."],"scope":"Recorded inputs/builds only. Complete walkthrough and final-package acceptance remain separate.","verification_requirements":{"gui_method":"product-native-scenario","status":"review-incomplete","illustrations":"required","required":["technical-review","release-applicability","execution","gui-workflow","numerical-interpretation","recovery","illustrations"],"legacy_walkthrough_field":"pending retained; physical operator, external fitting and final packages remain"},"sources":[{"id":"josim-pro:docs/manual_source/sections/syntax.tex","section":"Transmission line: supported model families, WIDEBAND basis, units, band and solver limits"},{"id":"josim-pro:docs/manual_source/sections/gui_simulation_results.tex","section":"AC complex results and native import/reopen"},{"id":"published:ibis-touchstone-2.1","section":"Version 1.0 option line, two-port order and reference conventions; pages 7–15"},{"id":"validation:sparameter-handoff-20261104","section":"VAL-053 independent two-port/refinement/invalid-input checks; VAL-054 native execution and band recovery"}]},"title":"Hand off an already fitted line model from external network data","type":"How to","markdown_url":"/_functions/kbResource?path=markdown%2Fsparameter-model-handoff.md","summary":"Understand the Touchstone import limit, preserve port/reference conventions and validate a supplied passive real-pole WIDEBAND model against a complete two-port example.","product":"JoSIM-Pro"}