! ! This file is part of SACAMOS, State of the Art CAble MOdels for Spice. ! It was developed by the University of Nottingham and the Netherlands Aerospace ! Centre (NLR) for ESA under contract number 4000112765/14/NL/HK. ! ! Copyright (C) 2016-2018 University of Nottingham ! ! SACAMOS is free software: you can redistribute it and/or modify it under the ! terms of the GNU General Public License as published by the Free Software ! Foundation, either version 3 of the License, or (at your option) any later ! version. ! ! SACAMOS is distributed in the hope that it will be useful, but ! WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ! or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ! for more details. ! ! A copy of the GNU General Public License version 3 can be found in the ! file GNU_GPL_v3 in the root or at . ! ! SACAMOS uses the EISPACK library (in /SRC/EISPACK). EISPACK is subject to ! the GNU Lesser General Public License. A copy of the GNU Lesser General Public ! License version can be found in the file GNU_LGPL in the root of EISPACK ! (/SRC/EISPACK ) or at . ! ! The University of Nottingham can be contacted at: ggiemr@nottingham.ac.uk ! ! ! File Contents: ! MODULE general_module ! ! and within include files the following: ! ! add_integer_to_string.F90 ! SUBROUTINE add_integer_to_string ! ! convert_case.F90 ! SUBROUTINE convert_to_lower_case ! SUBROUTINE convert_to_upper_case ! ! build_component_name_strings.F90 ! SUBROUTINE build_name_with_conductor_and_end ! SUBROUTINE build_name_with_conductor_domainConductor_and_end ! SUBROUTINE build_name_with_domain_conductor_and_end ! SUBROUTINE build_name_with_domain_mode_and_end ! SUBROUTINE build_name_with_domain_and_mode ! SUBROUTINE build_name_with_domain_conductor_mode_and_end ! ! generate_shapes.F90 ! SUBROUTINE generate_circle_points ! SUBROUTINE generate_rectangle_points ! SUBROUTINE generate_Dshape_points ! SUBROUTINE generate_arc_points ! ! plot_geometry.F90 ! SUBROUTINE write_circle ! SUBROUTINE write_rectangle ! SUBROUTINE write_Dshape ! ! program_status.F90 ! SUBROUTINE write_program_status ! ! read_version.F90 ! SUBROUTINE read_version ! ! read_write_subroutines.F90 ! SUBROUTINE write_license ! SUBROUTINE path_format ! SUBROUTINE check_and_make_path ! SUBROUTINE write_long_node_list ! NAME ! general_module ! ! AUTHORS ! Chris Smartt ! ! DESCRIPTION ! This module contains varaibles and constants which are used generally within the SACAMOS software ! ! Also general subroutines are contained within the module in the included files ! ! add_integer_to_string.F90 ! convert_case.F90 ! read_version.F90 ! program_status.F90 ! read_write_subroutines.F90 ! build_component_name_strings.F90 ! plot_geometry.F90 ! COMMENTS ! ! ! HISTORY ! MODULE general_module USE type_specifications IMPLICIT NONE SAVE ! version information character(LEN=line_length) :: SPICE_CABLE_MODEL_BUILDER_version character(LEN=line_length) :: SPICE_CABLE_MODEL_BUILDER_date character(LEN=line_length) :: SPICE_CABLE_MODEL_BUILDER_compilation_date ! program run status information character(LEN=line_length) :: program_name character(LEN=line_length) :: run_status character(LEN=10),parameter :: program_status_filename='run_status' ! Library of cable models, directory information character(len=line_length) :: MOD_cable_lib_dir character(len=line_length) :: MOD_bundle_lib_dir character(len=line_length) :: MOD_spice_bundle_lib_dir character(len=line_length) :: spice_symbol_dir ! Target spice version information integer,parameter :: ngspice=1 integer,parameter :: LTspice=2 integer,parameter :: Pspice =3 ! Shape information integer,parameter :: circle =1 integer,parameter :: rectangle=2 integer,parameter :: Dshape=3 integer,parameter :: semicircle=4 integer,parameter :: semicircle_diameter=5 integer :: spice_version ! Maximum line length for Spice input files integer :: max_spice_line_length=100 ! flags. The default values are set here but they may be changed in the *_spec files. !logical :: use_s_xfer=.TRUE. logical :: use_s_xfer=.FALSE. logical :: use_Laplace=.FALSE. logical :: use_FastHenry=.FALSE. !logical :: use_Xie=.FALSE. logical :: use_Xie=.TRUE. !logical :: use_LTRA=.FALSE. logical :: use_LTRA=.TRUE. logical :: plot_potential=.FALSE. logical :: plot_mesh=.TRUE. logical :: plot_real=.FALSE. logical :: high_freq_Zt_model=.FALSE. logical :: run_validation_test=.TRUE. logical :: run_validation_test_Vbased=.FALSE. logical :: verbose=.FALSE. logical :: plot_propagation_correction_filter_fit_data=.FALSE. logical :: direct_solver=.FALSE. logical :: inf_gnd=.TRUE. !logical :: use_ABC=.TRUE. logical :: use_ABC=.FALSE. ! There are some differences between windows and unix relating to ! file separators and making directories. The different formats for ! the two ooperating systems supported are included below ! NOTE: Uses mkdir -p in unix which can build the whole path as opposed to mkdir which can only build the bottom level directory ! mkdir -p works in ubuntu 14.04 - not sure that this is a portable solution though... #ifdef WINDOWS character :: file_separator='\' character(LEN=6) :: mkdir_command='mkdir ' #else character :: file_separator='/' character(LEN=9) :: mkdir_command='mkdir -p ' #endif ! filename and unit information integer,parameter :: cable_spec_file_unit=10 character(LEN=11),parameter:: cable_spec_file_extn='.cable_spec' integer,parameter :: cable_file_unit=11 character(LEN=6),parameter :: cable_file_extn='.cable' integer,parameter :: bundle_spec_file_unit=12 character(LEN=12),parameter:: bundle_spec_file_extn='.bundle_spec' integer,parameter :: bundle_file_unit=13 character(LEN=7),parameter :: bundle_file_extn='.bundle' integer,parameter :: spice_model_spec_file_unit=14 character(LEN=17),parameter:: spice_model_spec_file_extn='.spice_model_spec' integer,parameter :: spice_model_file_unit=15 integer,parameter :: test_circuit_file_unit=16 character(LEN=12) :: test_circuit_file_extn character(LEN=12) :: spice_model_file_extn character(LEN=12),parameter :: ngspice_test_circuit_file_extn='_Ngspice.cir' character(LEN=12),parameter :: ngspice_spice_model_file_extn='_Ngspice.lib' character(LEN=12),parameter :: LTspice_test_circuit_file_extn='_LTspice.cir' character(LEN=12),parameter :: LTspice_spice_model_file_extn='_LTspice.lib' character(LEN=11),parameter :: Pspice_test_circuit_file_extn='_PSpice.cir' character(LEN=11),parameter :: Pspice_spice_model_file_extn='_PSpice.lib' integer,parameter :: analytic_soln_file_unit=17 character(LEN=21),parameter :: analytic_soln_filename='analytic_solution.dat' integer,parameter :: gmsh_geometry_file_unit=20 character(LEN=4),parameter :: gmsh_geometry_file_extn='.geo' integer,parameter :: mesh_file_unit=21 character(LEN=4),parameter :: mesh_file_extn='.msh' integer,parameter :: boundary_file_unit=22 character(LEN=14),parameter :: boundary_file_name='laplace_in.bnd' integer,parameter :: symbol_file_unit=30 character(LEN=4) :: symbol_file_extn character(LEN=4),parameter :: symbol_file_extn_NGspice='.sym' character(LEN=4),parameter :: symbol_file_extn_LTspice='.asy' integer,parameter :: braid_spec_file_unit=40 character(LEN=11),parameter :: braid_spec_file_extn='.braid_spec' integer,parameter :: shield_model_file_unit=41 character(LEN=13),parameter :: shield_model_file_extn='.shield_model' integer,parameter :: dielectric_geometry_file_unit=51 character(LEN=15),parameter :: dielectric_geometry_filename='dielectrics.dat' integer,parameter :: conductor_geometry_file_unit=52 character(LEN=14),parameter :: conductor_geometry_filename='conductors.dat' integer,parameter :: frame_geometry_file_unit=53 character(LEN=9),parameter :: frame_geometry_filename='frame.dat' integer,parameter :: fh2_input_file_unit=60 integer,parameter :: fh2_output_file_unit=61 integer,parameter :: program_status_file_unit=80 integer,parameter :: local_file_unit=90 integer,parameter :: temp_file_unit=99 ! FastHenry2 default conductor meshing parameters integer :: FH2_nlayers_radius=4 integer :: FH2_nw=3 integer :: FH2_nh=3 real(dp):: FH2_rw=2.0 real(dp):: FH2_rh=2.0 CONTAINS include 'add_integer_to_string.F90' include 'convert_case.F90' include 'read_version.F90' include 'program_status.F90' include 'read_write_subroutines.F90' include 'build_component_name_strings.F90' include 'generate_shapes.F90' include 'plot_geometry.F90' END MODULE general_module