#!/usr/bin/env python3
# -*- coding: utf-8 -*-

"""Calculate the required width of a microstrip for a 50 ohm impedance"""

import argparse

import matplotlib.pyplot as plt
import numpy as np
import scipy.constants as sc

from rftools.tlines import find_microstrip_width
from rftools.util import pvalf, header

np.seterr(invalid='ignore')

# Grab arguments
parser = argparse.ArgumentParser()
parser.add_argument('-t', '--thickness', help="Thickness (in mil)", default=15)
parser.add_argument('-e', '--er', help="Relative permittivity", default=2.2)
parser.add_argument('-z', '--z0', help="Desired characterisitic impedance (in ohms)", default=50)
args = parser.parse_args()

er = float(args.er)
z0 = float(args.z0)
thickness = float(args.thickness) * sc.mil

width = find_microstrip_width(er, thickness, z0)

print("")
header("Microstrip:")
print("\n\tInput values:")
pvalf("desired Z0", z0, "ohms")
pvalf("thickness (t)", thickness / sc.mil, "mil")
pvalf("rel. permittivity", er)
print("")
print("\tOutput:")
if width / sc.milli > 0.1:
    pvalf("microstrip width", width / sc.milli, "mm")
else:
    pvalf("microstrip width", width / sc.micro, "um")
print("")