format 58
"simulation" // trunk::src::electronics::simulation
  revision 1
  modified_by 22 "zolee"
  // class settings
  //class diagram settings
  draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_members_multiplicity default show_members_initialization default member_max_width 0 show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default show_stereotype_properties default
  //use case diagram settings
  package_name_in_tab default show_context default auto_label_position default draw_all_relations default class_drawing_mode default shadow default show_stereotype_properties default
  //sequence diagram settings
  show_full_operations_definition default write_horizontally default class_drawing_mode default drawing_language default draw_all_relations default shadow default show_stereotype_properties default
  //collaboration diagram settings
  show_full_operations_definition default show_hierarchical_rank default write_horizontally default drawing_language default package_name_in_tab default show_context default draw_all_relations default shadow default show_stereotype_properties default
  //object diagram settings
   write_horizontally default package_name_in_tab default show_context default auto_label_position default draw_all_relations default shadow default show_stereotype_properties default
  //component diagram settings
  package_name_in_tab default show_context default auto_label_position default draw_all_relations default shadow default
  draw_component_as_icon default show_component_req_prov default show_component_rea default show_stereotype_properties default
  //deployment diagram settings
  package_name_in_tab default show_context default write_horizontally default auto_label_position default draw_all_relations default shadow default
  draw_component_as_icon default show_component_req_prov default show_component_rea default show_stereotype_properties default
  //state diagram settings
  package_name_in_tab default show_context default auto_label_position default write_trans_label_horizontally default show_trans_definition default draw_all_relations default shadow default
  show_activities default region_horizontally default drawing_language default show_stereotype_properties default
  //activity diagram settings
  package_name_in_tab default show_context default show_opaque_action_definition default auto_label_position default write_flow_label_horizontally default draw_all_relations default shadow default
  show_infonote default drawing_language default show_stereotype_properties default
  
  classview 129814 "simulation"
    //class diagram settings
    draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_members_multiplicity default show_members_initialization default member_max_width 0 show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default show_stereotype_properties default
    //collaboration diagram settings
    show_full_operations_definition default show_hierarchical_rank default write_horizontally default drawing_language default package_name_in_tab default show_context default draw_all_relations default shadow default show_stereotype_properties default
    //object diagram settings
     write_horizontally default package_name_in_tab default show_context default auto_label_position default draw_all_relations default shadow default show_stereotype_properties default
    //sequence diagram settings
    show_full_operations_definition default write_horizontally default class_drawing_mode default drawing_language default draw_all_relations default shadow default show_stereotype_properties default
    //state diagram settings
    package_name_in_tab default show_context default auto_label_position default write_trans_label_horizontally default show_trans_definition default draw_all_relations default shadow default
    show_activities default region_horizontally default drawing_language default show_stereotype_properties default
    //class settings
    //activity diagram settings
    package_name_in_tab default show_context default show_opaque_action_definition default auto_label_position default write_flow_label_horizontally default draw_all_relations default shadow default
    show_infonote default drawing_language default show_stereotype_properties default
    class 151446 "uint"
      visibility package stereotype "typedef" explicit_base_type "unsigned int"
      cpp_decl "${comment}typedef ${type} ${name};
"
      java_decl ""
      php_decl ""
      python_2_2 python_decl ""
      idl_decl ""
      explicit_switch_type ""
      
    end

    class 155158 "Circuit"
      visibility package 
      cpp_decl "${comment}${template}class ${name}${inherit} {
${members}};
${inlines}
"
      java_decl ""
      php_decl ""
      python_2_2 python_decl ""
      idl_decl ""
      explicit_switch_type ""
      
      comment "*
Usage of this class (usually invoked from CircuitDocument):
(1) Add Wires, Pins and Elements to the class as appropriate
(2) Call init to initialize the simulation
(3) Control the simulation with step()

This class can be considered a bridge between the gui-tainted CircuitDocument - specific
to this implementation, and the pure untainted ElementSet. Please keep it that way.

@short Simulates a collection of components
@author David Saxton
"
      operation 586774 "Circuit"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 0
	cpp_decl "    ${comment}${inline}${name}${(}${)}${volatile}${throw};
"
	cpp_def "//BEGIN class Circuit

${comment}${inline}${class}::${name}${(}${)}${throw}{
${body}}
"
	
	
	
	
      end

      operation 586902 "~Circuit"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 0
	cpp_decl "    ${comment}${inline}${virtual}${name}${(}${)}${volatile}${throw};
"
	cpp_def "${comment}${inline}${class}::${name}${(}${)}${throw}{
${body}}
"
	
	
	
	
      end

      operation 587030 "addPin"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 1
	  param inout name "node" type class_ref 156822 // Pin
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} * ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${t0} * ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 587158 "addElement"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 1
	  param inout name "element" type class_ref 155926 // Element
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} * ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${t0} * ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 587286 "contains"
	preserve_cpp_body_indent public explicit_return_type "bool"
	nparams 1
	  param inout name "node" type class_ref 156822 // Pin
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} * ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${t0} * ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 587414 "containsNonLinear"
	const cpp_inline public explicit_return_type "bool"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return m_elementSet->containsNonLinear(); };
"
	
	
	
	
      end

      operation 587542 "init"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 587670 "initCache"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "*
		 * Called after everything else has been setup - before doNonLogic or
		 * doLogic are called for the first time. Preps the circuit.
		 "
      end

      operation 587798 "setCacheInvalidated"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "*
		 * Marks all cached results as invalidated and removes them.
		 "
      end

      operation 587926 "doNonLogic"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "*
		 * Solves for non-logic elements
		 "
      end

      operation 588054 "doLogic"
	cpp_inline public explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { m_elementSet->doLinear(false); };
"
	
	
	
	
	comment "*
		 * Solves for logic elements (i.e just does fbSub)
		 "
      end

      operation 588182 "displayEquations"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 588310 "updateCurrents"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 588438 "createMatrixMap"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 588566 "identifyGround"
	class_operation preserve_cpp_body_indent public explicit_return_type "int"
	nparams 2
	  param in name "nodeList" type class_ref 156182 // PinList
	  param inout name "highest" explicit_type "int"
	    defaultvalue "0l "
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}, ${t1} * ${p1}${v1}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "// static function

${comment}${inline}${type} ${class}::${name}${(}${t0} ${p0}, ${t1} * ${p1}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "*
		 * This will identify the ground node and non-ground nodes in the given set.
		 * Ground will be given the eqId -1, non-ground of 0.
		 * @param highest The highest ground type of the groundnodes found. If no
			ground nodes were found, this will be (gt_never-1).
		 * @returns the number of ground nodes. If all nodes are at or below the
		 * 			gt_never threshold, then this will be zero.
		 "
      end

      operation 588694 "setNextChanged"
	cpp_inline public explicit_return_type "void"
	nparams 2
	  param inout name "circuit" type class_ref 155158 // Circuit
	  param in name "chain" explicit_type "byte"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} * ${p0}${v0}, ${t1} ${p1}${v1}${)}${const}${volatile}${throw}${abstract} { m_pNextChanged[chain] = circuit; };
"
	
	
	
	
      end

      operation 588822 "nextChanged"
	const cpp_inline public return_type class_ref 155158 // Circuit
	nparams 1
	  param in name "chain" explicit_type "byte"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} * ${name}${(}${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract} { return m_pNextChanged[chain]; };
"
	
	
	
	
      end

      operation 588950 "setCanAddChanged"
	cpp_inline public explicit_return_type "void"
	nparams 1
	  param in name "canAdd" explicit_type "bool"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract} { m_bCanAddChanged = canAdd; };
"
	
	
	
	
      end

      operation 589078 "canAddChanged"
	const cpp_inline public explicit_return_type "bool"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return m_bCanAddChanged; };
"
	
	
	
	
      end

      operation 589206 "cacheAndUpdate"
	preserve_cpp_body_indent protected explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 589334 "updateNodalVoltages"
	preserve_cpp_body_indent protected explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "*
		 * Update the nodal voltages from those calculated in ElementSet
		 "
      end

      operation 589462 "stepReactive"
	preserve_cpp_body_indent protected explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "*
		 * Step the reactive elements.
		 "
      end

      operation 589590 "recursivePinAdd"
	class_operation preserve_cpp_body_indent protected explicit_return_type "bool"
	nparams 4
	  param inout name "node" type class_ref 156822 // Pin
	  param inout name "unassignedNodes" type class_ref 156182 // PinList
	  param inout name "associated" type class_ref 156182 // PinList
	  param inout name "nodes" type class_ref 156182 // PinList
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} * ${p0}${v0}, ${t1} * ${p1}${v1}, ${t2} * ${p2}${v2}, ${t3} * ${p3}${v3}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${t0} * ${p0}, ${t1} * ${p1}, ${t2} * ${p2}, ${t3} * ${p3}${)}${const}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "*
		 * Returns true if any of the nodes are ground
		 "
      end

      attribute 302998 "m_cnodeCount"
	protected explicit_type "int"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      attribute 303126 "m_branchCount"
	protected explicit_type "int"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      attribute 303254 "m_prepNLCount"
	protected explicit_type "int"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
	comment " Count until next m_elementSet->prepareNonLinear() is called"
      end

      classrelation 253974 // m_pinList (<directional composition>)
	relation 253974 *-->
	  a role_name "m_pinList" protected
	    cpp default "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	    classrelation_ref 253974 // m_pinList (<directional composition>)
	  b parent class_ref 156182 // PinList
      end

      classrelation 254102 // m_elementList (<directional composition>)
	relation 254102 *-->
	  a role_name "m_elementList" protected
	    cpp default "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	    classrelation_ref 254102 // m_elementList (<directional composition>)
	  b parent class_ref 156054 // ElementList
      end

      classrelation 254230 // m_elementSet (<unidirectional association>)
	relation 254230 --->
	  a role_name "m_elementSet" protected
	    cpp default "    ${comment}${static}${mutable}${volatile}${const}${type} * ${name}${value};
"
	    classrelation_ref 254230 // m_elementSet (<unidirectional association>)
	  b parent class_ref 204566 // ElementSet
      end

      attribute 303382 "m_bCanCache"
	protected explicit_type "bool"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      classrelation 254358 // m_pLogicCacheBase (<unidirectional association>)
	relation 254358 --->
	  a role_name "m_pLogicCacheBase" protected
	    cpp default "    ${comment}${static}${mutable}${volatile}${const}${type} * ${name}${value};
"
	    classrelation_ref 254358 // m_pLogicCacheBase (<unidirectional association>)
	  b parent class_ref 204310 // LogicCacheNode
      end

      attribute 303510 "m_logicOutCount"
	protected explicit_type "uint"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      attribute 303638 "m_pLogicOut"
	protected type class_ref 180630 // LogicOut
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} * * ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      attribute 303766 "m_bCanAddChanged"
	protected explicit_type "bool"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      classrelation 254486 // m_pNextChanged (<unidirectional association>)
	relation 254486 --->
	  a role_name "m_pNextChanged" multiplicity "[2]" protected
	    cpp default "    ${comment}${static}${mutable}${volatile}${const}${type} * ${name}${multiplicity}${value};
"
	    classrelation_ref 254486 // m_pNextChanged (<unidirectional association>)
	  b parent class_ref 155158 // Circuit
      end
    end

    class 155926 "Element"
      abstract visibility package 
      cpp_decl "${comment}${template}class ${name}${inherit} {
${members}};
${inlines}
"
      java_decl ""
      php_decl ""
      python_2_2 python_decl ""
      idl_decl ""
      explicit_switch_type ""
      
      comment "*
@short Represents a circuit element (such as resistance)
@author David Saxton
"
      class 204822 "Type"
	visibility package stereotype "enum"
	cpp_decl "${comment}enum ${name} {
${items}
};
"
	java_decl ""
	php_decl ""
	python_2_2 python_decl ""
	idl_decl ""
	explicit_switch_type ""
	
	attribute 305430 "Element_BJT"
	  public type class_ref 204822 // Type
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 305558 "Element_Capacitance"
	  public type class_ref 204822 // Type
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 305686 "Element_CCCS"
	  public type class_ref 204822 // Type
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 305814 "Element_CCVS"
	  public type class_ref 204822 // Type
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 305942 "Element_CurrentSignal"
	  public type class_ref 204822 // Type
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 306070 "Element_CurrentSource"
	  public type class_ref 204822 // Type
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 306198 "Element_Diode"
	  public type class_ref 204822 // Type
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 306326 "Element_JFET"
	  public type class_ref 204822 // Type
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 306454 "Element_Inductance"
	  public type class_ref 204822 // Type
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 306582 "Element_LogicIn"
	  public type class_ref 204822 // Type
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 306710 "Element_LogicOut"
	  public type class_ref 204822 // Type
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 306838 "Element_MOSFET"
	  public type class_ref 204822 // Type
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 306966 "Element_OpAmp"
	  public type class_ref 204822 // Type
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 307094 "Element_Resistance"
	  public type class_ref 204822 // Type
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 307222 "Element_VCCS"
	  public type class_ref 204822 // Type
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 307350 "Element_VCVS"
	  public type class_ref 204822 // Type
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 307478 "Element_VoltagePoint"
	  public type class_ref 204822 // Type
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 307606 "Element_VoltageSignal"
	  public type class_ref 204822 // Type
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 307734 "Element_VoltageSource"
	  public type class_ref 204822 // Type
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end
      end

      operation 594454 "Element"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 0
	cpp_decl "    ${comment}${inline}${name}${(}${)}${volatile}${throw};
"
	cpp_def "//BEGIN class Element

${comment}${inline}${class}::${name}${(}${)}${throw}{
${body}}
"
	
	
	
	
      end

      operation 594582 "~Element"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type ""
	nparams 0
	cpp_decl "    ${comment}${inline}${virtual}${name}${(}${)}${volatile}${throw};
"
	cpp_def "${comment}${inline}${class}::${name}${(}${)}${throw}{
${body}}
"
	
	
	
	
      end

      operation 594710 "setElementSet"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type "void"
	nparams 1
	  param inout name "c" type class_ref 204566 // ElementSet
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} * ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${t0} * ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "*
	 * This must be called when the circuit is changed. The function will get
	 * all the required pointers from ElementSet
	 "
      end

      operation 594838 "elementSet"
	const cpp_inline public return_type class_ref 204566 // ElementSet
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} * ${name}${(}${)}${const}${volatile}${throw}${abstract} { return p_eSet; };
"
	
	
	
	
	comment "*
	 * Returns a pointer to the current element set
	 "
      end

      operation 594966 "setCNodes"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 4
	  param in name "n0" explicit_type "int"
	    defaultvalue "noCNode"
	  param in name "n1" explicit_type "int"
	    defaultvalue "noCNode"
	  param in name "n2" explicit_type "int"
	    defaultvalue "noCNode"
	  param in name "n3" explicit_type "int"
	    defaultvalue "noCNode "
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}const ${t0} ${p0}${v0}, const ${t1} ${p1}${v1}, const ${t2} ${p2}${v2}, const ${t3} ${p3}${v3}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}const ${t0} ${p0}, const ${t1} ${p1}, const ${t2} ${p2}, const ${t3} ${p3}${)}${const}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "*
	 * Tells the element which nodes to use. Remember that -1 is ground. You
	 * should refer to the individual elements for which nodes are used for what.
	 "
      end

      operation 595094 "setCBranches"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 4
	  param in name "b0" explicit_type "int"
	    defaultvalue "noBranch"
	  param in name "b1" explicit_type "int"
	    defaultvalue "noBranch"
	  param in name "b2" explicit_type "int"
	    defaultvalue "noBranch"
	  param in name "b3" explicit_type "int"
	    defaultvalue "noBranch "
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}const ${t0} ${p0}${v0}, const ${t1} ${p1}${v1}, const ${t2} ${p2}${v2}, const ${t3} ${p3}${v3}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}const ${t0} ${p0}, const ${t1} ${p1}, const ${t2} ${p2}, const ${t3} ${p3}${)}${const}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "*
	 * Tells the element it's branch numbers (if it should have one). Not
	 * all elements use this.
	 "
      end

      operation 595222 "cnode"
	cpp_inline public return_type class_ref 204950 // CNode
	nparams 1
	  param in name "num" type class_ref 151446 // uint
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} * ${name}${(}const ${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract} { return p_cnode[num]; };
"
	
	
	
	
	comment "*
	 * Returns a pointer to the given CNode
	 "
      end

      operation 595350 "cbranch"
	cpp_inline public return_type class_ref 205078 // CBranch
	nparams 1
	  param in name "num" type class_ref 151446 // uint
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} * ${name}${(}const ${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract} { return p_cbranch[num]; };
"
	
	
	
	
	comment "*
	 * Returns a pointer to the given CNode
	 "
      end

      operation 595478 "numCBranches"
	const cpp_inline public explicit_return_type "int"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return m_numCBranches; };
"
	
	
	
	
	comment "*
	 * Returns the number of branches used by the element
	 "
      end

      operation 595606 "numCNodes"
	const cpp_inline public explicit_return_type "int"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return m_numCNodes; };
"
	
	
	
	
	comment "*
	 * Returns the number of circuit nodes used by the element
	 "
      end

      operation 595734 "updateCurrents"
	abstract cpp_virtual public explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	
	
	
	
	comment "*
	 * Call this function to tell the element to calculate the
	 * current flowing *into* it's cnodes *from* the element. You
	 * can get the currents with m_cnodeI. Child class must implement this function.
	 "
      end

      operation 595862 "isReactive"
	const cpp_virtual cpp_inline public explicit_return_type "bool"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return false; };
"
	
	
	
	
	comment "*
	 * Returns true for reactive elements that need stepping for numerical-integration
	 * (such as capacitors)
	 "
      end

      operation 595990 "isNonLinear"
	const cpp_virtual cpp_inline public explicit_return_type "bool"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return false; };
