package OpticalMaterial @ISA = qw() sub nDielectricModel return shift->{nDielectricModel}; sub pDielectricModel return shift->{pDielectricModel}; sub Thickness return shift->{Thicnkess}; sub SetThickness sub SetThickness { my($this,$d)= return $this->{Thicnkess} = $d; sub SetCoherency sub SetCoherency { my($this,$c)= return $this->{Coherency} = $c; sub Coherency sub Coherency { my($this)= return 1.0 if(!defined $this->{Coherency}); sub SetName sub SetName { my($this,$n)= return $this->{Name} = $n; sub Name sub Name { my($this)= return $this->{Name}; sub SetVariable my ($this, $Name, $value) = @_; return $p->[$ModelName]->{$VarName} = $value; return $p->[$i]->{$VarName} = $value; return undef; return $this->{$Name} = $value; sub pVariable my ($this, $Name) = @_; return \$p->[$ModelName]->{$VarName}; return \$p->[$i]->{$VarName}; return undef; return \$this->{$Name}; sub new my ($module, $material, $name) = @_; return $this; sub DESTROY my $this = shift; sub Initialize my ($this) = @_; sub MakeMaterial my ($this, $material, $name) = @_; sub SaveDielectricFunctionsCSV my ($this, $path, $Emin, $EStep, $nE, $pObs1, $pObs2) = @_; return undef; return 1; sub ChangeDielectricParameters my ($this, $idx, @param) = @_; sub AddDielectricModel my ($this, $name, $model, @param) = @_; return $this->ChangeDielectricParameters($idx, @param) if(defined $idx); return undef; return undef; return $ret; sub CalComplexN my ($this, $E) = @_; return cplx($n, -$k); sub CalNK my ($this, $E) = @_; return Optics::EpsToNK($e1, $e2); sub CalEps my ($this, $E) = @_; return $this->CalEpsByEMAAverage($E, $pMaterials, $pVf); return $this->CalEpsByEMAAverage($E, $pMaterials, $pVf); sub { $this->CalEMAS2($pModel->{pEMAFunc}, $pModel->{ScreeningFactor}, \@e, $pVf, sub { Optimize::BuildDifferentialMatrixes( return undef; return ($e1, $e2, $S2); sub SetInitialEps my ($this, $ModelName, $E, $e1, $e2) = @_; return undef if(!defined $pModel); return ($e1, $e2); sub GetnEMAComponent my ($this, $ModelName) = @_; return scalar @$pMaterials; return 0; sub GetEMAComponentMaterial my ($this, $ModelName, $idx) = @_; return $pMaterials->[$idx]; return undef; sub GetEMAComponentVolumeFraction my ($this, $ModelName, $idx) = @_; return $pVf->[$idx]; return undef; sub CalEMAS2 my ($this, $pEMAFunc, $ScreeningFactor, $pe, $pVf, $pVars, $iPrintLevel) = @_; return $S2; sub CalEpsByEMAAverage my ($this, $E, $pMaterial, $pVf) = @_; return ($e1, $e2); sub EMAZeroBruggemann my ($this, $ScreeningFactor, $eh, $pe, $pVf) = @_; return $S; sub EMAZeroMaxwellGarnett my ($this, $ScreeningFactor, $eh, $pe, $pVf) = @_; return $S; return $S; sub CalInitialEMAEps my ($this, $pe, $pVf) = @_; return ($e1h, $e2h);