Changes

Using Python to Create Functions, Models & Scripts

8,326 bytes removed, 15:51, 25 June 2018
[[Image:Splash-generic2.jpg|right|800px720px]]
<table>
<tr>
<td>[[image:Cube-icon.png | link=Getting_Started_with_EM.CUBECube]] [[image:cad-ico.png | link=Building Geometrical Constructions in CubeCAD]] [[image:fdtd-ico.png | link=EM.Tempo]] [[image:prop-ico.png | link=EM.Terrano]] [[image:postatic-ico.png | link=EM.IlluminaFerma]] [[image:staticplanar-ico.png | link=EM.FermaPicasso]] [[image:planarmetal-ico.png | link=EM.PicassoLibera]] [[image:metalpo-ico.png | link=EM.LiberaIllumina]] </td>
<tr>
</table>
[[Image:Back_icon.png|40px30px]] '''[[EM.Cube | Back to EM.Cube Main Page]]'''
== Applications of Python Scripting in EM.Cube ==
* Defining custom temporal excitation waveforms in [[EM.Tempo]]
Mathematical expressions are indeed text strings made up of reserved names like variable or standard output parameters in combination with operators and functions. You can use the basic arithmetic operators: addition "+", subtraction "-", multiplication "*", division "/", as well as the right and left parentheses "(" and ")" as delimiters. <b>For raising powers, you can either use the power function pow(x,y) or simply use the symbol "**", <i>e.g.</i> "x**y"</b>. The Pi number &pi; = 3.1415926... is denoted by "pi" as a reserved name, and letter "e" stands for the Euler number e = 2.7182818... or the base of natural logarithm.
== EM.Cube's Function Library ==
</table>
The table below gives a list of all the currently available library functions in [[EM.Cube]]Image{| class="wikitable"!scope="col"| Function Name / Syntax!scope="col"| Description!scope="col"| Notes|-| style="width:270px;" |sign(x)| style="width:270px;" |Sign function| style="width:270px;" | 1 if x>0, -1 if x<0|-| fac(x)| Factorial| for integer values of x: n! = n(n-1)(n-2)Info_icon...3.2.1png|-| fac2(x)| Double factorial| for even integer values of x: n!! = n(n-2)(n-4)...4.2, for odd integer values of x: n!! = n(n-2)(n-4)...5.3|-| ceiling(x)| Ceiling function| nearest integer >= x|-| floor(x)| Floor function| nearest integer <= x|-| power(x,y)| Power function| x^y or x**y|-| sqrt(x)| Square root function| x^(1/2) or x**(1/2)|-| exp(x)| Exponential function| e^x or e**x|-| log10(x)| Base 10 logarithm function| ln(x)/ln(10)|-| db(x)| Decibel function| 10*log10(x)|-| ln(x)| Natural logarithm function| -|-| log(x,a)| Base a logarithm function| ln(x)/ln(a)|-| rms(x)| Root mean square function| -|-| abs(x)| Absolute value function| x if x>0, -x if x<0|-| sin(x)| Sine function| -|-| cos(x)| Cosine function| -|-| tan(x)| Tangent function| -|-| sec(x)| Secant function| -|-| csc(x)| Cosecant function| -|-| cot(x)| Cotangent function| -|-| asin(x)| Inverse sine function| -|-| acos(x)| Inverse cosine function| -|-| atan(x)| Inverse tangent function| -|-| atan2(x,y)| Inverse tangent function| -|-| asec(x)| Inverse secant function| -|-| acsc(x)| Inverse cosecant function| -|-| acot(x)| Inverse cotangent function| -|-| sinh(x)| Hyperbolic sine function| -|-| cosh(x)| Hyperbolic cosine function| -|-| tanh(x)| Hyperbolic tangent function| -|-| sech(x)| Hyperbolic secant function| -|-| csch(x)| Hyperbolic cosecant function| -|-| coth(x)| Hyperbolic cotangent function| -|-| asinh(x)| Inverse hyperbolic sine function| -|-| acosh(x)| Inverse hyperbolic cosine function| -|-| atanh(x)| Inverse hyperbolic tangent function| -|-| asech(x)| Inverse hyperbolic secant function| -|-| acsch(x)| Inverse hyperbolic cosecant function| -|-| acoth(x)| Inverse hyperbolic cotangent function| -|-| Ci(x)| Cosine integral function| see [https://en.wikipedia.org/wiki/Trigonometric_integral Trigonometric Integral on Wikipedia.30px]|-| Si(x)| Sine integral function| see [https://en.wikipedia.org/wiki/Trigonometric_integral Trigonometric Integral on Wikipedia.]|-| C(x)| Cosine Fresnel integral function| see Click here to learn more about '''[https://en.wikipedia.org/wiki/Fresnel_integral Fresnel Integral on Wikipedia.]|-| S(x)| Sine Fresnel integral function| see [https://en.wikipedia.org/wiki/Fresnel_integral Fresnel Integral on Wikipedia.]| -|-| Ellip_E(x)| Elliptic function Glossary of the first kind| see [https://enEM.wikipedia.org/wiki/Elliptic_integral Elliptic Integral on Wikipedia.]Cube's Python Functions#Standard Python Functions |-| Ellip_K(x)| Elliptic function of the second kind| see [https://en.wikipedia.org/wiki/Elliptic_integral Elliptic Integral on Wikipedia.Python's Standard & Advanced Mathematical Functions]| -|-| Ei(x)| Exponential integral function| see [https://en.wikipedia.org/wiki/Exponential_integral Exponential Integral on Wikipedia.]|-| En(n,x)| Generalized exponential integral function of order n| see [https://en'''.wikipedia.org/wiki/Exponential_integral Exponential Integral on Wikipedia.]|-| gauss(x)| Gaussian function| -|-| erf(x)| Error function| see [https://en.wikipedia.org/wiki/Error_function Error Function on Wikipedia.]|-| gamma(x)| Gamma function| see [https://en.wikipedia.org/wiki/Gamma_function Gamma Function on Wikipedia.]|-| Airy_A(x)| Airy function of the first kind| see [https://en.wikipedia.org/wiki/Airy_function Airy Function on Wikipedia.]|-| Airy_B(x)| Airy function of the second kind| see [https://en.wikipedia.org/wiki/Airy_function Airy Function on Wikipedia.]|-| Jn(n,x)| Bessel function of the first kind and order n| see [https://en.wikipedia.org/wiki/Bessel_function Bessel Function on Wikipedia.]|-| Yn(n,x)| Bessel function of the second kind and order n| see [https://en.wikipedia.org/wiki/Bessel_function Bessel Function on Wikipedia.]|-| In(n,x)| Modified Bessel function of the first kind and order n| see [https://en.wikipedia.org/wiki/Bessel_function Bessel Function on Wikipedia.]|-| Kn(n,x)| Modified Bessel function of the second kind and order n| see [https://en.wikipedia.org/wiki/Bessel_function Bessel Function on Wikipedia.]|-| SB_jn(n,x)| Spherical Bessel function of the first kind and order n| see [https://en.wikipedia.org/wiki/Bessel_function Bessel Function on Wikipedia.]|-| SB_yn(n,x)| Spherical Bessel function of the second kind and order n| see [https://en.wikipedia.org/wiki/Bessel_function Bessel Function on Wikipedia.]|-| SB_in(n,x)| Modified spherical Bessel function of the first kind and order n| see [https://en.wikipedia.org/wiki/Bessel_function Bessel Function on Wikipedia.]|-| SB_kn(n,x)| Modified spherical Bessel function of the second kind and order n| see [https://en.wikipedia.org/wiki/Bessel_function Bessel Function on Wikipedia.]|-| Pn(n,x)| Legendre function of the first kind and order n| see [https://en.wikipedia.org/wiki/Legendre_polynomial Legendre Polynomial on Wikipedia.]|-| Qn(n,x)| Legendre function of the second kind and order n| see [https://en.wikipedia.org/wiki/Legendre_polynomial Legendre Polynomial on Wikipedia.]|-| Tn(n,x)| Chebyshev polynomial of the first kind and order n| see [https://en.wikipedia.org/wiki/Chebyshev_polynomials Chebyshev Polynomial on Wikipedia.]|-| Un(n,x)| Chebyshev polynomial of the second kind and order n| see [https://en.wikipedia.org/wiki/Chebyshev_polynomials Chebyshev Polynomials on Wikipedia.]|-| LGn(n,x)| Laguerre polynomial of order n| see [https://en.wikipedia.org/wiki/Laguerre_polynomials Laguerre Polynomials on Wikipedia.]|-| Hn(n,x)| Hermite polynomial of order n| see [https://en.wikipedia.org/wiki/Hermite_polynomials Hermite Polynomials on Wikipedia.]|-| Un(n,x)| Hermite-Gauss function of order n| -|-| Math_ce(n,r,x)| Even periodic (cosine) Mathieu function of order n| see [https://en.wikipedia.org/wiki/Mathieu_function Mathieu Function on Wikipedia.]|-| Math_se(n,r,x)| Odd periodic (sine) Mathieu function of order n| see [https://en.wikipedia.org/wiki/Mathieu_function Mathieu Function on Wikipedia.]|-| Rect(x)| Rectangle function| 1 if |x|&le;0.5, 0 elsewhere |-| Tri(x)| Triangle function| 1 if |1-x|&le;1, 0 elsewhere |-| Spln2(x)| Quadratic spline function| -|-| Spln3(x)| Cubic spline function| -|-| Step(x)| Step function| 1 if x>0, 0 if x<0|-| Haar(x)| Haar function| sign(x) if |x|<0.5, 0 elsewhere|-| Ramp(x)| Ramp function| -|-| Trapz(a,x)| Trapezoidal function| -|-| Sqwv(x)| Square wave function| -|-| Stwv(x)| Sawtooth wave function| -|-| Trwv(x)| Triangle wave function| -|-| Plstr(d,x)| Pulse train function with duty cycle d| -|-| Sinc(d,x)| Sinc function| sin(pi*x)/(pi*x)|-| Fejer(n,x)| Fejer function of order n| -|-| Rand(x)| Random function| -|-| Fltr_B(n,x)| Butterworth filter function of order n| -|-| Fltr_CH1(n,e,x)| Chebyshev filter function of the first kind, order n | e: ripple factor e|-| Fltr_CH2(n,e,x)| Chebyshev filter function of the second kind, order n| e: ripple factor e|-| Fltr_E(n,s,e,x)| Elliptic filter function of order n | s: selectivity factor s, ripple factor e, n = 0, 1, 2, 3, 4, 6, 8, 9, 12|-| Z0_MS(e,x)| Characteristic impedance of a microstrip transmission line | x: width-to-height ratio, e: substrate permittivity|-| w_MS(z,e,t)| Width of a microstrip transmission line | z: characteristic impedance, e: substrate permittivity, t: substrate thickness|-| eeff_MS(e,x)| Effective permittivity of a microstrip transmission line| x: width-to-height ratio, e: substrate permittivity|-| woh_MS(e,z)| Width-to-height ratio of a microstrip transmission line | z: characteristic impedance z, e: substrate permittivity|-| Z0_CPW(e,x,y)| Characteristic impedance of a coplanar waveguide transmission line | x: slot width-to-height ratio, y: center strip width-to-height ratio, e: substrate permittivity|-| eeff_CPW(e,x,y)| Effective permittivity of a coplanar waveguide transmission line | x: slot width-to-height ratio, y: center strip width-to-height ratio, e: substrate permittivity|-| horn_a(d,x,y)| Wavelength-normalized a-dimension of an optimal pyramidal horn antenna | d: directivity d, x and y: wavelength-normalized waveguide dimensions|-| horn_b(d,x,y)| Wavelength-normalized b-dimension of an optimal pyramidal horn antenna | d: directivity d, x and y: wavelength-normalized waveguide dimensions|-| horn_l(d,x,y)| Wavelength-normalized length of an optimal pyramidal horn antenna | d: directivity d, x and y: wavelength-normalized waveguide dimensions|}
== Creating Custom Python Functions ==
-----
== What Can You Do with Your Python ModelsFunctions?==
The user defined Python functions can be used just like any standard or library function in many scenarios:
* Monte Carlo Simulation
For single-variable Python functions, [[EM.Cube]]'s modes dialog provides an easy way of performing a sweep, optimization of Monte Carlo simulation. Three buttons labeled '''Sweep''', '''Optimize''' and '''Monte Carlo''' are intended for this purpose. In the case of sweep, you must enter '''Min''' and '''Max''' values for the sweep variable as well as '''Number of Samples'''. Select and highlight the name of your Python function from the list and click the '''Sweep''' button to run the sweep. At the completion of the sweep, the sweep data are saved in the file "func_nameMyFunc_sweep.DAT". Click the <b>Data Manager</b> [[Image:fdtd_datamanagerb.png]] button of Simulate Toolbar, or use the keyboard shortcut {{key|Ctrl+D}}, or select the menu item '''Simulate &rarr; Data Manager'''. Select the file "MyFunc_sweep.DAT" from the list by clicking on its name and a highlighting its row in the table. Click the {{key|Plot}} button of the dialog. A graph of your sweep data is plotted in EM.GridPyPlot.
<table>
<tr>
<td>
[[Image:PY MAN5.png|thumb|left|480px|A graph of "MyFunc(x)" plotted in EM.GridPyPlot.]]
</td>
</tr>
</table>
In the case of Monte Carlo simulation, you must enter values for '''Mean''' and '''Std Dev''' of the sweep variable as well as '''Number of Samples'''. Select and highlight the name of your Python function from the list and click the '''Monte Carlo''' button to run the simulation. Through this process, the probability density function (PDF) of your observable y = func_name(x) is estimated, and its graph is plotted as a function of y in EMPyPlot (file "MyFunc_mc.GridDAT" from the Data Base list). The mean and standard deviation of y are also reported in the command window.
<table>
</table>
<pbr />&nbsp; </phr> [[Image:Top_icon.png|48px30px]] '''[[#Applications of Python Scripting in EM.Cube | Back to the Top of the Page]]'''
[[Image:Back_icon.png|40px30px]] '''[[EM.Cube | Back to EM.Cube Main Page]]'''
4,612
edits