"
	
	
	
	
	comment "*
	 * Returns true for NonLinear elements that need iteration to converge to a solution
	 * as the matrix A is a function of x.
	 "
      end

      operation 596118 "type"
	abstract const cpp_virtual public return_type class_ref 204822 // Type
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	
	
	
	
	comment "*
	 * Returns the type of element
	 "
      end

      operation 596246 "add_initial_dc"
	abstract cpp_virtual public explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	
	
	
	
	comment "*
	 * Does the required MNA stuff. This should be called from ElementSet when necessary.
	 "
      end

      operation 596374 "componentDeleted"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "*
	 * This is called from the Component destructor. When elementSetDeleted has
	 * also been called, this class will delete itself.
	 "
      end

      operation 596502 "elementSetDeleted"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      attribute 307862 "m_cnodeI"
	public explicit_type "double"
	multiplicity "[8]"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${multiplicity}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
	comment "/< Current flowing into the cnodes from the element"
      end

      operation 596630 "cbranchCurrent"
	preserve_cpp_body_indent public explicit_return_type "double"
	nparams 1
	  param in name "branch" explicit_type "int"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}const ${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}const ${t0} ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 596758 "cnodeVoltage"
	preserve_cpp_body_indent public explicit_return_type "double"
	nparams 1
	  param in name "node" explicit_type "int"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}const ${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}const ${t0} ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 596886 "updateStatus"
	preserve_cpp_body_indent cpp_virtual protected explicit_return_type "bool"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "*
	 * Update the status, returning b_status
	 "
      end

      operation 597014 "resetCurrents"
	preserve_cpp_body_indent protected explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "*
	 * Resets all calculated currents in the nodes to 0
	 "
      end

      operation 597142 "A_g"
	preserve_cpp_body_indent cpp_inline protected explicit_return_type "double"
	nparams 2
	  param in name "i" type class_ref 151446 // uint
	  param in name "j" type class_ref 151446 // uint
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} & ${name}${(}${t0} ${p0}${v0}, ${t1} ${p1}${v1}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} & ${class}::${name}${(}${t0} ${p0}, ${t1} ${p1}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 597270 "A_b"
	preserve_cpp_body_indent cpp_inline protected explicit_return_type "double"
	nparams 2
	  param in name "i" type class_ref 151446 // uint
	  param in name "j" type class_ref 151446 // uint
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} & ${name}${(}${t0} ${p0}${v0}, ${t1} ${p1}${v1}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} & ${class}::${name}${(}${t0} ${p0}, ${t1} ${p1}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 597398 "A_c"
	preserve_cpp_body_indent cpp_inline protected explicit_return_type "double"
	nparams 2
	  param in name "i" type class_ref 151446 // uint
	  param in name "j" type class_ref 151446 // uint
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} & ${name}${(}${t0} ${p0}${v0}, ${t1} ${p1}${v1}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} & ${class}::${name}${(}${t0} ${p0}, ${t1} ${p1}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 597526 "A_d"
	preserve_cpp_body_indent cpp_inline protected explicit_return_type "double"
	nparams 2
	  param in name "i" type class_ref 151446 // uint
	  param in name "j" type class_ref 151446 // uint
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} & ${name}${(}${t0} ${p0}${v0}, ${t1} ${p1}${v1}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} & ${class}::${name}${(}${t0} ${p0}, ${t1} ${p1}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 597654 "b_i"
	preserve_cpp_body_indent cpp_inline protected explicit_return_type "double"
	nparams 1
	  param in name "i" type class_ref 151446 // uint
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} & ${name}${(}${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} & ${class}::${name}${(}${t0} ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 597782 "b_v"
	preserve_cpp_body_indent cpp_inline protected explicit_return_type "double"
	nparams 1
	  param in name "i" type class_ref 151446 // uint
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} & ${name}${(}${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} & ${class}::${name}${(}${t0} ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      classrelation 255510 // p_eSet (<unidirectional association>)
	relation 255510 --->
	  a role_name "p_eSet" protected
	    cpp default "    ${comment}${static}${mutable}${volatile}${const}${type} * ${name}${value};
"
	    classrelation_ref 255510 // p_eSet (<unidirectional association>)
	  b parent class_ref 204566 // ElementSet
      end

      attribute 307990 "m_numCNodes"
	protected explicit_type "int"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      classrelation 255638 // p_cnode (<unidirectional association>)
	relation 255638 --->
	  a role_name "p_cnode" multiplicity "[MAX_CNODES]" protected
	    cpp default "    ${comment}${static}${mutable}${volatile}${const}${type} * ${name}${multiplicity}${value};
"
	    classrelation_ref 255638 // p_cnode (<unidirectional association>)
	  b parent class_ref 204950 // CNode
      end

      attribute 308118 "m_numCBranches"
	protected explicit_type "int"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      classrelation 255766 // p_cbranch (<unidirectional association>)
	relation 255766 --->
	  a role_name "p_cbranch" multiplicity "[MAX_CBRANCHES]" protected
	    cpp default "    ${comment}${static}${mutable}${volatile}${const}${type} * ${name}${multiplicity}${value};
"
	    classrelation_ref 255766 // p_cbranch (<unidirectional association>)
	  b parent class_ref 205078 // CBranch
      end

      attribute 308246 "b_status"
	protected explicit_type "bool"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      attribute 308374 "b_componentDeleted"
	private explicit_type "bool"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      attribute 308502 "m_temp"
	private explicit_type "double"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end
    end

    class 179990 "LogicIn"
      visibility package 
      cpp_decl "${comment}${template}class ${name}${inherit} {
${members}};
${inlines}
"
      java_decl ""
      php_decl ""
      python_2_2 python_decl ""
      idl_decl ""
      explicit_switch_type ""
      
      comment "*
Use this class for Logic Inputs - this will have infinite impedance.
Use isHigh() will return whether the voltage level at the pin
is high than the predetermined voltage threshold, and setHigh() will make the
output high/low, also according to the predetermined logic type / voltages.

@short Boolean Logic input
"
      classrelation 258198 // <generalisation>
	relation 258198 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 258198 // <generalisation>
	  b parent class_ref 155926 // Element
      end

      operation 604182 "LogicIn"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 1
	  param in name "config" type class_ref 206230 // LogicConfig
	cpp_decl "    ${comment}${inline}${name}${(}${t0} ${p0}${v0}${)}${volatile}${throw};
"
	cpp_def "//END class LogicConfig
//BEGIN class LogicIn

${comment}${inline}${class}::${name}${(}${t0} ${p0}${)}
	: Element::Element()
${throw}{
${body}}
"
	
	
	
	
      end

      operation 604310 "~LogicIn"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type ""
	nparams 0
	cpp_decl "    ${comment}${inline}${virtual}${name}${(}${)}${volatile}${throw};
"
	cpp_def "${comment}${inline}${class}::${name}${(}${)}${throw}{
${body}}
"
	
	
	
	
      end

      operation 604438 "type"
	const cpp_virtual cpp_inline public explicit_return_type "Type"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return Element_LogicIn; };
"
	
	
	
	
      end

      operation 604566 "setElementSet"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type "void"
	nparams 1
	  param inout name "c" type class_ref 204566 // ElementSet
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} * ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${t0} * ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 604694 "setLogic"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type "void"
	nparams 1
	  param in name "config" type class_ref 206230 // LogicConfig
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${t0} ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "*
		 * Set logic values from the LogicConfig.
		 "
      end

      operation 604822 "check"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "*
		 * Check if the input state has changed, to see if we need to callback.
		 "
      end

      operation 604950 "isHigh"
	const cpp_inline public explicit_return_type "bool"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return m_bLastState; };
"
	
	
	
	
	comment "*
		 * Returns whether the pin is 'high', as defined for the logic type
		 * Note: this is defined as the voltage on the pin, as opposed to what the 
		 * state was set to (the two are not necessarily the same).
		 "
      end

      operation 605078 "setCallback"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 2
	  param inout name "object" type class_ref 192790 // CallbackClass
	  param in name "func" type class_ref 206358 // CallbackPtr
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} * ${p0}${v0}, ${t1} ${p1}${v1}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${t0} * ${p0}, ${t1} ${p1}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "*
		 * When the logic state on this LogicIn changes, the function passed in this
		 * function will be called. At most one Callback can be added per LogicIn.
		 "
      end

      operation 605206 "getConfig"
	class_operation preserve_cpp_body_indent public return_type class_ref 206230 // LogicConfig
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "*
		 * Reads the LogicConfig values in from KTLConfig, and returns them in a
		 * nice object form.
		 "
      end

      operation 605334 "setLastState"
	cpp_inline public explicit_return_type "void"
	nparams 1
	  param in name "state" explicit_type "bool"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract} { m_bLastState = state; };
"
	
	
	
	
	comment "*
		 * If this belongs to a logic chain, then this will be called from the chain.
		 "
      end

      operation 605462 "nextLogic"
	const cpp_inline public return_type class_ref 179990 // LogicIn
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} * ${name}${(}${)}${const}${volatile}${throw}${abstract} { return m_pNextLogic; };
"
	
	
	
	
	comment "*
		 * Returns a pointer to the next LogicIn in the chain.
		 "
      end

      operation 605590 "setNextLogic"
	cpp_inline public explicit_return_type "void"
	nparams 1
	  param inout name "next" type class_ref 179990 // LogicIn
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} * ${p0}${v0}${)}${const}${volatile}${throw}${abstract} { m_pNextLogic = next; };
"
	
	
	
	
	comment "*
		 * Sets the next LogicIn in the chain.
		 "
      end

      operation 605718 "callCallback"
	cpp_inline public explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} {
			if (m_pCallbackFunction)
				(m_pCallbackObject->*m_pCallbackFunction)(m_bLastState);
		};
"
	
	
	
	
	comment "*
		 * Calls the callback function, if there is one.
		 "
      end

      operation 605846 "updateCurrents"
	preserve_cpp_body_indent cpp_virtual protected explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 605974 "add_initial_dc"
	preserve_cpp_body_indent cpp_virtual protected explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      classrelation 258326 // m_pCallbackFunction (<directional composition>)
	relation 258326 *-->
	  a role_name "m_pCallbackFunction" protected
	    cpp default "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	    classrelation_ref 258326 // m_pCallbackFunction (<directional composition>)
	  b parent class_ref 206358 // CallbackPtr
      end

      classrelation 258454 // m_pCallbackObject (<unidirectional association>)
	relation 258454 --->
	  a role_name "m_pCallbackObject" protected
	    cpp default "    ${comment}${static}${mutable}${volatile}${const}${type} * ${name}${value};
"
	    classrelation_ref 258454 // m_pCallbackObject (<unidirectional association>)
	  b parent class_ref 192790 // CallbackClass
      end

      attribute 313622 "m_bLastState"
	protected explicit_type "bool"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      classrelation 258582 // m_pNextLogic (<unidirectional association>)
	relation 258582 --->
	  a role_name "m_pNextLogic" protected
	    cpp default "    ${comment}${static}${mutable}${volatile}${const}${type} * ${name}${value};
"
	    classrelation_ref 258582 // m_pNextLogic (<unidirectional association>)
	  b parent class_ref 179990 // LogicIn
      end

      classrelation 258710 // m_config (<directional composition>)
	relation 258710 *-->
	  a role_name "m_config" protected
	    cpp default "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	    classrelation_ref 258710 // m_config (<directional composition>)
	  b parent class_ref 206230 // LogicConfig
      end
    end

    class 180630 "LogicOut"
      visibility package 
      cpp_decl "${comment}${template}class ${name}${inherit} {
${members}};
${inlines}
"
      java_decl ""
      php_decl ""
      python_2_2 python_decl ""
      idl_decl ""
      explicit_switch_type ""
      
      comment "*
@short Logic output/input
"
      classrelation 258838 // <generalisation>
	relation 258838 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 258838 // <generalisation>
	  b parent class_ref 179990 // LogicIn
      end

      operation 606102 "LogicOut"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 2
	  param in name "config" type class_ref 206230 // LogicConfig
	  param in name "_high" explicit_type "bool"
	cpp_decl "    ${comment}${inline}${name}${(}${t0} ${p0}${v0}, ${t1} ${p1}${v1}${)}${volatile}${throw};
"
	cpp_def "//END class LogicIn
//BEGIN class LogicOut

${comment}${inline}${class}::${name}${(}${t0} ${p0}, ${t1} ${p1}${)}
	: LogicIn(config)
${throw}{
${body}}
"
	
	
	
	
      end

      operation 606230 "~LogicOut"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type ""
	nparams 0
	cpp_decl "    ${comment}${inline}${virtual}${name}${(}${)}${volatile}${throw};
"
	cpp_def "${comment}${inline}${class}::${name}${(}${)}${throw}{
${body}}
"
	
	
	
	
      end

      operation 606358 "setLogic"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type "void"
	nparams 1
	  param in name "config" type class_ref 206230 // LogicConfig
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${t0} ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 606486 "setElementSet"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type "void"
	nparams 1
	  param inout name "c" type class_ref 204566 // ElementSet
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} * ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${t0} * ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 606614 "type"
	const cpp_virtual cpp_inline public explicit_return_type "Type"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return Element_LogicOut; };
"
	
	
	
	
      end

      operation 606742 "setOutputHighConductance"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 1
	  param in name "g" explicit_type "double"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${t0} ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "*
		 * Call this function to override the logic-high output impedance as set by
		 * the user. Once set, the impedance will not be changed by the user
		 * updating the config; only by subsequent calls to this function.
		 "
      end

      operation 606870 "setOutputLowConductance"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 1
	  param in name "g" explicit_type "double"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${t0} ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "*
		 * Call this function to override the logic-low output impedance as set by
		 * the user. Once set, the impedance will not be changed by the user
		 * updating the config; only by subsequent calls to this function.
		 "
      end

      operation 606998 "setOutputHighVoltage"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 1
	  param in name "v" explicit_type "double"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${t0} ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "*
		 * Call this function to override the logic out voltage as set by the
		 * user. Once set, the impedance will not be changed by the user
		 * updating the config; only by subsequent calls to this function.
		 "
      end

      operation 607126 "outputHighVoltage"
	const cpp_inline public explicit_return_type "double"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return m_vHigh; };
"
	
	
	
	
	comment "*
		 * Returns the voltage that this will output when high.
		 "
      end

      operation 607254 "setHigh"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 1
	  param in name "high" explicit_type "bool"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${t0} ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "*
		 * Sets the pin to be high/low
		 "
      end

      operation 607382 "outputState"
	const cpp_inline public explicit_return_type "bool"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return b_state; };
"
	
	
	
	
	comment "*
		 * @returns the state that this is outputting (regardless of voltage level on logic)
		 "
      end

      operation 607510 "setUseLogicChain"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 1
	  param in name "use" explicit_type "bool"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${t0} ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "*
		 * Set whether or not this LogicOut is the head of a LogicChain (controls
		 * itself and a bunch of LogicIns).
		 "
      end

      operation 607638 "setNextChanged"
	cpp_inline public explicit_return_type "void"
	nparams 2
	  param inout name "logicOut" type class_ref 180630 // LogicOut
	  param in name "chain" explicit_type "byte"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} * ${p0}${v0}, ${t1} ${p1}${v1}${)}${const}${volatile}${throw}${abstract} { m_pNextChanged[chain] = logicOut; };
"
	
	
	
	
	comment "*
		 * When a LogicOut configured as the start of a LogicChain changes start, it
		 * appends a pointer to itself to the list of change LogicOut, starting from
		 * the Simulator. This functions enables appending the next changed LogicOut
		 * to this one.
		 "
      end

      operation 607766 "setCanAddChanged"
	cpp_inline public explicit_return_type "void"
	nparams 1
	  param in name "canAdd" explicit_type "bool"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract} { m_bCanAddChanged = canAdd; };
"
	
	
	
	
	comment "*
		 * To avoid a pointer to this LogicOut being added twice in one
		 * iteration due to the state changing twice, this LogicOut sets an
		 * added flag to true after adding it to the list of changed. The flag
		 * must be reset to false with this function (done by Simulator).
		 "
      end

      operation 607894 "nextChanged"
	const cpp_inline public return_type class_ref 180630 // LogicOut
	nparams 1
	  param in name "chain" explicit_type "byte"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} * ${name}${(}${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract} { return m_pNextChanged[chain]; };
"
	
	
	
	
	comment "*
		 * Returns the next LogicOut that has changed, when configured as the start
		 * of a LogicChain.
		 * @see setNextChanged
		 "
      end

      classrelation 258966 // pinList (<directional composition>)
	relation 258966 *-->
	  a role_name "pinList" public
	    cpp default "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	    classrelation_ref 258966 // pinList (<directional composition>)
	  b parent class_ref 156182 // PinList
      end

      attribute 313750 "pinListBegin"
	public explicit_type "PinList::iterator"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      attribute 313878 "pinListEnd"
	public explicit_type "PinList::iterator"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      operation 608022 "configChanged"
	preserve_cpp_body_indent protected explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 608150 "updateCurrents"
	preserve_cpp_body_indent cpp_virtual protected explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 608278 "add_initial_dc"
	preserve_cpp_body_indent cpp_virtual protected explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      attribute 314006 "m_gHigh"
	protected explicit_type "double"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      attribute 314134 "m_gLow"
	protected explicit_type "double"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      attribute 314262 "m_vHigh"
	protected explicit_type "double"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      attribute 314390 "m_bOutputHighConductanceConst"
	protected explicit_type "bool"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      attribute 314518 "m_bOutputLowConductanceConst"
	protected explicit_type "bool"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      attribute 314646 "m_bOutputHighVoltageConst"
	protected explicit_type "bool"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      attribute 314774 "m_g_out"
	protected explicit_type "double"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      attribute 314902 "m_v_out"
	protected explicit_type "double"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      attribute 315030 "m_old_g_out"
	protected explicit_type "double"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      attribute 315158 "m_old_v_out"
	protected explicit_type "double"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      attribute 315286 "b_state"
	protected explicit_type "bool"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      attribute 315414 "m_bCanAddChanged"
	protected explicit_type "bool"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      classrelation 259094 // m_pNextChanged (<unidirectional association>)
	relation 259094 --->
	  a role_name "m_pNextChanged" multiplicity "[2]" protected
	    cpp default "    ${comment}${static}${mutable}${volatile}${const}${type} * ${name}${multiplicity}${value};
"
	    classrelation_ref 259094 // m_pNextChanged (<unidirectional association>)
	  b parent class_ref 180630 // LogicOut
      end

      classrelation 259222 // m_pSimulator (<unidirectional association>)
	relation 259222 --->
	  a role_name "m_pSimulator" protected
	    cpp default "    ${comment}${static}${mutable}${volatile}${const}${type} * ${name}${value};
"
	    classrelation_ref 259222 // m_pSimulator (<unidirectional association>)
	  b parent class_ref 180502 // Simulator
      end

      attribute 315542 "m_bUseLogicChain"
	protected explicit_type "bool"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end
    end

    class 186134 "BJT"
      visibility package 
      cpp_decl "${comment}${template}class ${name}${inherit} {
${members}};
${inlines}
"
      java_decl ""
      php_decl ""
      python_2_2 python_decl ""
      idl_decl ""
      explicit_switch_type ""
      
      comment "*
