#!/usr/bin/perl

use lib 'd:/Programs/Perl/lib';

use strict;
use JFile;
use MultiColumnData;
use Sci::Ellipsometry;
use Sci::OpticalMaterial;

my $OutFileHeader = "out";
my $cSiFile = "SI100.JEL";
my $EStart = 1.5;
my $EStop  = 5.0;
my $EStep  = 0.05;
my $nE     = int( ($EStop - $EStart) / $EStep + 1.001);

for(my $iv = 0 ; $iv <= 10 ; $iv++) {
	my $Vf = 0.1 * $iv;

	my $SiFilm = new OpticalMaterial("Specify", "Si Film");
	my $cSi    = new OpticalMaterial("Specify", "c-Si");
	my $aSi    = new OpticalMaterial("a-Si:H", "a-Si");

	my @ret = $cSi->AddDielectricModel(
		"c-Si",
		"EFile",
		"Path", $cSiFile,
		);
	if(@ret == 0) {
		print "Error: Can not read [$cSiFile].\n";
		exit;
	}

	$SiFilm->AddDielectricModel(
		"Si Film",
		"EMA",
		"Model", "Bruggeman",
		"pMaterials",       [$cSi,     $aSi],
		"pVolumeFractions", [$Vf, 1.0 - $Vf],
		);

	my $OutFile = sprintf("%s-Vf%2.1f.csv", $OutFileHeader, $Vf);
	my $out = new JFile($OutFile, "w");
	if(!$out) {
		print "Can not write to [$OutFile].\n";
		next;
	}
	$out->print("E,e1,e2,S2\n");
	for(my $i = 0 ; $i < $nE ; $i++) {
		my $E = $EStart + $EStep * $i;
		my ($e1, $e2, $S2) = $SiFilm->CalEps($E);
		print "E=$E\t$e1\t$e2\t$S2\n";
		$out->print("$E,$e1,$e2,$S2\n");
	}
	$out->Close();
}

exit;
