1 %======================================================================
2 % Test
function for the MEX file dgetPartialInv.
3 % Copyright (C) 2009-2015 Peter Rakyta, Ph.D.
5 % This program is free software: you can redistribute it and/or modify
6 % it under the terms of the GNU General Public License as published by
7 % the Free Software Foundation, either version 3 of the License, or
8 % (at your option) any later version.
10 % This program is distributed in the hope that it will be useful,
11 % but WITHOUT ANY WARRANTY; without even the implied warranty of
12 % MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 % GNU General Public License
for more details.
15 % You should have received a copy of the GNU General Public License
16 % along with
this program. If not, see http:
19 filename = mfilename(
'fullpath');
20 [directory, fncname] = fileparts( filename );
21 fncname = fncname(1:end-length(
'_test'));
22 filename = fullfile( directory, [fncname,
'.', mexext] );
25 %% creating the
test Hamiltonian
38 CreateH.CreateScatterH();
40 Hscatter = CreateH.Read(
'Hscatter');
41 CreateH.Clear(
'Hscatter');
43 display(
'***************************************************************************')
44 display(['The size of the
test matrix is :', num2str(size(Hscatter,1)), 'x', num2str(size(Hscatter,1))])
46 %% Calculeting the surface Green
function 48 % reordering the matrix coupling the surface
sites to the right-lower corner of the matrix
49 M = CreateH.Read('M');
50 surface_sites = false(size(Hscatter,1),1);
51 surface_sites(1:M) = true;
52 surface_sites(end-M+1:end) = true;
54 Hscatter = [ Hscatter(~surface_sites, ~surface_sites), Hscatter(~surface_sites, surface_sites);
55 Hscatter(surface_sites, ~surface_sites), Hscatter(surface_sites, surface_sites) ];
57 % adding Complex Eenrgy
58 sizeH = size(Hscatter, 1);
59 Hscatter = sparse(1:sizeH, 1:sizeH, 0.23, sizeH, sizeH) - Hscatter;
61 % Test using the mdivide method
63 display('Calculating the surface Green
function with the mldivide operator:')
65 evec = sparse( size(Hscatter,1)-2*M+1:size(Hscatter,1), 1:2*M, 1, size(Hscatter,1), 2*M);
67 G = G(end-2*M+1:end, :);
71 % Test using the partialInv method
73 display('Calculating the surface Green
function with the dgetPartialInv utility:')
76 GpartialInv = dgetPartialInv( Hscatter, 2*M );
79 warning([fncname, ' failed to run. Deleting the compiled MEX file.']);
81 disp( err.identifier )
87 error_num = norm( G-GpartialInv);
89 display('***************************************************************************')
90 disp(['Test of ', fncname, ' passed.'])
92 warning(['Test of ', fncname, ' failed with an error ', num2str(error_num), '. Deleting the compiled MEX file.'])
Lattice_Type
String describing the preprogrammed lattice type. See the documentation of lattice types for details.
function test(arg1, arg2)
Brief description of the function.
Structure Opt contains the basic computational parameters used in EQuUs.
Structure param contains data structures describing the physical parameters of the scattering center ...
scatter_param scatter
An instance of the structure scatter_param containing the physical parameters for the scattering regi...
Structure sites contains data to identify the individual sites in a matrix.
Class containing physical parameters of a scattering center defined on a square lattice.
function dgetPartialInv_test()
function structures(name)
A class to create and store Hamiltonian of the scattering region.