@author David Saxton
"
      classrelation 252566 // <generalisation>
	relation 252566 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 252566 // <generalisation>
	  b parent class_ref 203926 // NonLinear
      end

      operation 582422 "BJT"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 1
	  param in name "isNPN" explicit_type "bool"
	cpp_decl "    ${comment}${inline}${name}${(}${t0} ${p0}${v0}${)}${volatile}${throw};
"
	cpp_def "//END class BJTState
//BEGIN class BJT

${comment}${inline}${class}::${name}${(}${t0} ${p0}${)}${throw}{
${body}}
"
	
	
	
	
      end

      operation 582550 "~BJT"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type ""
	nparams 0
	cpp_decl "    ${comment}${inline}${virtual}${name}${(}${)}${volatile}${throw};
"
	cpp_def "${comment}${inline}${class}::${name}${(}${)}${throw}{
${body}}
"
	
	
	
	
      end

      operation 582678 "type"
	const cpp_virtual cpp_inline public explicit_return_type "Type"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return Element_BJT; };
"
	
	
	
	
      end

      operation 582806 "update_dc"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 582934 "add_initial_dc"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 583062 "settings"
	const cpp_inline public return_type class_ref 203798 // BJTSettings
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return m_bjtSettings; };
"
	
	
	
	
      end

      operation 583190 "setBJTSettings"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 1
	  param in name "settings" type class_ref 203798 // BJTSettings
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}const ${t0} & ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}const ${t0} & ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 583318 "updateCurrents"
	preserve_cpp_body_indent cpp_virtual protected explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 583446 "calc_eq"
	preserve_cpp_body_indent protected explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "*
		 * Calculates the new BJTState from the voltages on the nodes.
		 "
      end

      operation 583574 "calcIg"
	preserve_cpp_body_indent const protected explicit_return_type "void"
	nparams 9
	  param in name "V_BE" explicit_type "double"
	  param in name "V_BC" explicit_type "double"
	  param inout name "I_BE" explicit_type "double"
	  param inout name "I_BC" explicit_type "double"
	  param inout name "I_T" explicit_type "double"
	  param inout name "g_BE" explicit_type "double"
	  param inout name "g_BC" explicit_type "double"
	  param inout name "g_IF" explicit_type "double"
	  param inout name "g_IR" explicit_type "double"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}, ${t1} ${p1}${v1}, ${t2} * ${p2}${v2}, ${t3} * ${p3}${v3}, ${t4} * ${p4}${v4}, ${t5} * ${p5}${v5}, ${t6} * ${p6}${v6}, ${t7} * ${p7}${v7}, ${t8} * ${p8}${v8}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${t0} ${p0}, ${t1} ${p1}, ${t2} * ${p2}, ${t3} * ${p3}, ${t4} * ${p4}, ${t5} * ${p5}, ${t6} * ${p6}, ${t7} * ${p7}, ${t8} * ${p8}${)}${const}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 583702 "updateLim"
	preserve_cpp_body_indent protected explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      classrelation 252694 // m_os (<directional composition>)
	relation 252694 *-->
	  a role_name "m_os" protected
	    cpp default "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	    classrelation_ref 252694 // m_os (<directional composition>)
	  b parent class_ref 203670 // BJTState
      end

      classrelation 252822 // m_ns (<directional composition>)
	relation 252822 *-->
	  a role_name "m_ns" protected
	    cpp default "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	    classrelation_ref 252822 // m_ns (<directional composition>)
	  b parent class_ref 203670 // BJTState
      end

      attribute 301846 "m_pol"
	protected explicit_type "int"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      classrelation 252950 // m_bjtSettings (<directional composition>)
	relation 252950 *-->
	  a role_name "m_bjtSettings" protected
	    cpp default "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	    classrelation_ref 252950 // m_bjtSettings (<directional composition>)
	  b parent class_ref 203798 // BJTSettings
      end
    end

    class 186262 "Capacitance"
      visibility package 
      cpp_decl "${comment}${template}class ${name}${inherit} {
${members}};
${inlines}
"
      java_decl ""
      php_decl ""
      python_2_2 python_decl ""
      idl_decl ""
      explicit_switch_type ""
      
      comment "*
@author David Saxton
@short Capacitance
"
      classrelation 253078 // <generalisation>
	relation 253078 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 253078 // <generalisation>
	  b parent class_ref 204054 // Reactive
      end

      class 204182 "Method"
	visibility package stereotype "enum"
	cpp_decl "${comment}enum ${name} {
${items}
};
"
	java_decl ""
	php_decl ""
	python_2_2 python_decl ""
	idl_decl ""
	explicit_switch_type ""
	
	attribute 301974 "m_none"
	  public type class_ref 204182 // Method
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 302102 "m_euler"
	  public type class_ref 204182 // Method
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 302230 "m_trap"
	  public type class_ref 204182 // Method
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end
      end

      operation 583830 "Capacitance"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 2
	  param in name "capacitance" explicit_type "double"
	  param in name "delta" explicit_type "double"
	cpp_decl "    ${comment}${inline}${name}${(}const ${t0} ${p0}${v0}, const ${t1} ${p1}${v1}${)}${volatile}${throw};
"
	cpp_def "${comment}${inline}${class}::${name}${(}const ${t0} ${p0}, const ${t1} ${p1}${)}
	: Reactive(delta)
${throw}{
${body}}
"
	
	
	
	
      end

      operation 583958 "~Capacitance"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type ""
	nparams 0
	cpp_decl "    ${comment}${inline}${virtual}${name}${(}${)}${volatile}${throw};
"
	cpp_def "${comment}${inline}${class}::${name}${(}${)}${throw}{
${body}}
"
	
	
	
	
      end

      operation 584086 "type"
	const cpp_virtual cpp_inline public explicit_return_type "Type"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return Element_Capacitance; };
"
	
	
	
	
      end

      operation 584214 "setMethod"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 1
	  param in name "m" type class_ref 204182 // Method
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${t0} ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "*
	 * Set the stepping use for numerical integration of capacitance,
	 * and the interval between successive updates
	 "
      end

      operation 584342 "time_step"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 584470 "add_initial_dc"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 584598 "setCapacitance"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 1
	  param in name "c" explicit_type "double"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}const ${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}const ${t0} ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 584726 "updateCurrents"
	preserve_cpp_body_indent cpp_virtual protected explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 584854 "updateStatus"
	preserve_cpp_body_indent cpp_virtual protected explicit_return_type "bool"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      attribute 302358 "m_cap"
	private explicit_type "double"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
	comment " Capacitance"
      end

      classrelation 253206 // m_method (<directional composition>)
	relation 253206 *-->
	  a role_name "m_method" private
	    comment " Method of integration"
	    cpp default "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	    classrelation_ref 253206 // m_method (<directional composition>)
	  b parent class_ref 204182 // Method
      end

      attribute 302486 "m_scaled_cap"
	private explicit_type "double"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
	comment " capacitance scaled to time base of latest m_delta"
      end

      attribute 302614 "i_eq_old"
	private explicit_type "double"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end
    end

    class 186390 "CCCS"
      visibility package 
      cpp_decl "${comment}${template}class ${name}${inherit} {
${members}};
${inlines}
"
      java_decl ""
      php_decl ""
      python_2_2 python_decl ""
      idl_decl ""
      explicit_switch_type ""
      
      comment "*
CNodes n0 and n1 are used for the current control.
CNodes n2 and n3 are used for the current output.
Branches b0 and b1 are for control and output
@short Current Controlled Current Source
@author David Saxton
"
      classrelation 253334 // <generalisation>
	relation 253334 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 253334 // <generalisation>
	  b parent class_ref 155926 // Element
      end

      operation 584982 "CCCS"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 1
	  param in name "gain" explicit_type "double"
	cpp_decl "    ${comment}${inline}${name}${(}const ${t0} ${p0}${v0}${)}${volatile}${throw};
"
	cpp_def "${comment}${inline}${class}::${name}${(}const ${t0} ${p0}${)}
	: Element::Element()
${throw}{
${body}}
"
	
	
	
	
      end

      operation 585110 "~CCCS"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type ""
	nparams 0
	cpp_decl "    ${comment}${inline}${virtual}${name}${(}${)}${volatile}${throw};
"
	cpp_def "${comment}${inline}${class}::${name}${(}${)}${throw}{
${body}}
"
	
	
	
	
      end

      operation 585238 "type"
	const cpp_virtual cpp_inline public explicit_return_type "Type"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return Element_CCCS; };
"
	
	
	
	
      end

      operation 585366 "setGain"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 1
	  param in name "g" explicit_type "double"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}const ${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}const ${t0} ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 585494 "updateCurrents"
	preserve_cpp_body_indent cpp_virtual protected explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 585622 "add_initial_dc"
	preserve_cpp_body_indent cpp_virtual protected explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      attribute 302742 "m_g"
	private explicit_type "double"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
	comment " Conductance"
      end
    end

    class 186518 "CCVS"
      visibility package 
      cpp_decl "${comment}${template}class ${name}${inherit} {
${members}};
${inlines}
"
      java_decl ""
      php_decl ""
      python_2_2 python_decl ""
      idl_decl ""
      explicit_switch_type ""
      
      comment "*
CNodes n0 and n1 are used for the current control.
CNodes n2 and n3 are used for the voltage output.
Branches b0 and b1 are for control and output
@short Current Controlled Voltage Source
@author David Saxton
"
      classrelation 253462 // <generalisation>
	relation 253462 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 253462 // <generalisation>
	  b parent class_ref 155926 // Element
      end

      operation 585750 "CCVS"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 1
	  param in name "gain" explicit_type "double"
	cpp_decl "    ${comment}${inline}${name}${(}const ${t0} ${p0}${v0}${)}${volatile}${throw};
"
	cpp_def "${comment}${inline}${class}::${name}${(}const ${t0} ${p0}${)}
	: Element::Element()
${throw}{
${body}}
"
	
	
	
	
      end

      operation 585878 "~CCVS"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type ""
	nparams 0
	cpp_decl "    ${comment}${inline}${virtual}${name}${(}${)}${volatile}${throw};
"
	cpp_def "${comment}${inline}${class}::${name}${(}${)}${throw}{
${body}}
"
	
	
	
	
      end

      operation 586006 "type"
	const cpp_virtual cpp_inline public explicit_return_type "Type"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return Element_CCVS; };
"
	
	
	
	
      end

      operation 586134 "setGain"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 1
	  param in name "g" explicit_type "double"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}const ${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}const ${t0} ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 586262 "updateCurrents"
	preserve_cpp_body_indent cpp_virtual protected explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 586390 "add_initial_dc"
	preserve_cpp_body_indent cpp_virtual protected explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      attribute 302870 "m_g"
	private explicit_type "double"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
	comment " Conductance"
      end
    end

    class 186646 "CurrentSignal"
      visibility package 
      cpp_decl "${comment}${template}class ${name}${inherit} {
${members}};
${inlines}
"
      java_decl ""
      php_decl ""
      python_2_2 python_decl ""
      idl_decl ""
      explicit_switch_type ""
      
      comment "*
@short CurrentSignal
@author David saxton
"
      classrelation 254614 // <generalisation>
	relation 254614 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 254614 // <generalisation>
	  b parent class_ref 204054 // Reactive
      end

      classrelation 254742 // <generalisation>
	relation 254742 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 254742 // <generalisation>
	  b parent class_ref 204694 // ElementSignal
      end

      operation 589718 "CurrentSignal"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 2
	  param in name "delta" explicit_type "double"
	  param in name "current" explicit_type "double"
	cpp_decl "    ${comment}${inline}${name}${(}${t0} ${p0}${v0}, ${t1} ${p1}${v1}${)}${volatile}${throw};
"
	cpp_def "${comment}${inline}${class}::${name}${(}${t0} ${p0}, ${t1} ${p1}${)}
	: Reactive::Reactive(delta)
${throw}{
${body}}
"
	
	
	
	
      end

      operation 589846 "~CurrentSignal"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type ""
	nparams 0
	cpp_decl "    ${comment}${inline}${virtual}${name}${(}${)}${volatile}${throw};
"
	cpp_def "${comment}${inline}${class}::${name}${(}${)}${throw}{
${body}}
"
	
	
	
	
      end

      operation 589974 "type"
	const cpp_virtual cpp_inline public return_type class_ref 204822 // Type
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return Element_CurrentSignal; };
"
	
	
	
	
      end

      operation 590102 "setCurrent"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 1
	  param in name "i" explicit_type "double"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${t0} ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 590230 "current"
	cpp_inline public explicit_return_type "double"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return m_current; };
"
	
	
	
	
      end

      operation 590358 "time_step"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 590486 "updateCurrents"
	preserve_cpp_body_indent cpp_virtual protected explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 590614 "add_initial_dc"
	preserve_cpp_body_indent cpp_virtual protected explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 590742 "addCurrents"
	preserve_cpp_body_indent protected explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      attribute 303894 "m_current"
	protected explicit_type "double"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
	comment " Current"
      end

      attribute 304022 "m_oldCurrent"
	protected explicit_type "double"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
	comment " Old calculated current"
      end

      attribute 304150 "m_newCurrent"
	protected explicit_type "double"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
	comment " New calculated current"
      end
    end

    class 186774 "CurrentSource"
      visibility package 
      cpp_decl "${comment}${template}class ${name}${inherit} {
${members}};
${inlines}
"
      java_decl ""
      php_decl ""
      python_2_2 python_decl ""
      idl_decl ""
      explicit_switch_type ""
      
      comment "*
cnode n0 has current flowing otu of it, cnode n1 has current flowing into it
@author David Saxton
@short Current Source
"
      classrelation 254870 // <generalisation>
	relation 254870 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 254870 // <generalisation>
	  b parent class_ref 155926 // Element
      end

      operation 590870 "CurrentSource"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 1
	  param in name "current" explicit_type "double"
	cpp_decl "    ${comment}${inline}${name}${(}const ${t0} ${p0}${v0}${)}${volatile}${throw};
"
	cpp_def "${comment}${inline}${class}::${name}${(}const ${t0} ${p0}${)}
	: Element::Element()
${throw}{
${body}}
"
	
	
	
	
      end

      operation 590998 "~CurrentSource"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type ""
	nparams 0
	cpp_decl "    ${comment}${inline}${virtual}${name}${(}${)}${volatile}${throw};
"
	cpp_def "${comment}${inline}${class}::${name}${(}${)}${throw}{
${body}}
"
	
	
	
	
      end

      operation 591126 "type"
	const cpp_virtual cpp_inline public explicit_return_type "Type"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return Element_CurrentSource; };
"
	
	
	
	
      end

      operation 591254 "setCurrent"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 1
	  param in name "i" explicit_type "double"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}const ${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}const ${t0} ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 591382 "updateCurrents"
	preserve_cpp_body_indent cpp_virtual protected explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 591510 "add_initial_dc"
	preserve_cpp_body_indent cpp_virtual protected explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      attribute 304278 "m_i"
	private explicit_type "double"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
	comment " Current"
      end
    end

    class 186902 "Diode"
      visibility package 
      cpp_decl "${comment}${template}class ${name}${inherit} {
${members}};
${inlines}
"
      java_decl ""
      php_decl ""
      python_2_2 python_decl ""
      idl_decl ""
      explicit_switch_type ""
      
      comment " 		double R;	///< Series resistance
*
This simulates a diode. The simulated diode characteristics are:

@li I_s: Diode saturation current
@li V_T: Thermal voltage = kT/4 = 25mV at 20 C
@li n: Emission coefficient, typically between 1 and 2
@li V_RB: Reverse breakdown (large negative voltage)
@li G_RB: Reverse breakdown conductance
@li R_D: Base resistance of diode

@short Simulates the electrical property of diode-ness
@author David Saxton
"
      classrelation 254998 // <generalisation>
	relation 254998 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 254998 // <generalisation>
	  b parent class_ref 203926 // NonLinear
      end

      operation 591894 "Diode"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 0
	cpp_decl "    ${comment}${inline}${name}${(}${)}${volatile}${throw};
"
	cpp_def "//END class Diode Settings
//BEGIN class Diode

${comment}${inline}${class}::${name}${(}${)}
	: NonLinear()
${throw}{
${body}}
"
	
	
	
	
      end

      operation 592022 "~Diode"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type ""
	nparams 0
	cpp_decl "    ${comment}${inline}${virtual}${name}${(}${)}${volatile}${throw};
"
	cpp_def "${comment}${inline}${class}::${name}${(}${)}${throw}{
