#ifndef WMMGLOB_H
#define WMMGLOB_H

/*
 * WMM
 * Wave-matching method for mode analysis of dielectric waveguides
 * Manfred Lohmeyer 
 * University of Osnabrueck, Department of Physics
 * Barbarastrasse 7, D-49069 Osnabrueck, Germany
 * (1999)
 * Manfred Hammer
 * University of Twente, Faculty of Mathematical Sciences
 * P.O. Box 217, 7500AE Enschede, The Netherlands
 * (2002)
 */

/*
 * wmmglob.h
 * Global WMM analysis parameters 
 */

/* symmetry dependencies on each rectangle */
#define CALC 0
#define VSYM 1
#define VASY 2
#define IDSY 3
#define IDAS 4

/* orientation of edges */ 
#define HOR 0
#define VER 1

/* global WMM analysis parameters */  

extern Waveguide Wg;         // waveguide structure under investigation
extern Polarization Pol;     // polarization mode
extern Symmetry Sym;         // prescribed modal symmetry 
extern double Neffmin;       // interval for
extern double Neffmax;       // the propagation constant search
extern WMM_Parameters Par;   // less specific parameters
extern double K0;	     // vacuum wavenumber 
extern double Invomep0;      // 1/omega/epsilon_0  [V*um/A]  
extern double Invommu0;      // 1/omega/mu_0  [A*um/V]  

extern FILE *Log;            // logfile: values of the lsq field mismatch
			     //          vs. Beta

extern double Beta;          // propagation constant, current trial value 
extern double SDBeta;        // trial value for spectral discretization

extern Imatrix Rtyp;         // rectangle types
extern Imatrix Styp;         // symmetry dependencies 
extern Dmatrix Swf;          // normalization weighting factors, symmet. dep.
extern int Crim;             // y-index of the center rectangles 

		             // edges connecting rectangles:
extern int NumVk;            // number	
extern Ivector Vktyp;        // orientation
extern Dvector Vkbeg;        // coordinates
extern Dvector Vkend;        //  
extern Dvector Vkcor;        //  
extern Imatrix Nrxi;         // indices of neighboring rectangles
extern Imatrix Nryi;         // indices of neighboring rectangles
extern Dvector Vkswf;        // symmetry weighting factors 

extern int AmDim;            // current dimension of the amplitude matrices
extern double* Amat;         // amplitude matrix  
extern double* AmVec;        // amplitude vector

extern Trifunfield Phi;      // mode field prototype

#endif // WMMGLOB_H

