shgpy.formgen module¶
Module for (non-Fourier) formula derivation
This module provides a number of routines for calculating the SHG
response of a given material (encoded by its susceptbility tensor,
see tensor_definitions ). These routines are much
more straightforward than those found in fformgen,
but are only suited for the most simple problems because the
conversion from formulas to Fourier formulas (which is all but
necessary for efficient fitting functionality) is typically quite
slow.
- shgpy.formgen.formgen(theta, t_eee=None, t_mee=None, t_qee=None)¶
Generate generic SHG formula for any multipole.
- Parameters:
- thetafloat
Angle of incidence.
- t_eeendarray of sympy.Expr, optional
The electric dipole tensor. Pass None to neglect electric dipole. Default is None. Must pass at least one of t_eee, t_mee, or t_qee.
- t_meendarray of sympy.Expr, optional
The magnetic dipole tensor. Pass None to neglect magnetic dipole. Default is None. Must pass at least one of t_eee, t_mee, or t_qee.
- t_qeendarray of sympy.Expr, optional
The electric quadrupole tensor. Pass None to neglect electric quadrupole. Default is None. Must pass at least one of t_eee, t_mee, or t_qee.
- shgpy.formgen.formgen_dipole_quadrupole(t1, t2, theta)¶
Generate formula assuming dipole+quadrupole SHG.
- Parameters:
- t1ndarray of sympy.Expr
SHG dipole susceptibility tensor; see
tensor_definitions.- t2ndarray of sympy.Expr
SHG quadrupole susceptibility tensor; see
tensor_definitions.- thetafloat or sympy.Symbol
Angle of incidence
- Returns:
- fformFormContainer
Instance of
FormContainer.
- shgpy.formgen.formgen_just_dipole(t1, theta)¶
Generate formula assuming dipole SHG.
- Parameters:
- t1ndarray of sympy.Expr
SHG susceptibility tensor; see
tensor_definitions.- thetafloat or sympy.Symbol
Angle of incidence
- Returns:
- fformFormContainer
Instance of
FormContainer.
Notes
This routine differs from
formgen_just_dipole_real()only in the sense that the computed intensity function is computed by computing the modulus-squared (rather than**2) of the polarization. For this reason, it is usually suggested to explicitly substitutex -> real_x+1j*imag_xfor each x in t1. Seemake_tensor_complex()and the tutorial.
- shgpy.formgen.gen_P_dipole_quadrupole(t1, t2, theta)¶
Generate P formula assuming dipole+quadrupole SHG.
- Parameters:
- t1ndarray of sympy.Expr
SHG dipole susceptibility tensor; see
tensor_definitions.- t2ndarray of sympy.Expr
SHG quadrupole susceptibility tensor; see
tensor_definitions.- thetafloat or sympy.Symbol
Angle of incidence
- Returns:
- Pp_effarray_like of sympy.Expr
The 2omega effective polarization assuming P-polarized input
- Ps_effarray_like of sympy.Expr
The 2omega effective polarization assuming S-polarized input
- shgpy.formgen.gen_P_just_dipole(t1, theta)¶
Generate P formula assuming dipole SHG.
- Parameters:
- t1ndarray of sympy.Expr
SHG susceptibility tensor; see
tensor_definitions.- thetafloat or sympy.Symbol
Angle of incidence
- Returns:
- Pparray_like of sympy.Expr
The 2omega polarization assuming P-polarized input
- Psarray_like of sympy.Expr
The 2omega polarization assuming S-polarized input
- shgpy.formgen.gen_S(theta, t_eee=None, t_mee=None, t_qee=None)¶
- shgpy.formgen.gen_levi_civita()¶
- shgpy.formgen.make_form_from_P_and_Q(Pp, Ps, Qp, Qs)¶
Given a dipole and quadrupole moment, return the SHG signal.
- Parameters:
- Ppsympy.Expr
2omega dipole component if the input is P polarized
- Pssympy.Expr
2omega dipole component if the input is S polarized
- Qpsympy.Expr
2omega quadrupole component if the input is P polarized
- Qssympy.Expr
2omega quadrupole component if the input is S polarized
- Returns:
- formFormContainer