${body}}
"
	
	
	
	
      end

      operation 592150 "update_dc"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 592278 "add_initial_dc"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 592406 "type"
	const cpp_virtual cpp_inline public return_type class_ref 204822 // Type
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return Element_Diode; };
"
	
	
	
	
      end

      operation 592534 "settings"
	const cpp_inline public return_type class_ref 198038 // DiodeSettings
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return m_diodeSettings; };
"
	
	
	
	
      end

      operation 592662 "setDiodeSettings"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 1
	  param in name "settings" type class_ref 198038 // DiodeSettings
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}const ${t0} & ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}const ${t0} & ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 592790 "current"
	preserve_cpp_body_indent const public explicit_return_type "double"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "*
		 * Returns the current flowing through the diode
		 "
      end

      operation 592918 "updateCurrents"
	preserve_cpp_body_indent cpp_virtual protected explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 593046 "calc_eq"
	preserve_cpp_body_indent protected explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 593174 "calcIg"
	preserve_cpp_body_indent const protected explicit_return_type "void"
	nparams 3
	  param in name "V" explicit_type "double"
	  param inout name "I_D" explicit_type "double"
	  param inout name "g" explicit_type "double"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}, ${t1} * ${p1}${v1}, ${t2} * ${p2}${v2}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${t0} ${p0}, ${t1} * ${p1}, ${t2} * ${p2}${)}${const}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 593302 "updateLim"
	preserve_cpp_body_indent protected explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      attribute 304790 "V_prev"
	protected explicit_type "double"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      attribute 304918 "V_lim"
	protected explicit_type "double"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      classrelation 255126 // m_diodeSettings (<directional composition>)
	relation 255126 *-->
	  a role_name "m_diodeSettings" protected
	    cpp default "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	    classrelation_ref 255126 // m_diodeSettings (<directional composition>)
	  b parent class_ref 198038 // DiodeSettings
      end
    end

    class 187030 "JFET"
      visibility package 
      cpp_decl "${comment}${template}class ${name}${inherit} {
${members}};
${inlines}
"
      java_decl ""
      php_decl ""
      python_2_2 python_decl ""
      idl_decl ""
      explicit_switch_type ""
      
      comment "*
@author David Saxton
 "
      classrelation 257686 // <generalisation>
	relation 257686 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 257686 // <generalisation>
	  b parent class_ref 203926 // NonLinear
      end

      class 205974 "JFET_type"
	visibility package stereotype "enum"
	cpp_decl "${comment}enum ${name} {
${items}
};
"
	java_decl ""
	php_decl ""
	python_2_2 python_decl ""
	idl_decl ""
	explicit_switch_type ""
	
	attribute 311702 "nJFET"
	  public type class_ref 205974 // JFET_type
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 311830 "pJFET"
	  public type class_ref 205974 // JFET_type
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end
      end

      operation 602518 "JFET"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 1
	  param in name "type" type class_ref 205974 // JFET_type
	cpp_decl "    ${comment}${inline}${name}${(}${t0} ${p0}${v0}${)}${volatile}${throw};
"
	cpp_def "//END class JFETState
//BEGIN class JFET

${comment}${inline}${class}::${name}${(}${t0} ${p0}${)}${throw}{
${body}}
"
	
	
	
	
      end

      operation 602646 "~JFET"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type ""
	nparams 0
	cpp_decl "    ${comment}${inline}${virtual}${name}${(}${)}${volatile}${throw};
"
	cpp_def "${comment}${inline}${class}::${name}${(}${)}${throw}{
${body}}
"
	
	
	
	
      end

      operation 602774 "type"
	const cpp_virtual cpp_inline public explicit_return_type "Type"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return Element_JFET; };
"
	
	
	
	
      end

      operation 602902 "update_dc"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 603030 "add_initial_dc"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 603158 "settings"
	const cpp_inline public return_type class_ref 205846 // JFETSettings
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return m_jfetSettings; };
"
	
	
	
	
      end

      operation 603286 "setJFETSettings"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 1
	  param in name "settings" type class_ref 205846 // JFETSettings
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}const ${t0} & ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}const ${t0} & ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 603414 "updateCurrents"
	preserve_cpp_body_indent cpp_virtual protected explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 603542 "calc_eq"
	preserve_cpp_body_indent protected explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "*
		 * Calculates the new JFETState from the voltages on the nodes.
		 "
      end

      operation 603670 "calcIg"
	preserve_cpp_body_indent const protected explicit_return_type "void"
	nparams 10
	  param in name "V_GS" explicit_type "double"
	  param in name "V_GD" explicit_type "double"
	  param in name "V_DS" explicit_type "double"
	  param inout name "I_GS" explicit_type "double"
	  param inout name "I_GD" explicit_type "double"
	  param inout name "I_DS" explicit_type "double"
	  param inout name "g_GS" explicit_type "double"
	  param inout name "g_GD" explicit_type "double"
	  param inout name "g_DS" explicit_type "double"
	  param inout name "g_m" explicit_type "double"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}, ${t1} ${p1}${v1}, ${t2} ${p2}${v2}, ${t3} * ${p3}${v3}, ${t4} * ${p4}${v4}, ${t5} * ${p5}${v5}, ${t6} * ${p6}${v6}, ${t7} * ${p7}${v7}, ${t8} * ${p8}${v8}, ${t9} * ${p9}${v9}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${t0} ${p0}, ${t1} ${p1}, ${t2} ${p2}, ${t3} * ${p3}, ${t4} * ${p4}, ${t5} * ${p5}, ${t6} * ${p6}, ${t7} * ${p7}, ${t8} * ${p8}, ${t9} * ${p9}${)}${const}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      class 206102 "OpRegion"
	visibility package stereotype "enum"
	cpp_decl "${comment}enum ${name} {
${items}
};
"
	java_decl ""
	php_decl ""
	python_2_2 python_decl ""
	idl_decl ""
	explicit_switch_type ""
	
	attribute 311958 "NormalCutoff"
	  public type class_ref 206102 // OpRegion
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 312086 "NormalSaturation"
	  public type class_ref 206102 // OpRegion
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 312214 "NormalLinear"
	  public type class_ref 206102 // OpRegion
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 312342 "InverseCutoff"
	  public type class_ref 206102 // OpRegion
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 312470 "InverseSaturation"
	  public type class_ref 206102 // OpRegion
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 312598 "InverseLinear"
	  public type class_ref 206102 // OpRegion
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end
      end

      operation 603798 "getOpRegion"
	preserve_cpp_body_indent const protected return_type class_ref 206102 // OpRegion
	nparams 3
	  param in name "V_DS" explicit_type "double"
	  param in name "V_GST" explicit_type "double"
	  param in name "V_GDT" explicit_type "double"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}, ${t1} ${p1}${v1}, ${t2} ${p2}${v2}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${t0} ${p0}, ${t1} ${p1}, ${t2} ${p2}${)}${const}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 603926 "updateLim"
	preserve_cpp_body_indent protected explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      classrelation 257814 // m_os (<directional composition>)
	relation 257814 *-->
	  a role_name "m_os" protected
	    cpp default "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	    classrelation_ref 257814 // m_os (<directional composition>)
	  b parent class_ref 205718 // JFETState
      end

      classrelation 257942 // m_ns (<directional composition>)
	relation 257942 *-->
	  a role_name "m_ns" protected
	    cpp default "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	    classrelation_ref 257942 // m_ns (<directional composition>)
	  b parent class_ref 205718 // JFETState
      end

      attribute 312726 "m_pol"
	protected explicit_type "int"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      attribute 312854 "V_lim"
	protected explicit_type "double"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      classrelation 258070 // m_jfetSettings (<directional composition>)
	relation 258070 *-->
	  a role_name "m_jfetSettings" protected
	    cpp default "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	    classrelation_ref 258070 // m_jfetSettings (<directional composition>)
	  b parent class_ref 205846 // JFETSettings
      end
    end

    class 187158 "Inductance"
      visibility package 
      cpp_decl "${comment}${template}class ${name}${inherit} {
${members}};
${inlines}
"
      java_decl ""
      php_decl ""
      python_2_2 python_decl ""
      idl_decl ""
      explicit_switch_type ""
      
      comment "*

@author David Saxton
"
      classrelation 257430 // <generalisation>
	relation 257430 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 257430 // <generalisation>
	  b parent class_ref 204054 // Reactive
      end

      class 205590 "Method"
	visibility package stereotype "enum"
	cpp_decl "${comment}enum ${name} {
${items}
};
"
	java_decl ""
	php_decl ""
	python_2_2 python_decl ""
	idl_decl ""
	explicit_switch_type ""
	
	attribute 310038 "m_none"
	  public type class_ref 205590 // Method
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 310166 "m_euler"
	  public type class_ref 205590 // Method
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 310294 "m_trap"
	  public type class_ref 205590 // Method
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end
      end

      operation 600854 "Inductance"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 2
	  param in name "inductance" explicit_type "double"
	  param in name "delta" explicit_type "double"
	cpp_decl "    ${comment}${inline}${name}${(}${t0} ${p0}${v0}, ${t1} ${p1}${v1}${)}${volatile}${throw};
"
	cpp_def "${comment}${inline}${class}::${name}${(}${t0} ${p0}, ${t1} ${p1}${)}
	: Reactive(delta)
${throw}{
${body}}
"
	
	
	
	
      end

      operation 600982 "~Inductance"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type ""
	nparams 0
	cpp_decl "    ${comment}${inline}${virtual}${name}${(}${)}${volatile}${throw};
"
	cpp_def "${comment}${inline}${class}::${name}${(}${)}${throw}{
${body}}
"
	
	
	
	
      end

      operation 601110 "type"
	const cpp_virtual cpp_inline public explicit_return_type "Type"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return Element_Inductance; };
"
	
	
	
	
      end

      operation 601238 "setMethod"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 1
	  param in name "m" type class_ref 205590 // Method
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${t0} ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "*
		 * Set the stepping use for numerical integration of inductance, and the
		 * interval between successive updates.
		 "
      end

      operation 601366 "time_step"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 601494 "add_initial_dc"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 601622 "setInductance"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 1
	  param in name "i" explicit_type "double"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${t0} ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 601750 "updateCurrents"
	preserve_cpp_body_indent cpp_virtual protected explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 601878 "updateStatus"
	preserve_cpp_body_indent cpp_virtual protected explicit_return_type "bool"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      attribute 310422 "m_inductance"
	private explicit_type "double"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
	comment " Inductance"
      end

      classrelation 257558 // m_method (<directional composition>)
	relation 257558 *-->
	  a role_name "m_method" private
	    comment " Method of integration"
	    cpp default "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	    classrelation_ref 257558 // m_method (<directional composition>)
	  b parent class_ref 205590 // Method
      end

      attribute 310550 "scaled_inductance"
	private explicit_type "double"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      attribute 310678 "v_eq_old"
	private explicit_type "double"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end
    end

    class 187286 "MOSFET"
      visibility package 
      cpp_decl "${comment}${template}class ${name}${inherit} {
${members}};
${inlines}
"
      java_decl ""
      php_decl ""
      python_2_2 python_decl ""
      idl_decl ""
      explicit_switch_type ""
      
      comment "*
@author David Saxton
 "
      classrelation 259606 // <generalisation>
	relation 259606 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 259606 // <generalisation>
	  b parent class_ref 203926 // NonLinear
      end

      class 206998 "MOSFET_type"
	visibility package stereotype "enum"
	cpp_decl "${comment}enum ${name} {
${items}
};
"
	java_decl ""
	php_decl ""
	python_2_2 python_decl ""
	idl_decl ""
	explicit_switch_type ""
	
	attribute 318230 "neMOSFET"
	  public type class_ref 206998 // MOSFET_type
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 318358 "peMOSFET"
	  public type class_ref 206998 // MOSFET_type
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end
      end

      operation 612886 "MOSFET"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 1
	  param in name "type" type class_ref 206998 // MOSFET_type
	cpp_decl "    ${comment}${inline}${name}${(}${t0} ${p0}${v0}${)}${volatile}${throw};
"
	cpp_def "${comment}${inline}${class}::${name}${(}${t0} ${p0}${)}${throw}{
${body}}
"
	
	
	
	
      end

      operation 613014 "~MOSFET"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type ""
	nparams 0
	cpp_decl "    ${comment}${inline}${virtual}${name}${(}${)}${volatile}${throw};
"
	cpp_def "${comment}${inline}${class}::${name}${(}${)}${throw}{
${body}}
"
	
	
	
	
      end

      operation 613142 "type"
	const cpp_virtual cpp_inline public explicit_return_type "Type"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return Element_MOSFET; };
"
	
	
	
	
      end

      operation 613270 "update_dc"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 613398 "add_initial_dc"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 613526 "settings"
	const cpp_inline public return_type class_ref 206870 // MOSFETSettings
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return m_mosfetSettings; };
"
	
	
	
	
      end

      operation 613654 "setMOSFETSettings"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 1
	  param in name "settings" type class_ref 206870 // MOSFETSettings
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}const ${t0} & ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}const ${t0} & ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 613782 "calcIg"
	preserve_cpp_body_indent const protected explicit_return_type "void"
	nparams 12
	  param in name "V_BS" explicit_type "double"
	  param in name "V_BD" explicit_type "double"
	  param in name "V_DS" explicit_type "double"
	  param in name "V_GS" explicit_type "double"
	  param in name "V_GD" explicit_type "double"
	  param inout name "I_BS" explicit_type "double"
	  param inout name "I_BD" explicit_type "double"
	  param inout name "I_DS" explicit_type "double"
	  param inout name "g_BS" explicit_type "double"
	  param inout name "g_BD" explicit_type "double"
	  param inout name "g_DS" explicit_type "double"
	  param inout name "g_M" explicit_type "double"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}, ${t1} ${p1}${v1}, ${t2} ${p2}${v2}, ${t3} ${p3}${v3}, ${t4} ${p4}${v4}, ${t5} * ${p5}${v5}, ${t6} * ${p6}${v6}, ${t7} * ${p7}${v7}, ${t8} * ${p8}${v8}, ${t9} * ${p9}${v9}, ${t10} * ${p10}${v10}, ${t11} * ${p11}${v11}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${t0} ${p0}, ${t1} ${p1}, ${t2} ${p2}, ${t3} ${p3}, ${t4} ${p4}, ${t5} * ${p5}, ${t6} * ${p6}, ${t7} * ${p7}, ${t8} * ${p8}, ${t9} * ${p9}, ${t10} * ${p10}, ${t11} * ${p11}${)}${const}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 613910 "updateLim"
	preserve_cpp_body_indent protected explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 614038 "updateCurrents"
	preserve_cpp_body_indent cpp_virtual protected explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 614166 "calc_eq"
	preserve_cpp_body_indent protected explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "*
		 * Calculates the new MOSFETState from the voltages on the nodes.
		 "
      end

      classrelation 259734 // m_os (<directional composition>)
	relation 259734 *-->
	  a role_name "m_os" protected
	    cpp default "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	    classrelation_ref 259734 // m_os (<directional composition>)
	  b parent class_ref 206742 // MOSFETState
      end

      classrelation 259862 // m_ns (<directional composition>)
	relation 259862 *-->
	  a role_name "m_ns" protected
	    cpp default "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	    classrelation_ref 259862 // m_ns (<directional composition>)
	  b parent class_ref 206742 // MOSFETState
      end

      attribute 318486 "m_pol"
	protected explicit_type "int"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      attribute 318614 "V_lim"
	protected explicit_type "double"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      classrelation 259990 // m_mosfetSettings (<directional composition>)
	relation 259990 *-->
	  a role_name "m_mosfetSettings" protected
	    cpp default "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	    classrelation_ref 259990 // m_mosfetSettings (<directional composition>)
	  b parent class_ref 206870 // MOSFETSettings
      end
    end

    class 187414 "OpAmp"
      visibility package 
      cpp_decl "${comment}${template}class ${name}${inherit} {
${members}};
${inlines}
"
      java_decl ""
      php_decl ""
      python_2_2 python_decl ""
      idl_decl ""
      explicit_switch_type ""
      
      comment "*
node 0: non-inverting input
node 1: output
node 2: inverting input
@author David Saxton
"
      classrelation 260246 // <generalisation>
	relation 260246 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 260246 // <generalisation>
	  b parent class_ref 155926 // Element
      end

      operation 615702 "OpAmp"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 0
	cpp_decl "    ${comment}${inline}${name}${(}${)}${volatile}${throw};
"
	cpp_def "${comment}${inline}${class}::${name}${(}${)}
	: Element::Element()
${throw}{
${body}}
"
	
	
	
	
      end

      operation 615830 "~OpAmp"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type ""
	nparams 0
	cpp_decl "    ${comment}${inline}${virtual}${name}${(}${)}${volatile}${throw};
"
	cpp_def "${comment}${inline}${class}::${name}${(}${)}${throw}{
${body}}
"
	
	
	
	
      end

      operation 615958 "type"
	const cpp_virtual cpp_inline public explicit_return_type "Type"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return Element_OpAmp; };
"
	
	
	
	
      end

      operation 616086 "updateCurrents"
	preserve_cpp_body_indent cpp_virtual protected explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 616214 "add_initial_dc"
	preserve_cpp_body_indent cpp_virtual protected explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end
    end

    class 187542 "Resistance"
      visibility package 
      cpp_decl "${comment}${template}class ${name}${inherit} {
${members}};
${inlines}
"
      java_decl ""
      php_decl ""
      python_2_2 python_decl ""
      idl_decl ""
      explicit_switch_type ""
      
      comment "*
@short Resistance
@author David saxton
"
      classrelation 260502 // <generalisation>
	relation 260502 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 260502 // <generalisation>
	  b parent class_ref 155926 // Element
      end

      operation 617110 "Resistance"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 1
	  param in name "resistance" explicit_type "double"
	cpp_decl "    ${comment}${inline}${name}${(}const ${t0} ${p0}${v0}${)}${volatile}${throw};
"
	cpp_def "// #include <kdebug.h>

