The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

COPYRIGHT NOTICE

Photonic - A perl package for calculations on photonics and metamaterials.

Copyright (C) 1916 by W. Luis Mochán

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 1, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA

    mochan@fis.unam.mx

    Instituto de Ciencias Físicas, UNAM
    Apartado Postal 48-3
    62251 Cuernavaca, Morelos
    México

NAME

Photonic::OneH::R2

VERSION

version 0.011

SYNOPSIS

    use Photonic::OneH::R2;
    my $nr=Photonic::OneH::R2->new(metric=>$g, polarization=>$p);
    $nr->iterate;
    say $nr->iteration;
    say $nr->current_a;
    say $nr->next_b2;
    my $state=$nr->nextState;

DESCRIPTION

Implements calculation of Haydock coefficients and Haydock states for the calculation of the retarded dielectric function of arbitrary periodic two component systems in arbitrary number of dimentions. One Haydock coefficient at a time.

METHODS

  • new(metric=>$m, polarization=>$e, [, smallH=>$s])

    Create a new Ph::OneH::R2 object with PDL::Metric::R2 $m, with a field along the complex direction $e and with smallness parameter $s.

ACCESORS (read only)

  • metric Photonic::Metric::R2

    A Photonic::Metric::R2 object defining the geometry of the system, the charateristic function, the wavenumber, wavevector and host dielectric function. Required in the initializer.

  • polarization PDL::Complex

    A non null vector defining the complex direction of the macroscopic field.

  • smallH

    A small number used as tolerance to end the iteration. Small negative b^2 coefficients are taken to be zero.

  • B ndims dims epsilon

    Accesors handled by metric (see Photonic::Metric::R2)

  • previousState currentState nextState

    The n-1-th, n-th and n+1-th Haydock states; a complex vector for each reciprocal wavevector

  • current_a

    The n-th Haydock coefficient a

  • current_b2 next_b2 current_b next_b

    The n-th and n+1-th b^2 and b Haydock coefficients

  • next_c

    The n+1-th c Haydock coefficient

  • previous_g current_g next_g

    The n-1-th n-th and n+1-th g Haydock coefficients

  • iteration

    Number of completed iterations

METHODS

  • iterate

    Performs a single Haydock iteration and updates current_a, next_b, next_b2, next_c, next_g, next_state, shifting the current values where necessary. Returns 0 when unable to continue iterating.

  • applyMetric($psi)

    Returns the result of applying the metric 'g' to the state; $psi.

  • applyOperator($psi_G)

    Apply the Hamiltonian operator to state. The Hamiltonian is Bg, with g the metric and B the characteriztic function. Also applies an optional mask in reciprocal space.

  • innerProduct($left, $right)

    Returns the inner Hermitian product between states using the metric.

  • $s=magnitude($self, $psi)

    Returns the magnitude of a state as the square root of the inner product of the state with itself.

  • changesign

    Returns 1 if sign change is required to ensure b^2 is positive.

INTERNAL METHODS

  • _firstState

    Returns the fisrt state $v.