# Open source Spice cable bundle modelling project

The software allows the generation of multi-conductor cable bundle models
for inclusion in Spice circuit simulations for the purposes of EMC/ EMI studies.
The models include the following features:

Multi-conductor cables

Shielded cables

Frequency dependent cable properties

Incident field excitation

Transfer impedance coupling through imperfect shields


A set of test cases is included in the project. These may be run automatically
to provide a test of the installation and they also provide examples to aid the 
generation of new cable bundle models.


## The project files and directory structure is summarised below:

license.txt,  COPYING.txt, COPYING.LESSER.txt  : License information
version_information.inc: Current version tag 
clean_project:	A script to remove all executable files, object files, module files and test case files 
		to provide a clean structure before updating the project repository

SRC            : source code

DOCUMENTATION  : theory document and user guide

TEST_CASES     : directory of test cases and a script to run these automatically

SOFTWARE_NOTES : Notes regarding the software developments, work log, knoown problems etc

bin            : binary executable files

obj_mod        : Object files and fortran module files

## Compiling and runnning the code

### Unix installation for ngspice

Prerequisites: 
1. ESA_SPICE_CABLE_MODELLING project obtained from the git repository
2. fortran complier
3. ngspice
4. gmsh    (mesh generator)
5. gnuplot
6. text editor (nedit, gedit or similar)

If the transmission line models are to be included in other circuits 
then you will need the following:
7. gschem (schematic capture tool)
8. gnetlist (tool to create a spice circuit file from the output of gschem)
9. gspiceui (tool to create and run a spice simulation)

Compilation Process:

from the top level go into the SRC directory

cd SRC

edit the Makefile as required to set the fortran compiler name and flags as required 
(the system is set up for gfortran by default, some notes are included in the Makefile)

compile the code with the command

make

(Note that has been observered to fail when the software is installed in a path which 
contains spaces so please ensure that there are no spaces in the path...) 

The executables will be put in the /bin directory in the top level of the project

### Running the test cases

from the top level go into the TEST_CASES directory
cd TEST_CASES

Edit the file generate_spice_cable_model if required to set the directory for the
schematic circuit symbols created for the spice transmission line subcircuits, SYMBOL_DIR.

SYMBOL_DIR can be set to the local directory 
SYMBOL_DIR="./"
or to a directory which is used by gschem for example
SYMBOL_DIR="/usr/share/gEDA/sym/local/"

The script generate_spice_cable_model can be used to run one or all test cases, 
view the results, check the latest results against saved reference results etc.

Run using the following command:

generate_spice_cable_model action

action is the process to run:

action=run NAME               : Generate cable models, bundle model and 
                                Spice bundle model and validation spice model
                                as required for the test case NAME.
                                Run ngspice on the validation model and compare
                                the spice result against the analytic solution                              
				
action=plot NAME              : Plot the results of the spice validation model and
                                analytic solution to x11 terminal
				
action=plot_wxt NAME          : Plot the results of the spice validation model and 
                                analytic solution to wxt terminal 

action=plot_jpg NAME          : Plot the results of the spice validation model and 
                                analytic solution to .jpg file

action=plot_ref NAME          : Plot the spice validation model results against  
                                reference results to x11 terminal

action=plot_ref_wxt NAME      : Plot the spice validation model results against  
                                reference results to wxt terminal

action=plot_ref_jpg NAME      : Plot the spice validation model results against  
                                reference results to jpg file

action=plot_bundle NAME       : Plot the bundle cross section to x11 terminal

action=plot_bundle_wxt NAME   : Plot the bundle cross section to wxt terminal

action=plot_bundle_jpg NAME   : Plot the bundle cross section to jpg file 
				
action=reference  NAME        : Update the reference results and the difference
                                between the spice model and validation model  
                                with the current set of results
				
action=check_error  NAME      : Quick check that the difference between the 
                                spice model and validation model is the same as 
				for the reference data set
				
action=clean  NAME            : Remove all files except those required to set up
                                the problem and the reference results. 
				
action=clean_all  NAME        : Remove all files including the reference results. 

NAME can be one of the existing test cases or left blank to run all the test cases

(note that if there are problems running the generate_spice_cable_model script this 
may be due to the file not being an 'executable' file. This can be fixed with
chmod +x generate_spice_cable_model
note also that it is useful if the local directory is included in the search path, 
if it is not then you will need to use 

./generate_spice_cable_model 

instead of 

generate_spice_cable_model

As an example, run all the test cases with

generate_spice_cable_model run

The result comparisons given in the STATUS at the end of the process give a
measure of the difference between the Spice model result and the analytic solution 
for each of the test cases run.

plot the comparison between the analytic and spice validation model results for all
test cases with

generate_spice_cable_model plot

(note: press RETURN to move from one plot to the next)

## Acknowledgement:
This work was funded by ESA under contract number
4000112765/14/NL/HK