${comment}${inline}${class}::${name}${(}const ${t0} ${p0}${)}
	: Element::Element()
${throw}{
${body}}
"
	
	
	
	
      end

      operation 617238 "~Resistance"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type ""
	nparams 0
	cpp_decl "    ${comment}${inline}${virtual}${name}${(}${)}${volatile}${throw};
"
	cpp_def "${comment}${inline}${class}::${name}${(}${)}${throw}{
${body}}
"
	
	
	
	
      end

      operation 617366 "type"
	const cpp_virtual cpp_inline public explicit_return_type "Type"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return Element_Resistance; };
"
	
	
	
	
      end

      operation 617494 "setConductance"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 1
	  param in name "g" explicit_type "double"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}const ${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}const ${t0} ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 617622 "setResistance"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 1
	  param in name "r" explicit_type "double"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}const ${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}const ${t0} ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 617750 "resistance"
	cpp_inline public explicit_return_type "double"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return 1/m_g; };
"
	
	
	
	
      end

      operation 617878 "conductance"
	cpp_inline public explicit_return_type "double"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return m_g; };
"
	
	
	
	
      end

      operation 618006 "updateCurrents"
	preserve_cpp_body_indent cpp_virtual protected explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 618134 "add_initial_dc"
	preserve_cpp_body_indent cpp_virtual protected explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      attribute 318870 "m_g"
	private explicit_type "double"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
	comment " Conductance"
      end
    end

    class 187670 "VCCS"
      visibility package 
      cpp_decl "${comment}${template}class ${name}${inherit} {
${members}};
${inlines}
"
      java_decl ""
      php_decl ""
      python_2_2 python_decl ""
      idl_decl ""
      explicit_switch_type ""
      
      comment "*
CNodes n0 and n1 are used for the voltage control.
CNodes n2 and n3 are used for the current output.
@short Voltage Controlled Current Source
@author David Saxton
"
      classrelation 260630 // <generalisation>
	relation 260630 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 260630 // <generalisation>
	  b parent class_ref 155926 // Element
      end

      operation 618262 "VCCS"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 1
	  param in name "gain" explicit_type "double"
	cpp_decl "    ${comment}${inline}${name}${(}const ${t0} ${p0}${v0}${)}${volatile}${throw};
"
	cpp_def "${comment}${inline}${class}::${name}${(}const ${t0} ${p0}${)}
	: Element::Element()
${throw}{
${body}}
"
	
	
	
	
      end

      operation 618390 "~VCCS"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type ""
	nparams 0
	cpp_decl "    ${comment}${inline}${virtual}${name}${(}${)}${volatile}${throw};
"
	cpp_def "${comment}${inline}${class}::${name}${(}${)}${throw}{
${body}}
"
	
	
	
	
      end

      operation 618518 "type"
	const cpp_virtual cpp_inline public explicit_return_type "Type"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return Element_VCCS; };
"
	
	
	
	
      end

      operation 618646 "setGain"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 1
	  param in name "g" explicit_type "double"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}const ${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}const ${t0} ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 618774 "updateCurrents"
	preserve_cpp_body_indent cpp_virtual protected explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 618902 "add_initial_dc"
	preserve_cpp_body_indent cpp_virtual protected explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      attribute 318998 "m_g"
	private explicit_type "double"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
	comment " Conductance"
      end
    end

    class 187798 "VCVS"
      visibility package 
      cpp_decl "${comment}${template}class ${name}${inherit} {
${members}};
${inlines}
"
      java_decl ""
      php_decl ""
      python_2_2 python_decl ""
      idl_decl ""
      explicit_switch_type ""
      
      comment "*
Voltage source between nodes c2 and c3
Controlling voltage between nodes c0 and c1
@short Voltage Controlled Voltage  Source
@author David Saxton
"
      classrelation 260758 // <generalisation>
	relation 260758 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 260758 // <generalisation>
	  b parent class_ref 155926 // Element
      end

      operation 619030 "VCVS"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 1
	  param in name "gain" explicit_type "double"
	cpp_decl "    ${comment}${inline}${name}${(}const ${t0} ${p0}${v0}${)}${volatile}${throw};
"
	cpp_def "${comment}${inline}${class}::${name}${(}const ${t0} ${p0}${)}
	: Element::Element()
${throw}{
${body}}
"
	
	
	
	
      end

      operation 619158 "~VCVS"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type ""
	nparams 0
	cpp_decl "    ${comment}${inline}${virtual}${name}${(}${)}${volatile}${throw};
"
	cpp_def "${comment}${inline}${class}::${name}${(}${)}${throw}{
${body}}
"
	
	
	
	
      end

      operation 619286 "type"
	const cpp_virtual cpp_inline public explicit_return_type "Type"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return Element_VCVS; };
"
	
	
	
	
      end

      operation 619414 "setGain"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 1
	  param in name "g" explicit_type "double"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}const ${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}const ${t0} ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 619542 "updateCurrents"
	preserve_cpp_body_indent cpp_virtual protected explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 619670 "add_initial_dc"
	preserve_cpp_body_indent cpp_virtual protected explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      attribute 319126 "m_g"
	private explicit_type "double"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
	comment " Conductance"
      end
    end

    class 187926 "VoltagePoint"
      visibility package 
      cpp_decl "${comment}${template}class ${name}${inherit} {
${members}};
${inlines}
"
      java_decl ""
      php_decl ""
      python_2_2 python_decl ""
      idl_decl ""
      explicit_switch_type ""
      
      comment "*
@short VoltagePoint
@author David saxton
"
      classrelation 260886 // <generalisation>
	relation 260886 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 260886 // <generalisation>
	  b parent class_ref 155926 // Element
      end

      operation 619798 "VoltagePoint"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 1
	  param in name "voltage" explicit_type "double"
	cpp_decl "    ${comment}${inline}${name}${(}const ${t0} ${p0}${v0}${)}${volatile}${throw};
"
	cpp_def "${comment}${inline}${class}::${name}${(}const ${t0} ${p0}${)}
	: Element::Element()
${throw}{
${body}}
"
	
	
	
	
      end

      operation 619926 "~VoltagePoint"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type ""
	nparams 0
	cpp_decl "    ${comment}${inline}${virtual}${name}${(}${)}${volatile}${throw};
"
	cpp_def "${comment}${inline}${class}::${name}${(}${)}${throw}{
${body}}
"
	
	
	
	
      end

      operation 620054 "type"
	const cpp_virtual cpp_inline public explicit_return_type "Type"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return Element_VoltagePoint; };
"
	
	
	
	
      end

      operation 620182 "setVoltage"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 1
	  param in name "v" explicit_type "double"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}const ${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}const ${t0} ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 620310 "voltage"
	cpp_inline public explicit_return_type "double"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return m_voltage; };
"
	
	
	
	
      end

      operation 620438 "updateCurrents"
	preserve_cpp_body_indent cpp_virtual protected explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 620566 "add_initial_dc"
	preserve_cpp_body_indent cpp_virtual protected explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      attribute 319254 "m_voltage"
	private explicit_type "double"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
	comment " Conductance"
      end
    end

    class 188054 "VoltageSignal"
      visibility package 
      cpp_decl "${comment}${template}class ${name}${inherit} {
${members}};
${inlines}
"
      java_decl ""
      php_decl ""
      python_2_2 python_decl ""
      idl_decl ""
      explicit_switch_type ""
      
      comment "*
@short VoltageSignal
@author David saxton
"
      classrelation 261014 // <generalisation>
	relation 261014 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 261014 // <generalisation>
	  b parent class_ref 204054 // Reactive
      end

      classrelation 261142 // <generalisation>
	relation 261142 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 261142 // <generalisation>
	  b parent class_ref 204694 // ElementSignal
      end

      operation 620694 "VoltageSignal"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 2
	  param in name "delta" explicit_type "double"
	  param in name "voltage" explicit_type "double"
	cpp_decl "    ${comment}${inline}${name}${(}const ${t0} ${p0}${v0}, const ${t1} ${p1}${v1}${)}${volatile}${throw};
"
	cpp_def "${comment}${inline}${class}::${name}${(}const ${t0} ${p0}, const ${t1} ${p1}${)}
	: Reactive::Reactive(delta)
${throw}{
${body}}
"
	
	
	
	
      end

      operation 620822 "~VoltageSignal"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type ""
	nparams 0
	cpp_decl "    ${comment}${inline}${virtual}${name}${(}${)}${volatile}${throw};
"
	cpp_def "${comment}${inline}${class}::${name}${(}${)}${throw}{
${body}}
"
	
	
	
	
      end

      operation 620950 "type"
	const cpp_virtual cpp_inline public return_type class_ref 204822 // Type
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return Element_VoltageSignal; };
"
	
	
	
	
      end

      operation 621078 "setVoltage"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 1
	  param in name "v" explicit_type "double"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}const ${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}const ${t0} ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 621206 "voltage"
	cpp_inline public explicit_return_type "double"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return m_voltage; };
"
	
	
	
	
      end

      operation 621334 "time_step"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 621462 "updateCurrents"
	preserve_cpp_body_indent cpp_virtual protected explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 621590 "add_initial_dc"
	preserve_cpp_body_indent cpp_virtual protected explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      attribute 319382 "m_voltage"
	private explicit_type "double"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
	comment " Voltage"
      end
    end

    class 188182 "VoltageSource"
      visibility package 
      cpp_decl "${comment}${template}class ${name}${inherit} {
${members}};
${inlines}
"
      java_decl ""
      php_decl ""
      python_2_2 python_decl ""
      idl_decl ""
      explicit_switch_type ""
      
      comment "*
CNode n0 is the negative terminal, CNode n1 is the positive terminal
@short Voltage Source
"
      classrelation 261270 // <generalisation>
	relation 261270 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 261270 // <generalisation>
	  b parent class_ref 155926 // Element
      end

      operation 621718 "VoltageSource"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 1
	  param in name "voltage" explicit_type "double"
	cpp_decl "    ${comment}${inline}${name}${(}const ${t0} ${p0}${v0}${)}${volatile}${throw};
"
	cpp_def "${comment}${inline}${class}::${name}${(}const ${t0} ${p0}${)}
	: Element::Element()
${throw}{
${body}}
"
	
	
	
	
      end

      operation 621846 "~VoltageSource"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type ""
	nparams 0
	cpp_decl "    ${comment}${inline}${virtual}${name}${(}${)}${volatile}${throw};
"
	cpp_def "${comment}${inline}${class}::${name}${(}${)}${throw}{
${body}}
"
	
	
	
	
      end

      operation 621974 "type"
	const cpp_virtual cpp_inline public explicit_return_type "Type"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return Element_VoltageSource; };
"
	
	
	
	
      end

      operation 622102 "setVoltage"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 1
	  param in name "v" explicit_type "double"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}const ${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}const ${t0} ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 622230 "updateCurrents"
	preserve_cpp_body_indent cpp_virtual protected explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 622358 "add_initial_dc"
	preserve_cpp_body_indent cpp_virtual protected explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      attribute 319510 "m_v"
	private explicit_type "double"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
	comment " Voltage"
      end
    end

    class 192790 "CallbackClass"
      visibility package 
      cpp_decl "${comment}${template}class ${name}${inherit} {
${members}};
${inlines}
"
      java_decl ""
      php_decl ""
      python_2_2 python_decl ""
      idl_decl ""
      explicit_switch_type ""
      
    end

    class 198038 "DiodeSettings"
      visibility package 
      cpp_decl "${comment}${template}class ${name}${inherit} {
${members}};
${inlines}
"
      java_decl ""
      php_decl ""
      python_2_2 python_decl ""
      idl_decl ""
      explicit_switch_type ""
      
      operation 591638 "DiodeSettings"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 0
	cpp_decl "    ${comment}${inline}${name}${(}${)}${volatile}${throw};
"
	cpp_def "//BEGIN class Diode Settings

${comment}${inline}${class}::${name}${(}${)}${throw}{
${body}}
"
	
	
	
	
      end

      operation 591766 "reset"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      attribute 304406 "I_S"
	public explicit_type "double"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
	comment "/< Diode saturation current"
      end

      attribute 304534 "N"
	public explicit_type "double"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
	comment "/< Emission coefficient"
      end

      attribute 304662 "V_B"
	public explicit_type "double"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
	comment "/< Reverse breakdown"
      end
    end

    class 203670 "BJTState"
      visibility package 
      cpp_decl "${comment}${template}class ${name}${inherit} {
${members}};
${inlines}
"
      java_decl ""
      php_decl ""
      python_2_2 python_decl ""
      idl_decl ""
      explicit_switch_type ""
      
      operation 581910 "BJTState"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 0
	cpp_decl "    ${comment}${inline}${name}${(}${)}${volatile}${throw};
"
	cpp_def "//END class BJTSettings
//BEGIN class BJTState

${comment}${inline}${class}::${name}${(}${)}${throw}{
${body}}
"
	
	
	
	
      end

      operation 582038 "reset"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 582166 "operator -"
	preserve_cpp_body_indent const public return_type class_ref 203670 // BJTState
	nparams 1
	  param in name "s" type class_ref 203670 // BJTState
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}const ${t0} & ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}const ${t0} & ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      attribute 300950 "A"
	public explicit_type "double"
	multiplicity "[3][3]"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${multiplicity}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      attribute 301078 "I"
	public explicit_type "double"
	multiplicity "[3]"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${multiplicity}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end
    end

    class 203798 "BJTSettings"
      visibility package 
      cpp_decl "${comment}${template}class ${name}${inherit} {
${members}};
${inlines}
"
      java_decl ""
      php_decl ""
      python_2_2 python_decl ""
      idl_decl ""
      explicit_switch_type ""
      
      operation 582294 "BJTSettings"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 0
	cpp_decl "    ${comment}${inline}${name}${(}${)}${volatile}${throw};
"
	cpp_def "//BEGIN class BJTSettings

${comment}${inline}${class}::${name}${(}${)}${throw}{
${body}}
"
	
	
	
	
      end

      attribute 301206 "I_S"
	public explicit_type "double"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
	comment "/< saturation current"
      end

      attribute 301334 "N_F"
	public explicit_type "double"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
	comment "/< forward emission coefficient"
      end

      attribute 301462 "N_R"
	public explicit_type "double"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
	comment "/< reverse emission coefficient"
      end

      attribute 301590 "B_F"
	public explicit_type "double"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
	comment "/< forward beta"
      end

      attribute 301718 "B_R"
	public explicit_type "double"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
	comment "/< reverse beta"
      end
    end

    class 203926 "NonLinear"
      abstract visibility package 
      cpp_decl "${comment}${template}class ${name}${inherit} {
${members}};
${inlines}
"
      java_decl ""
      php_decl ""
      python_2_2 python_decl ""
      idl_decl ""
      explicit_switch_type ""
      
      comment "*
@short Represents a non-linear circuit element (such as a diode)
@author David Saxton
"
      classrelation 260118 // <generalisation>
	relation 260118 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 260118 // <generalisation>
	  b parent class_ref 155926 // Element
      end

      operation 614294 "NonLinear"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 0
	cpp_decl "    ${comment}${inline}${name}${(}${)}${volatile}${throw};
"
	cpp_def "${comment}${inline}${class}::${name}${(}${)}
	: Element()
${throw}{
${body}}
"
	
	
	
	
      end

      operation 614422 "isNonLinear"
	const cpp_virtual cpp_inline public explicit_return_type "bool"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return true; };
"
	
	
	
	
      end

      operation 614550 "update_dc"
	abstract cpp_virtual public explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	
	
	
	
	comment "*
		 * Newton-Raphson iteration: Update equation system.
		 "
      end

      operation 614678 "diodeCurrent"
	preserve_cpp_body_indent const protected explicit_return_type "double"
	nparams 3
	  param in name "v" explicit_type "double"
	  param in name "I_S" explicit_type "double"
	  param in name "N" explicit_type "double"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}, ${t1} ${p1}${v1}, ${t2} ${p2}${v2}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${t0} ${p0}, ${t1} ${p1}, ${t2} ${p2}${)}${const}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "*
		 * The diode current.
		 "
      end

      operation 614806 "diodeConductance"
	preserve_cpp_body_indent const protected explicit_return_type "double"
	nparams 3
	  param in name "v" explicit_type "double"
	  param in name "I_S" explicit_type "double"
	  param in name "N" explicit_type "double"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}, ${t1} ${p1}${v1}, ${t2} ${p2}${v2}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${t0} ${p0}, ${t1} ${p1}, ${t2} ${p2}${)}${const}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "*
		 * Conductance of the diode - the derivative of Schockley's
		 * approximation.
		 "
      end

      operation 614934 "diodeVoltage"
	preserve_cpp_body_indent const protected explicit_return_type "double"
	nparams 4
	  param in name "V" explicit_type "double"
	  param in name "V_prev" explicit_type "double"
	  param in name "N" explicit_type "double"
	  param in name "V_lim" explicit_type "double"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}, ${t1} ${p1}${v1}, ${t2} ${p2}${v2}, ${t3} ${p3}${v3}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${t0} ${p0}, ${t1} ${p1}, ${t2} ${p2}, ${t3} ${p3}${)}${const}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "*
		 * Limits the diode voltage to prevent divergence in the nonlinear
		 * iterations.
		 "
      end

      operation 615062 "diodeJunction"
	preserve_cpp_body_indent const protected explicit_return_type "void"
	nparams 5
	  param in name "V" explicit_type "double"
	  param in name "I_S" explicit_type "double"
	  param in name "N" explicit_type "double"
	  param inout name "I" explicit_type "double"
	  param inout name "g" explicit_type "double"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}, ${t1} ${p1}${v1}, ${t2} ${p2}${v2}, ${t3} * ${p3}${v3}, ${t4} * ${p4}${v4}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${t0} ${p0}, ${t1} ${p1}, ${t2} ${p2}, ${t3} * ${p3}, ${t4} * ${p4}${)}${const}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "*
		 * Current and conductance for a diode junction.
		 "
      end

      operation 615190 "mosDiodeJunction"
	preserve_cpp_body_indent const protected explicit_return_type "void"
	nparams 5
	  param in name "V" explicit_type "double"
	  param in name "I_S" explicit_type "double"
	  param in name "N" explicit_type "double"
	  param inout name "I" explicit_type "double"
	  param inout name "g" explicit_type "double"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}, ${t1} ${p1}${v1}, ${t2} ${p2}${v2}, ${t3} * ${p3}${v3}, ${t4} * ${p4}${v4}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${t0} ${p0}, ${t1} ${p1}, ${t2} ${p2}, ${t3} * ${p3}, ${t4} * ${p4}${)}${const}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "*
		 * Current and conductance for a MOS diode junction.
		 "
      end

      operation 615318 "fetVoltageDS"
	preserve_cpp_body_indent const protected explicit_return_type "double"
	nparams 2
	  param in name "V" explicit_type "double"
	  param in name "V_prev" explicit_type "double"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}, ${t1} ${p1}${v1}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${t0} ${p0}, ${t1} ${p1}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "*
		 * Limits the drain-source voltage to prevent divergence in the
		 * nonlinear iterations.
		 "
      end

      operation 615446 "fetVoltage"
	preserve_cpp_body_indent const protected explicit_return_type "double"
	nparams 3
	  param in name "V" explicit_type "double"
	  param in name "V_prev" explicit_type "double"
	  param in name "Vth" explicit_type "double"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}, ${t1} ${p1}${v1}, ${t2} ${p2}${v2}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${t0} ${p0}, ${t1} ${p1}, ${t2} ${p2}${)}${const}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "*
		 * Limits the forward voltage to prevent divergence in the nonlinear
		 * iterations.
		 "
      end

      operation 615574 "diodeLimitedVoltage"
	preserve_cpp_body_indent const protected explicit_return_type "double"
	nparams 2
	  param in name "I_S" explicit_type "double"
	  param in name "N" explicit_type "double"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}, ${t1} ${p1}${v1}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${t0} ${p0}, ${t1} ${p1}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end
    end

    class 204054 "Reactive"
      abstract visibility package 
      cpp_decl "${comment}${template}class ${name}${inherit} {
${members}};
${inlines}
"
      java_decl ""
      php_decl ""
      python_2_2 python_decl ""
      idl_decl ""
      explicit_switch_type ""
      
      comment "*
@short Represents a reactive element (such as a capacitor)
@author David Saxton
"
      classrelation 260374 // <generalisation>
	relation 260374 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 260374 // <generalisation>
	  b parent class_ref 155926 // Element
      end

      operation 616342 "Reactive"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 1
	  param in name "delta" explicit_type "double"
	cpp_decl "    ${comment}${inline}${name}${(}const ${t0} ${p0}${v0}${)}${volatile}${throw};
"
	cpp_def "${comment}${inline}${class}::${name}${(}const ${t0} ${p0}${)}
	: Element()
${throw}{
${body}}
"
	
	
	
	
      end

      operation 616470 "~Reactive"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type ""
	nparams 0
	cpp_decl "    ${comment}${inline}${virtual}${name}${(}${)}${volatile}${throw};
"
	cpp_def "${comment}${inline}${class}::${name}${(}${)}${throw}{
${body}}
"
	
	
	
	
      end

      operation 616598 "isReactive"
	const cpp_virtual cpp_inline public explicit_return_type "bool"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return true; };
"
	
	
	
	
      end

      operation 616726 "setDelta"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 1
	  param in name "delta" explicit_type "double"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${t0} ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "*
	 * Call this function to set the time period (in seconds)
	 "
      end

      operation 616854 "time_step"
	abstract cpp_virtual public explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	
	
	
	
	comment "*
	 * Called on every time step for the element to update itself
	 "
      end

      operation 616982 "updateStatus"
	preserve_cpp_body_indent cpp_virtual protected explicit_return_type "bool"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      attribute 318742 "m_delta"
	protected explicit_type "double"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
	comment " Delta time interval"
      end
    end

    class 204310 "LogicCacheNode"
      visibility package 
      cpp_decl "${comment}${template}class ${name}${inherit} {
${members}};
${inlines}
"
      java_decl ""
      php_decl ""
      python_2_2 python_decl ""
      idl_decl ""
      explicit_switch_type ""
      
      operation 586518 "LogicCacheNode"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 0
	cpp_decl "    ${comment}${inline}${name}${(}${)}${volatile}${throw};
"
	cpp_def "//END class Circuit
//BEGIN class LogicCacheNode

${comment}${inline}${class}::${name}${(}${)}${throw}{
${body}}
"
	
	
	
	
      end

      operation 586646 "~LogicCacheNode"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 0
	cpp_decl "    ${comment}${inline}${virtual}${name}${(}${)}${volatile}${throw};
"
	cpp_def "${comment}${inline}${class}::${name}${(}${)}${throw}{
${body}}
"
	
	
	
	
      end

      classrelation 253590 // high (<unidirectional association>)
	relation 253590 --->
	  a role_name "high" public
	    cpp default "    ${comment}${static}${mutable}${volatile}${const}${type} * ${name}${value};
"
	    classrelation_ref 253590 // high (<unidirectional association>)
	  b parent class_ref 204310 // LogicCacheNode
      end

      classrelation 253718 // low (<unidirectional association>)
	relation 253718 --->
	  a role_name "low" public
	    cpp default "    ${comment}${static}${mutable}${volatile}${const}${type} * ${name}${value};
"
	    classrelation_ref 253718 // low (<unidirectional association>)
	  b parent class_ref 204310 // LogicCacheNode
      end

      classrelation 253846 // data (<unidirectional association>)
	relation 253846 --->
	  a role_name "data" public
	    cpp default "    ${comment}${static}${mutable}${volatile}${const}${type} * ${name}${value};
"
	    classrelation_ref 253846 // data (<unidirectional association>)
	  b parent class_ref 204438 // QuickVector
      end
    end

    class 204566 "ElementSet"
      visibility package 
      cpp_decl "${comment}${template}class ${name}${inherit} {
${members}};
${inlines}
"
      java_decl ""
      php_decl ""
      python_2_2 python_decl ""
      idl_decl ""
      explicit_switch_type ""
      
      comment "*
Steps in simulation of a set of elements:
(1) Create this class with given number of nodes \"n\" and voltage sources \"m\"
(2) Add the various elements with addElement.
(3) Call performDC()
(4) Get the nodal voltages and voltage currents with x()
(5) Repeat steps 3 and 4 if necessary for further transient analysis.

This class shouldn't be confused with the Circuit class, but considered a helper class to Circuit.
Circuit will handle the simulation of a set of components over time. This just finds the DC-operating
point of the circuit for a given set of elements.

@short Handles a set of circuit elements
@author David Saxton
"
      operation 597910 "ElementSet"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 3
	  param inout name "circuit" type class_ref 155158 // Circuit
	  param in name "n" explicit_type "int"
	  param in name "m" explicit_type "int"
	cpp_decl "    ${comment}${inline}${name}${(}${t0} * ${p0}${v0}, const ${t1} ${p1}${v1}, const ${t2} ${p2}${v2}${)}${volatile}${throw};
"
	cpp_def "${comment}${inline}${class}::${name}${(}${t0} * ${p0}, const ${t1} ${p1}, const ${t2} ${p2}${)}
	:  m_cb(m), m_cn(n), m_pCircuit(circuit)
${throw}{
${body}}
"
	
	
	
	
	comment "*
	 * Create a new circuit, with \"n\" nodes and \"m\" voltage sources.
	 * After creating the circuit, you must call setGround to specify
	 * the ground nodes, before adding any elements.
	 "
      end

      operation 598038 "~ElementSet"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 0
	cpp_decl "    ${comment}${inline}${virtual}${name}${(}${)}${volatile}${throw};
"
	cpp_def "${comment}${inline}${class}::${name}${(}${)}${throw}{
${body}}
"
	
	
	
	
	comment "*
	 * Destructor. Note that only the matrix and supporting data is deleted.
	 * i.e. Any elements added to the circuit will not be deleted.
	 "
      end

      operation 598166 "circuit"
	const cpp_inline public return_type class_ref 155158 // Circuit
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} * ${name}${(}${)}${const}${volatile}${throw}${abstract} { return m_pCircuit; };
"
	
	
	
	
      end

      operation 598294 "addElement"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 1
	  param inout name "e" type class_ref 155926 // Element
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} * ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${t0} * ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 598422 "setCacheInvalidated"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 598550 "matrix"
	const cpp_inline public return_type class_ref 205334 // Matrix
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} * ${name}${(}${)}${const}${volatile}${throw}${abstract} { return p_A; };
"
	
	
	
	
	comment "*
	 * Returns the matrix in use. This is created once on the creation of the ElementSet
	 * class, and deleted in the destructor, so the pointer returned will never change.
	 "
      end

      operation 598678 "b"
	const cpp_inline public return_type class_ref 204438 // QuickVector
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} * ${name}${(}${)}${const}${volatile}${throw}${abstract} { return p_b; };
"
	
	
	
	
	comment "*
	 * Returns the vector for b (i.e. the independent currents & voltages)
	 "
      end

      operation 598806 "x"
	const cpp_inline public return_type class_ref 204438 // QuickVector
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} * ${name}${(}${)}${const}${volatile}${throw}${abstract} { return p_x; };
"
	
	
	
	
	comment "*
	 * Returns the vector for x (i.e. the currents & voltages at the branches and nodes)
	 "
      end

      operation 598934 "containsNonLinear"
	const cpp_inline public explicit_return_type "bool"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return b_containsNonLinear; };
"
	
	
	
	
	comment "*
	 * @return if we have any nonlinear elements (e.g. diodes, tranaistors).
	 "
      end

      operation 599062 "doNonLinear"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 3
	  param in name "maxIterations" explicit_type "int"
	  param in name "maxErrorV" explicit_type "double"
	    defaultvalue "1e-9"
	  param in name "maxErrorI" explicit_type "double"
	    defaultvalue "1e-12 "
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}, ${t1} ${p1}${v1}, ${t2} ${p2}${v2}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${t0} ${p0}, ${t1} ${p1}, ${t2} ${p2}${)}${const}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "*
	 * Solves for nonlinear elements, or just does linear if it doesn't contain
	 * any nonlinear.
	 "
      end

      operation 599190 "doLinear"
	preserve_cpp_body_indent public explicit_return_type "bool"
	nparams 1
	  param in name "performLU" explicit_type "bool"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${t0} ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "*
	 * Solves for linear and logic elements.
	 * @returns true if anything changed
	 "
      end

      operation 599318 "cbranches"
	const cpp_inline public return_type class_ref 205078 // CBranch
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} * * ${name}${(}${)}${const}${volatile}${throw}${abstract} { return m_cbranches; };
"
	
	
	
	
      end

      operation 599446 "cnodes"
	const cpp_inline public return_type class_ref 204950 // CNode
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} * * ${name}${(}${)}${const}${volatile}${throw}${abstract} { return m_cnodes; };
"
	
	
	
	
      end

      operation 599574 "ground"
	const cpp_inline public return_type class_ref 204950 // CNode
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} * ${name}${(}${)}${const}${volatile}${throw}${abstract} { return m_ground; };
"
	
	
	
	
      end

      operation 599702 "cnodeCount"
	const cpp_inline public explicit_return_type "int"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return m_cn; };
"
	
	
	
	
	comment "*
	 * Returns the number of nodes in the circuit (excluding ground 'nodes')
	 "
      end

      operation 599830 "cbranchCount"
	const cpp_inline public explicit_return_type "int"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return m_cb; };
"
	
	
	
	
	comment "*
	 * Returns the number of voltage sources in the circuit
	 "
      end

      operation 599958 "createMatrixMap"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 600086 "displayEquations"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "*
	 * Displays the matrix equations Ax=b and J(dx)=-r
	 "
      end

      operation 600214 "updateInfo"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "*
	 * Update the nodal voltages and branch currents from the x vector
	 "
      end

      classrelation 256022 // p_A (<unidirectional association>)
	relation 256022 --->
	  a role_name "p_A" private
	    cpp default "    ${comment}${static}${mutable}${volatile}${const}${type} * ${name}${value};
"
	    classrelation_ref 256022 // p_A (<unidirectional association>)
	  b parent class_ref 205334 // Matrix
      end

      classrelation 256150 // p_x (<unidirectional association>)
	relation 256150 --->
	  a role_name "p_x" private
	    cpp default "    ${comment}${static}${mutable}${volatile}${const}${type} * ${name}${value};
"
	    classrelation_ref 256150 // p_x (<unidirectional association>)
	  b parent class_ref 204438 // QuickVector
      end

      classrelation 256278 // p_b (<unidirectional association>)
	relation 256278 --->
	  a role_name "p_b" private
	    cpp default "    ${comment}${static}${mutable}${volatile}${const}${type} * ${name}${value};
"
	    classrelation_ref 256278 // p_b (<unidirectional association>)
	  b parent class_ref 204438 // QuickVector
      end

      classrelation 256406 // m_elementList (<directional composition>)
	relation 256406 *-->
	  a role_name "m_elementList" private
	    cpp default "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	    classrelation_ref 256406 // m_elementList (<directional composition>)
	  b parent class_ref 156054 // ElementList
      end

      classrelation 256534 // m_cnonLinearList (<directional composition>)
	relation 256534 *-->
	  a role_name "m_cnonLinearList" private
	    cpp default "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	    classrelation_ref 256534 // m_cnonLinearList (<directional composition>)
	  b parent class_ref 205206 // NonLinearList
      end

      classrelation 256662 // m_cb (<directional composition>)
	relation 256662 *-->
	  a role_name "m_cb" private
	    cpp default "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	    classrelation_ref 256662 // m_cb (<directional composition>)
	  b parent class_ref 151446 // uint
      end

      attribute 308630 "m_cbranches"
	private type class_ref 205078 // CBranch
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} * * ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
	comment " Pointer to an array of cbranches"
      end

      classrelation 256790 // m_cn (<directional composition>)
	relation 256790 *-->
	  a role_name "m_cn" private
	    cpp default "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	    classrelation_ref 256790 // m_cn (<directional composition>)
	  b parent class_ref 151446 // uint
      end

      attribute 308758 "m_cnodes"
	private type class_ref 204950 // CNode
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} * * ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
	comment " Pointer to an array of cnodes"
      end

      classrelation 256918 // m_ground (<unidirectional association>)
	relation 256918 --->
	  a role_name "m_ground" private
	    cpp default "    ${comment}${static}${mutable}${volatile}${const}${type} * ${name}${value};
"
	    classrelation_ref 256918 // m_ground (<unidirectional association>)
	  b parent class_ref 204950 // CNode
      end

      classrelation 257046 // m_clogic (<directional composition>)
	relation 257046 *-->
	  a role_name "m_clogic" private
	    cpp default "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	    classrelation_ref 257046 // m_clogic (<directional composition>)
	  b parent class_ref 151446 // uint
      end

      attribute 308886 "p_logicIn"
	private type class_ref 179990 // LogicIn
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} * * ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      attribute 309014 "b_containsNonLinear"
	private explicit_type "bool"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      classrelation 257174 // m_pCircuit (<unidirectional association>)
	relation 257174 --->
	  a role_name "m_pCircuit" private
	    cpp default "    ${comment}${static}${mutable}${volatile}${const}${type} * ${name}${value};
"
	    classrelation_ref 257174 // m_pCircuit (<unidirectional association>)
	  b parent class_ref 155158 // Circuit
      end
    end

    class 204694 "ElementSignal"
      visibility package 
      cpp_decl "${comment}${template}class ${name}${inherit} {
${members}};
${inlines}
"
      java_decl ""
      php_decl ""
      python_2_2 python_decl ""
      idl_decl ""
      explicit_switch_type ""
      
      comment "*
@short Provides different signals
@author David Saxton
"
      class 205462 "Type"
	visibility package stereotype "enum"
	cpp_decl "${comment}enum ${name} {
${items}
};
"
	java_decl ""
	php_decl ""
	python_2_2 python_decl ""
	idl_decl ""
	explicit_switch_type ""
	
	attribute 309142 "st_sinusoidal"
	  public type class_ref 205462 // Type
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 309270 "st_square"
	  public type class_ref 205462 // Type
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 309398 "st_sawtooth"
	  public type class_ref 205462 // Type
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 309526 "st_triangular"
	  public type class_ref 205462 // Type
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end
      end

      operation 600342 "ElementSignal"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 0
	cpp_decl "    ${comment}${inline}${name}${(}${)}${volatile}${throw};
"
	cpp_def "${comment}${inline}${class}::${name}${(}${)}${throw}{
${body}}
"
	
	
	
	
      end

      operation 600470 "~ElementSignal"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 0
	cpp_decl "    ${comment}${inline}${virtual}${name}${(}${)}${volatile}${throw};
"
	cpp_def "${comment}${inline}${class}::${name}${(}${)}${throw}{
${body}}
"
	
	
	
	
      end

      operation 600598 "setStep"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 2
	  param in name "type" type class_ref 205462 // Type
	  param in name "frequency" explicit_type "double"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}, ${t1} ${p1}${v1}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${t0} ${p0}, ${t1} ${p1}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 600726 "advance"
	preserve_cpp_body_indent public explicit_return_type "double"
	nparams 1
	  param in name "delta" explicit_type "double"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${t0} ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "*
	 * Advances the timer, returns amplitude (between -1 and 1)
	 "
      end

      classrelation 257302 // m_type (<directional composition>)
	relation 257302 *-->
	  a role_name "m_type" protected
	    cpp default "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	    classrelation_ref 257302 // m_type (<directional composition>)
	  b parent class_ref 205462 // Type
      end

      attribute 309654 "m_time"
	protected explicit_type "double"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      attribute 309782 "m_frequency"
	protected explicit_type "double"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      attribute 309910 "m_omega"
	protected explicit_type "double"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
	comment " Used for sinusoidal signal"
      end
    end

    class 204950 "CNode"
      visibility package 
      cpp_decl "${comment}${template}class ${name}${inherit} {
${members}};
${inlines}
"
      java_decl ""
      php_decl ""
      python_2_2 python_decl ""
      idl_decl ""
      explicit_switch_type ""
      
      comment "/< Thermal voltage"
      operation 593430 "CNode"
	cpp_inline public explicit_return_type ""
	nparams 0
	cpp_decl "    ${comment}${inline}${name}${(}${)}${volatile}${throw} : v(0.0), isGround(false), m_n(0) {};
"
	
	
	
	
      end

      operation 593558 "CNode"
	cpp_inline public explicit_return_type ""
	nparams 1
	  param in name "n" explicit_type "uint32_t"
	cpp_decl "    ${comment}${inline}${name}${(}const ${t0} ${p0}${v0}${)}${volatile}${throw} : v(0.0), isGround(false), m_n(n) {};
"
	
	
	
	
      end

      operation 593686 "set_n"
	cpp_inline public explicit_return_type "void"
	nparams 1
	  param in name "n" type class_ref 151446 // uint
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}const ${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract} { m_n=n; };
"
	
	
	
	
      end

      operation 593814 "n"
	const cpp_inline public return_type class_ref 151446 // uint
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return m_n; };
"
	
	
	
	
      end

      attribute 305046 "v"
	public explicit_type "double"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      attribute 305174 "isGround"
	public explicit_type "bool"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      classrelation 255254 // m_n (<directional composition>)
	relation 255254 *-->
	  a role_name "m_n" private
	    cpp default "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	    classrelation_ref 255254 // m_n (<directional composition>)
	  b parent class_ref 151446 // uint
      end
    end

    class 205078 "CBranch"
      visibility package 
      cpp_decl "${comment}${template}class ${name}${inherit} {
${members}};
${inlines}
"
      java_decl ""
      php_decl ""
      python_2_2 python_decl ""
      idl_decl ""
      explicit_switch_type ""
      
      operation 593942 "CBranch"
	cpp_inline public explicit_return_type ""
	nparams 0
	cpp_decl "    ${comment}${inline}${name}${(}${)}${volatile}${throw} : i(0.0), m_n(0) {};
"
	
	
	
	
      end

      operation 594070 "CBranch"
	cpp_inline public explicit_return_type ""
	nparams 1
	  param in name "n" explicit_type "uint32_t"
	cpp_decl "    ${comment}${inline}${name}${(}const ${t0} ${p0}${v0}${)}${volatile}${throw} : i(0.0), m_n(n) {};
"
	
	
	
	
      end

      operation 594198 "set_n"
	cpp_inline public explicit_return_type "void"
	nparams 1
	  param in name "n" type class_ref 151446 // uint
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}const ${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract} { m_n=n; };
"
	
	
	
	
      end

      operation 594326 "n"
	const cpp_inline public return_type class_ref 151446 // uint
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return m_n; };
"
	
	
	
	
      end

      attribute 305302 "i"
	public explicit_type "double"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      classrelation 255382 // m_n (<directional composition>)
	relation 255382 *-->
	  a role_name "m_n" private
	    cpp default "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	    classrelation_ref 255382 // m_n (<directional composition>)
	  b parent class_ref 151446 // uint
      end
    end

    class 205206 "NonLinearList"
      visibility package stereotype "typedef" base_type class_ref 203926 // NonLinear
      cpp_decl "${comment}typedef QValueList<${type}*> ${name};
"
      java_decl ""
      php_decl ""
      python_2_2 python_decl ""
      idl_decl ""
      explicit_switch_type ""
      
      classrelation 255894 // <dependency>
	relation 255894 -_->
	  a default
	    cpp default "#include in source"
	    classrelation_ref 255894 // <dependency>
	  b parent class_ref 203926 // NonLinear
      end
    end

    class 205334 "Matrix"
      visibility package 
      cpp_decl "${comment}${template}class ${name}${inherit} {
${members}};
${inlines}
"
      java_decl ""
      php_decl ""
      python_2_2 python_decl ""
      idl_decl ""
      explicit_switch_type ""
      
      comment "*
This class performs matrix storage, lu decomposition, forward and backward
substitution, and a few other useful operations. Steps in using class:
(1) Create an instance of this class with the correct size
(2) Define the matrix pattern as neccessary:
	(1) Call zero (unnecessary after initial ceration) to reset the pattern
		& matrix
	(2) Call setUse to set the use of each element in the matrix
	(3) Call createMap to generate the row-wise permutation mapping for use
		in partial pivoting
(3) Add the values to the matrix
(4) Call performLU, and get the results with fbSub
(5) Repeat 2, 3, 4 or 5 as necessary.
@todo We need to allow createMap to work while the matrix has already been initalised
@short Matrix manipulation class tailored for circuit equations
@author David Saxton
"
      operation 608406 "Matrix"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 2
	  param in name "n" explicit_type "CUI"
	  param in name "m" explicit_type "CUI"
	cpp_decl "    ${comment}${inline}${name}${(}${t0} ${p0}${v0}, ${t1} ${p1}${v1}${)}${volatile}${throw};
"
	cpp_def "${comment}${inline}${class}::${name}${(}${t0} ${p0}, ${t1} ${p1}${)}
	: m_n(n)
${throw}{
${body}}
"
	
	
	
	
	comment "*
	 * Creates a size x size square matrix m, with all values zero,
	 * and a right side vector x of size m+n
	 "
      end

      operation 608534 "~Matrix"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 0
	cpp_decl "    ${comment}${inline}${virtual}${name}${(}${)}${volatile}${throw};
"
	cpp_def "${comment}${inline}${class}::${name}${(}${)}${throw}{
${body}}
"
	
	
	
	
      end

      operation 608662 "zero"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "*
	 * Sets all elements to zero
	 "
      end

      operation 608790 "isChanged"
	const cpp_inline public explicit_return_type "bool"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return max_k < m_mat->size_m(); };
"
	
	
	
	
	comment "*
	 * Returns true if the matrix is changed since last calling performLU()
	 * - i.e. if we do need to call performLU again.
	 "
      end

      operation 608918 "performLU"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "*
	 * Performs LU decomposition. Going along the rows,
	 * the value of the decomposed LU matrix depends only on
	 * the previous values.
	 "
      end

      operation 609046 "fbSub"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 1
	  param inout name "b" type class_ref 204438 // QuickVector
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} * ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${t0} * ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "*
	 * Applies the right side vector (x) to the decomposed matrix,
	 * with the solution returned in x.
	 "
      end

      operation 609174 "displayMatrix"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "*
	 * Prints the matrix to stdout
	 "
      end

      operation 609302 "displayLU"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "*
	 * Prints the LU-decomposed matrix to stdout
	 "
      end

      operation 609430 "g"
	cpp_inline public explicit_return_type "double"
	nparams 2
	  param in name "i" explicit_type "CUI"
	  param in name "j" explicit_type "CUI"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} & ${name}${(}${t0} ${p0}${v0}, ${t1} ${p1}${v1}${)}${const}${volatile}${throw}${abstract} {
		const unsigned int mapped_i = m_inMap[i];
		if ( mapped_i<max_k ) max_k=mapped_i;
		if ( j<max_k ) max_k=j;
		
		// I think I need the next line...
		if ( max_k>0 ) max_k--;
		
		return (*m_mat)[mapped_i][j];
	};
"
	
	
	
	
	comment "*
	 * Sets the element matrix at row i, col j to value x
	 "
      end

      operation 609558 "g"
	const cpp_inline public explicit_return_type "double"
	nparams 2
	  param in name "i" explicit_type "CUI"
	  param in name "j" explicit_type "CUI"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}, ${t1} ${p1}${v1}${)}${const}${volatile}${throw}${abstract} { return (*m_mat)[m_inMap[i]][j]; };
"
	
	
	
	
      end

      operation 609686 "b"
	cpp_inline public explicit_return_type "double"
	nparams 2
	  param in name "i" explicit_type "CUI"
	  param in name "j" explicit_type "CUI"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} & ${name}${(}${t0} ${p0}${v0}, ${t1} ${p1}${v1}${)}${const}${volatile}${throw}${abstract} { return g( i, j+m_n ); };
"
	
	
	
	
      end

      operation 609814 "c"
	cpp_inline public explicit_return_type "double"
	nparams 2
	  param in name "i" explicit_type "CUI"
	  param in name "j" explicit_type "CUI"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} & ${name}${(}${t0} ${p0}${v0}, ${t1} ${p1}${v1}${)}${const}${volatile}${throw}${abstract} { return g( i+m_n, j ); };
"
	
	
	
	
      end

      operation 609942 "d"
	cpp_inline public explicit_return_type "double"
	nparams 2
	  param in name "i" explicit_type "CUI"
	  param in name "j" explicit_type "CUI"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} & ${name}${(}${t0} ${p0}${v0}, ${t1} ${p1}${v1}${)}${const}${volatile}${throw}${abstract} { return g( i+m_n, j+m_n ); };
"
	
	
	
	
      end

      operation 610070 "b"
	const cpp_inline public explicit_return_type "double"
	nparams 2
	  param in name "i" explicit_type "CUI"
	  param in name "j" explicit_type "CUI"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}, ${t1} ${p1}${v1}${)}${const}${volatile}${throw}${abstract} { return g( i, j+m_n ); };
"
	
	
	
	
      end

      operation 610198 "c"
	const cpp_inline public explicit_return_type "double"
	nparams 2
	  param in name "i" explicit_type "CUI"
	  param in name "j" explicit_type "CUI"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}, ${t1} ${p1}${v1}${)}${const}${volatile}${throw}${abstract} { return g( i+m_n, j ); };
"
	
	
	
	
      end

      operation 610326 "d"
	const cpp_inline public explicit_return_type "double"
	nparams 2
	  param in name "i" explicit_type "CUI"
	  param in name "j" explicit_type "CUI"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}, ${t1} ${p1}${v1}${)}${const}${volatile}${throw}${abstract} { return g( i+m_n, j+m_n ); };
"
	
	
	
	
      end

      operation 610454 "m"
	const cpp_inline public explicit_return_type "double"
	nparams 2
	  param in name "i" explicit_type "CUI"
	  param in name "j" explicit_type "CUI"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}, ${t1} ${p1}${v1}${)}${const}${volatile}${throw}${abstract} {
		return (*m_mat)[m_inMap[i]][j];
	};
"
	
	
	
	
	comment "*
	 * Returns the value of matrix at row i, col j.
	 "
      end

      operation 610582 "multiply"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 2
	  param in name "rhs" type class_ref 204438 // QuickVector
	  param inout name "result" type class_ref 204438 // QuickVector
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}const ${t0} * ${p0}${v0}, ${t1} * ${p1}${v1}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}const ${t0} * ${p0}, ${t1} * ${p1}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "*
	 * Multiplies this matrix by the Vector rhs, and places the result
	 * in the vector pointed to by result. Will fail if wrong size.
	 "
      end

      operation 610710 "swapRows"
	preserve_cpp_body_indent private explicit_return_type "void"
	nparams 2
	  param in name "a" explicit_type "CUI"
	  param in name "b" explicit_type "CUI"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}, ${t1} ${p1}${v1}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${t0} ${p0}, ${t1} ${p1}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "*
	 * Swaps around the rows in the (a) the matrix; and (b) the mappings
	 "
      end

      attribute 315670 "m_n"
	private explicit_type "uint"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
	comment " number of cnodes. "
      end

      attribute 315798 "max_k"
	private explicit_type "uint"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
	comment " optimization variable, allows partial L_U re-do. "
      end

      attribute 315926 "m_inMap"
	private explicit_type "int"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} * ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
	comment " Rowwise permutation mapping from external reference to internal storage"
      end

      classrelation 259350 // m_mat (<unidirectional association>)
	relation 259350 --->
	  a role_name "m_mat" private
	    cpp default "    ${comment}${static}${mutable}${volatile}${const}${type} * ${name}${value};
"
	    classrelation_ref 259350 // m_mat (<unidirectional association>)
	  b parent class_ref 206486 // QuickMatrix
      end

      classrelation 259478 // m_lu (<unidirectional association>)
	relation 259478 --->
	  a role_name "m_lu" private
	    cpp default "    ${comment}${static}${mutable}${volatile}${const}${type} * ${name}${value};
"
	    classrelation_ref 259478 // m_lu (<unidirectional association>)
	  b parent class_ref 206486 // QuickMatrix
      end

      attribute 316054 "m_y"
	private explicit_type "double"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} * ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
	comment " Avoids recreating it lots of times"
      end
    end

    class 205718 "JFETState"
      visibility package 
      cpp_decl "${comment}${template}class ${name}${inherit} {
${members}};
${inlines}
"
      java_decl ""
      php_decl ""
      python_2_2 python_decl ""
      idl_decl ""
      explicit_switch_type ""
      
      operation 602006 "JFETState"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 0
	cpp_decl "    ${comment}${inline}${name}${(}${)}${volatile}${throw};
"
	cpp_def "//END class JFETSettings
//BEGIN class JFETState

${comment}${inline}${class}::${name}${(}${)}${throw}{
${body}}
"
	
	
	
	
      end

      operation 602134 "reset"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 602262 "operator -"
	preserve_cpp_body_indent const public return_type class_ref 205718 // JFETState
	nparams 1
	  param in name "s" type class_ref 205718 // JFETState
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}const ${t0} & ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}const ${t0} & ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      attribute 310806 "A"
	public explicit_type "double"
	multiplicity "[3][3]"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${multiplicity}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      attribute 310934 "I"
	public explicit_type "double"
	multiplicity "[3]"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${multiplicity}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end
    end

    class 205846 "JFETSettings"
      visibility package 
      cpp_decl "${comment}${template}class ${name}${inherit} {
${members}};
${inlines}
"
      java_decl ""
      php_decl ""
      python_2_2 python_decl ""
      idl_decl ""
      explicit_switch_type ""
      
      operation 602390 "JFETSettings"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 0
	cpp_decl "    ${comment}${inline}${name}${(}${)}${volatile}${throw};
"
	cpp_def "//BEGIN class JFETSettings

${comment}${inline}${class}::${name}${(}${)}${throw}{
${body}}
"
	
	
	
	
      end

      attribute 311062 "V_Th"
	public explicit_type "double"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
	comment "/< zero-bias threshold voltage"
      end

      attribute 311190 "beta"
	public explicit_type "double"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
	comment "/< transconductance parameter"
      end

      attribute 311318 "I_S"
	public explicit_type "double"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
	comment "/< gate-junction saturation current"
      end

      attribute 311446 "N"
	public explicit_type "double"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
	comment "/< gate pn emission coeffecient"
      end

      attribute 311574 "N_R"
	public explicit_type "double"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
	comment "/< Isr emission coefficient"
      end
    end

    class 206230 "LogicConfig"
      visibility package 
      cpp_decl "${comment}${template}class ${name}${inherit} {
${members}};
${inlines}
"
      java_decl ""
      php_decl ""
      python_2_2 python_decl ""
      idl_decl ""
      explicit_switch_type ""
      
      operation 604054 "LogicConfig"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 0
	cpp_decl "    ${comment}${inline}${name}${(}${)}${volatile}${throw};
"
	cpp_def "//BEGIN class LogicConfig

${comment}${inline}${class}::${name}${(}${)}${throw}{
${body}}
"
	
	
	
	
      end

      attribute 312982 "risingTrigger"
	public explicit_type "float"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
	comment "/< Trigger on rising edge"
      end

      attribute 313110 "fallingTrigger"
	public explicit_type "float"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
	comment "/< Trigger on falling edge"
      end

      attribute 313238 "output"
	public explicit_type "float"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
	comment "/< Output voltage"
      end

      attribute 313366 "highImpedance"
	public explicit_type "float"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
	comment "/< Output impedance when high"
      end

      attribute 313494 "lowImpedance"
	public explicit_type "float"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
	comment "/< Output impedance when low"
      end
    end

    class 206358 "CallbackPtr"
      visibility package stereotype "typedef" explicit_base_type "void"
      cpp_decl "${comment}typedef ${type}(CallbackClass::* ${name})( bool isHigh );
"
      java_decl ""
      php_decl ""
      python_2_2 python_decl ""
      idl_decl ""
      explicit_switch_type ""
      
    end

    class 206614 "Matrix22"
      visibility package 
      cpp_decl "${comment}${template}class ${name}${inherit} {
${members}};
${inlines}
"
      java_decl ""
      php_decl ""
      python_2_2 python_decl ""
      idl_decl ""
      explicit_switch_type ""
      
      comment "*
This class provides a very simple, lightweight, 2x2 matrix solver.
It's fast and reliable. Set the values for the entries of A and b:

A x = b

call solve() (which returns true if successful - i.e. exactly one solution to the
matrix), and get the values of x with the appropriate functions.

@short 2x2 Matrix
@author David Saxton
"
      operation 610838 "Matrix22"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 0
	cpp_decl "    ${comment}${inline}${name}${(}${)}${volatile}${throw};
"
	cpp_def "// ###############################################################################

${comment}${inline}${class}::${name}${(}${)}${throw}{
${body}}
"
	
	
	
	
      end

      operation 610966 "a11"
	cpp_inline public explicit_return_type "double"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} & ${name}${(}${)}${const}${volatile}${throw}${abstract} { return m_a11; };
"
	
	
	
	
      end

      operation 611094 "a12"
	cpp_inline public explicit_return_type "double"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} & ${name}${(}${)}${const}${volatile}${throw}${abstract} { return m_a12; };
"
	
	
	
	
      end

      operation 611222 "a21"
	cpp_inline public explicit_return_type "double"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} & ${name}${(}${)}${const}${volatile}${throw}${abstract} { return m_a21; };
"
	
	
	
	
      end

      operation 611350 "a22"
	cpp_inline public explicit_return_type "double"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} & ${name}${(}${)}${const}${volatile}${throw}${abstract} { return m_a22; };
"
	
	
	
	
      end

      operation 611478 "b1"
	cpp_inline public explicit_return_type "double"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} & ${name}${(}${)}${const}${volatile}${throw}${abstract} { return m_b1; };
"
	
	
	
	
      end

      operation 611606 "b2"
	cpp_inline public explicit_return_type "double"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} & ${name}${(}${)}${const}${volatile}${throw}${abstract} { return m_b2; };
"
	
	
	
	
      end

      operation 611734 "solve"
	preserve_cpp_body_indent public explicit_return_type "bool"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "*
	 * Solve the matrix. Returns true if successful (i.e. non-singular), else
	 * false. Get the solution with x1() and x2().
	 "
      end

      operation 611862 "reset"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "*
	 * Resets all entries to zero
	 "
      end

      operation 611990 "x1"
	const cpp_inline public explicit_return_type "double"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return m_x1; };
"
	
	
	
	
      end

      operation 612118 "x2"
	const cpp_inline public explicit_return_type "double"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return m_x2; };
"
	
	
	
	
      end
    end

    class 206742 "MOSFETState"
      visibility package 
      cpp_decl "${comment}${template}class ${name}${inherit} {
${members}};
${inlines}
"
      java_decl ""
      php_decl ""
      python_2_2 python_decl ""
      idl_decl ""
      explicit_switch_type ""
      
      operation 612246 "MOSFETState"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 0
	cpp_decl "    ${comment}${inline}${name}${(}${)}${volatile}${throw};
"
	cpp_def "//END class MOSFETSettings
//BEGIN class MOSFETState

${comment}${inline}${class}::${name}${(}${)}${throw}{
${body}}
"
	
	
	
	
      end

      operation 612374 "reset"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 612502 "operator -"
	preserve_cpp_body_indent const public return_type class_ref 206742 // MOSFETState
	nparams 1
	  param in name "s" type class_ref 206742 // MOSFETState
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}const ${t0} & ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}const ${t0} & ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      attribute 316182 "A"
	public explicit_type "double"
	multiplicity "[4][4]"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${multiplicity}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      attribute 316310 "I"
	public explicit_type "double"
	multiplicity "[4]"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${multiplicity}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end
    end

    class 206870 "MOSFETSettings"
      visibility package 
      cpp_decl "${comment}${template}class ${name}${inherit} {
${members}};
${inlines}
"
      java_decl ""
      php_decl ""
      python_2_2 python_decl ""
      idl_decl ""
      explicit_switch_type ""
      
      operation 612630 "MOSFETSettings"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 0
	cpp_decl "    ${comment}${inline}${name}${(}${)}${volatile}${throw};
"
	cpp_def "//BEGIN class MOSFETSettings

${comment}${inline}${class}::${name}${(}${)}${throw}{
${body}}
"
	
	
	
	
      end

      attribute 316438 "I_S"
	public explicit_type "double"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
	comment "/< bulk junction saturation current"
      end

      attribute 316566 "N"
	public explicit_type "double"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
	comment "/< bulk junction emission coefficient"
      end

      attribute 316694 "K_P"
	public explicit_type "double"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
	comment "/< transconductance coeffecient"
      end

      attribute 316822 "W"
	public explicit_type "double"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
	comment "/< channel width"
      end

      attribute 316950 "L"
	public explicit_type "double"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
	comment "/< channel length"
      end

      operation 612758 "beta"
	const cpp_inline public explicit_return_type "double"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return K_P * W / L; };
"
	
	
	
	
      end

      attribute 317078 "phi"
	public explicit_type "double"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
	comment "/< surface potential"
      end

      attribute 317206 "T_OX"
	public explicit_type "double"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
	comment "/< oxide thickness"
      end

      attribute 317334 "P_b"
	public explicit_type "double"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
	comment "/< bulk junction potential"
      end

      attribute 317462 "M_J"
	public explicit_type "double"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
	comment "/< bulk junction bottom grading coefficient"
      end

      attribute 317590 "F_C"
	public explicit_type "double"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
	comment "/< bulk junction forward-bbias depletion capacitance coefficient"
      end

      attribute 317718 "M_JSW"
	public explicit_type "double"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
	comment "/< bulk junction periphery grading coefficient"
      end

      attribute 317846 "U_0"
	public explicit_type "double"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
	comment "/< surface mobility"
      end

      attribute 317974 "N_RD"
	public explicit_type "int"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
	comment "/< number of equivalent drain squares"
      end

      attribute 318102 "N_RS"
	public explicit_type "int"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
	comment "/< number of equivalent source squares"
      end
    end

    class 234134 "PinListMap"
      visibility package stereotype "typedef" base_type class_ref 156182 // PinList
      cpp_decl "${comment}typedef std::multimap<int,${type}> ${name};
"
      java_decl ""
      php_decl ""
      python_2_2 python_decl ""
      idl_decl ""
      explicit_switch_type ""
      
      classrelation 300950 // <dependency>
	relation 300950 -_->
	  a default
	    cpp default "#include in source"
	    classrelation_ref 300950 // <dependency>
	  b parent class_ref 156182 // PinList
      end
    end
  end

  deploymentview 130198 "simulation"
    //deployment diagram settings
    package_name_in_tab default show_context default write_horizontally default auto_label_position default draw_all_relations default shadow default
    draw_component_as_icon default show_component_req_prov default show_component_rea default show_stereotype_properties default
    artifact 148502 "bjt"
      stereotype "source"
      cpp_h "#ifndef ${NAMESPACE}_${NAME}_H
#define ${NAMESPACE}_${NAME}_H

${comment}
${includes}
${declarations}
${namespace_start}
${definition}
${namespace_end}
#endif
"
      cpp_src "${comment}
${includes}
${namespace_start}
${members}
${namespace_end}"
      associated_classes
	class_ref 203670 // BJTState
	class_ref 203798 // BJTSettings
	class_ref 186134 // BJT
      end
    end

    artifact 148630 "capacitance"
      stereotype "source"
      cpp_h "#ifndef ${NAMESPACE}_${NAME}_H
#define ${NAMESPACE}_${NAME}_H

${comment}
${includes}
${declarations}
${namespace_start}
${definition}
${namespace_end}
#endif
"
      cpp_src "${comment}
${includes}
${namespace_start}
${members}
${namespace_end}"
      associated_classes
	class_ref 186262 // Capacitance
      end
    end

    artifact 148758 "cccs"
      stereotype "source"
      cpp_h "#ifndef ${NAMESPACE}_${NAME}_H
#define ${NAMESPACE}_${NAME}_H

${comment}
${includes}
${declarations}
${namespace_start}
${definition}
${namespace_end}
#endif
"
      cpp_src "${comment}
${includes}
${namespace_start}
${members}
${namespace_end}"
      associated_classes
	class_ref 186390 // CCCS
      end
    end

    artifact 148886 "ccvs"
      stereotype "source"
      cpp_h "#ifndef ${NAMESPACE}_${NAME}_H
#define ${NAMESPACE}_${NAME}_H

${comment}
${includes}
${declarations}
${namespace_start}
${definition}
${namespace_end}
#endif
"
      cpp_src "${comment}
${includes}
${namespace_start}
${members}
${namespace_end}"
      associated_classes
	class_ref 186518 // CCVS
      end
    end

    artifact 149014 "circuit"
      stereotype "source"
      cpp_h "#ifndef ${NAMESPACE}_${NAME}_H
#define ${NAMESPACE}_${NAME}_H

${comment}
${includes}
${declarations}
${namespace_start}
${definition}
${namespace_end}
#endif
"
      cpp_src "${comment}
${includes}
${namespace_start}
${members}
${namespace_end}"
      associated_classes
	class_ref 204310 // LogicCacheNode
	class_ref 155158 // Circuit
      end
    end

    artifact 149142 "currentsignal"
      stereotype "source"
      cpp_h "#ifndef ${NAMESPACE}_${NAME}_H
#define ${NAMESPACE}_${NAME}_H

${comment}
${includes}
${declarations}
${namespace_start}
${definition}
${namespace_end}
#endif
"
      cpp_src "${comment}
${includes}
${namespace_start}
${members}
${namespace_end}"
      associated_classes
	class_ref 186646 // CurrentSignal
      end
    end

    artifact 149270 "currentsource"
      stereotype "source"
      cpp_h "#ifndef ${NAMESPACE}_${NAME}_H
#define ${NAMESPACE}_${NAME}_H

${comment}
${includes}
${declarations}
${namespace_start}
${definition}
${namespace_end}
#endif
"
      cpp_src "${comment}
${includes}
${namespace_start}
${members}
${namespace_end}"
      associated_classes
	class_ref 186774 // CurrentSource
      end
    end

    artifact 149398 "diode"
      stereotype "source"
      cpp_h "#ifndef ${NAMESPACE}_${NAME}_H
#define ${NAMESPACE}_${NAME}_H

${comment}
${includes}
${declarations}
${namespace_start}
${definition}
${namespace_end}
#endif
"
      cpp_src "${comment}
${includes}
${namespace_start}
${members}
${namespace_end}"
      associated_classes
	class_ref 198038 // DiodeSettings
	class_ref 186902 // Diode
      end
    end

    artifact 149526 "element"
      stereotype "source"
      cpp_h "#ifndef ${NAMESPACE}_${NAME}_H
#define ${NAMESPACE}_${NAME}_H

${comment}
${includes}
${declarations}
${namespace_start}
${definition}
${namespace_end}
#endif
"
      cpp_src "${comment}
${includes}
${namespace_start}
${members}
${namespace_end}"
      associated_classes
	class_ref 151446 // uint
	class_ref 204950 // CNode
	class_ref 205078 // CBranch
	class_ref 155926 // Element
      end
    end

    artifact 149654 "elementset"
      stereotype "source"
      cpp_h "#ifndef ${NAMESPACE}_${NAME}_H
#define ${NAMESPACE}_${NAME}_H

${comment}
${includes}
${declarations}
${namespace_start}
${definition}
${namespace_end}
#endif
"
      cpp_src "${comment}
${includes}
${namespace_start}
${members}
${namespace_end}"
      associated_classes
	class_ref 205206 // NonLinearList
	class_ref 204566 // ElementSet
      end
    end

    artifact 149782 "elementsignal"
      stereotype "source"
      cpp_h "#ifndef ${NAMESPACE}_${NAME}_H
#define ${NAMESPACE}_${NAME}_H

${comment}
${includes}
${declarations}
${namespace_start}
${definition}
${namespace_end}
#endif
"
      cpp_src "${comment}
${includes}
${namespace_start}
${members}
${namespace_end}"
      associated_classes
	class_ref 204694 // ElementSignal
      end
    end

    artifact 149910 "inductance"
      stereotype "source"
      cpp_h "#ifndef ${NAMESPACE}_${NAME}_H
#define ${NAMESPACE}_${NAME}_H

${comment}
${includes}
${declarations}
${namespace_start}
${definition}
${namespace_end}
#endif
"
      cpp_src "${comment}
${includes}
${namespace_start}
${members}
${namespace_end}"
      associated_classes
	class_ref 187158 // Inductance
      end
    end

    artifact 150038 "jfet"
      stereotype "source"
      cpp_h "#ifndef ${NAMESPACE}_${NAME}_H
#define ${NAMESPACE}_${NAME}_H

${comment}
${includes}
${declarations}
${namespace_start}
${definition}
${namespace_end}
#endif
"
      cpp_src "${comment}
${includes}
${namespace_start}
${members}
${namespace_end}"
      associated_classes
	class_ref 205718 // JFETState
	class_ref 205846 // JFETSettings
	class_ref 187030 // JFET
      end
    end

    artifact 150166 "logic"
      stereotype "source"
      cpp_h "#ifndef ${NAMESPACE}_${NAME}_H
#define ${NAMESPACE}_${NAME}_H

${comment}
${includes}
${declarations}
${namespace_start}
${definition}
${namespace_end}
#endif
"
      cpp_src "${comment}
${includes}
${namespace_start}
${members}
${namespace_end}"
      associated_classes
	class_ref 206230 // LogicConfig
	class_ref 192790 // CallbackClass
	class_ref 206358 // CallbackPtr
	class_ref 179990 // LogicIn
	class_ref 180630 // LogicOut
      end
    end

    artifact 150294 "matrix"
      stereotype "source"
      cpp_h "#ifndef ${NAMESPACE}_${NAME}_H
#define ${NAMESPACE}_${NAME}_H

${comment}
${includes}
${declarations}
${namespace_start}
${definition}
${namespace_end}
#endif
"
      cpp_src "${comment}
${includes}
${namespace_start}
${members}
${namespace_end}"
      associated_classes
	class_ref 205334 // Matrix
	class_ref 206614 // Matrix22
      end
    end

    artifact 150422 "mosfet"
      stereotype "source"
      cpp_h "#ifndef ${NAMESPACE}_${NAME}_H
#define ${NAMESPACE}_${NAME}_H

${comment}
${includes}
${declarations}
${namespace_start}
${definition}
${namespace_end}
#endif
"
      cpp_src "${comment}
${includes}
${namespace_start}
${members}
${namespace_end}"
      associated_classes
	class_ref 206742 // MOSFETState
	class_ref 206870 // MOSFETSettings
	class_ref 187286 // MOSFET
      end
    end

    artifact 150550 "nonlinear"
      stereotype "source"
      cpp_h "#ifndef ${NAMESPACE}_${NAME}_H
#define ${NAMESPACE}_${NAME}_H

${comment}
${includes}
${declarations}
${namespace_start}
${definition}
${namespace_end}
#endif
"
      cpp_src "${comment}
${includes}
${namespace_start}
${members}
${namespace_end}"
      associated_classes
	class_ref 203926 // NonLinear
      end
    end

    artifact 150678 "opamp"
      stereotype "source"
      cpp_h "#ifndef ${NAMESPACE}_${NAME}_H
#define ${NAMESPACE}_${NAME}_H

${comment}
${includes}
${declarations}
${namespace_start}
${definition}
${namespace_end}
#endif
"
      cpp_src "${comment}
${includes}
${namespace_start}
${members}
${namespace_end}"
      associated_classes
	class_ref 187414 // OpAmp
      end
    end

    artifact 150806 "reactive"
      stereotype "source"
      cpp_h "#ifndef ${NAMESPACE}_${NAME}_H
#define ${NAMESPACE}_${NAME}_H

${comment}
${includes}
${declarations}
${namespace_start}
${definition}
${namespace_end}
#endif
"
      cpp_src "${comment}
${includes}
${namespace_start}
${members}
${namespace_end}"
      associated_classes
	class_ref 204054 // Reactive
      end
    end

    artifact 150934 "resistance"
      stereotype "source"
      cpp_h "#ifndef ${NAMESPACE}_${NAME}_H
#define ${NAMESPACE}_${NAME}_H

${comment}
${includes}
${declarations}
${namespace_start}
${definition}
${namespace_end}
#endif
"
      cpp_src "${comment}
${includes}
${namespace_start}
${members}
${namespace_end}"
      associated_classes
	class_ref 187542 // Resistance
      end
    end

    artifact 151062 "vccs"
      stereotype "source"
      cpp_h "#ifndef ${NAMESPACE}_${NAME}_H
#define ${NAMESPACE}_${NAME}_H

${comment}
${includes}
${declarations}
${namespace_start}
${definition}
${namespace_end}
#endif
"
      cpp_src "${comment}
${includes}
${namespace_start}
${members}
${namespace_end}"
      associated_classes
	class_ref 187670 // VCCS
      end
    end

    artifact 151190 "vcvs"
      stereotype "source"
      cpp_h "#ifndef ${NAMESPACE}_${NAME}_H
#define ${NAMESPACE}_${NAME}_H

${comment}
${includes}
${declarations}
${namespace_start}
${definition}
${namespace_end}
#endif
"
      cpp_src "${comment}
${includes}
${namespace_start}
${members}
${namespace_end}"
      associated_classes
	class_ref 187798 // VCVS
      end
    end

    artifact 151318 "voltagepoint"
      stereotype "source"
      cpp_h "#ifndef ${NAMESPACE}_${NAME}_H
#define ${NAMESPACE}_${NAME}_H

${comment}
${includes}
${declarations}
${namespace_start}
${definition}
${namespace_end}
#endif
"
      cpp_src "${comment}
${includes}
${namespace_start}
${members}
${namespace_end}"
      associated_classes
	class_ref 187926 // VoltagePoint
      end
    end

    artifact 151446 "voltagesignal"
      stereotype "source"
      cpp_h "#ifndef ${NAMESPACE}_${NAME}_H
#define ${NAMESPACE}_${NAME}_H

${comment}
${includes}
${declarations}
${namespace_start}
${definition}
${namespace_end}
#endif
"
      cpp_src "${comment}
${includes}
${namespace_start}
${members}
${namespace_end}"
      associated_classes
	class_ref 188054 // VoltageSignal
      end
    end

    artifact 151574 "voltagesource"
      stereotype "source"
      cpp_h "#ifndef ${NAMESPACE}_${NAME}_H
#define ${NAMESPACE}_${NAME}_H

${comment}
${includes}
${declarations}
${namespace_start}
${definition}
${namespace_end}
#endif
"
      cpp_src "${comment}
${includes}
${namespace_start}
${members}
${namespace_end}"
      associated_classes
	class_ref 188182 // VoltageSource
      end
    end

    artifact 163478 "PinListMap"
      stereotype "source"
      cpp_h "#ifndef ${NAMESPACE}_${NAME}_H
#define ${NAMESPACE}_${NAME}_H

${comment}
${includes}
${declarations}
${namespace_start}
${definition}
${namespace_end}
#endif
"
      cpp_src "${comment}
${includes}
${namespace_start}
${members}
${namespace_end}"
      associated_classes
	class_ref 234134 // PinListMap
      end
    end
  end
end
