network model =
	assets :
		#Digital
		tempSensor1; #CS/CDA
		tempSensor2; #CS/CDA
		seismicSensor1; #CS/CDA
		automaticScram; #CS/CDA
		operator; #CS/CDA
		controlRodController; #CS/CDA
		controlBlade1; #CS/CDA
		controlBlade2; #CS/CDA
		controlBlade5; #CS/CDA
		controlBlade4; #CS/CDA
		pulseControlRod; #CS/CDA
		buildingCompressedAir; # Affects control rod movment, which is a CS, thus CDA
		pressureTankSolenoidValve; # Affects control rod movment, which is a CS, thus CDA
		linearPowerSensor;#aka CIC #CS/CDA
		nlogPowerSensor; #CS/CDA
		pulsePowerSensor;#aka UIC #CS/CDA
		controlSystemRecorder; #Listed as CS in Fig 2., thus CDA if digital
		buildingEvacAlarm; #CS/CDA (S/EP)
		beamRoomScramChain; #CS/CDA if digital
		highFluxMonitor; #CS/CDA
		periodSensor; #CS/CDA
		logNHVFailureSensor; #CS/CDA
		linearHVFailureSensor; #CS/CDA
		pulseHVFailureSensor; #CS/CDA
		continuousAirMonitor; #CS/CDA (Safety)
		areaMonitoringSystem; #CS/CDA (Safety)
		diffuser; #CS/CDA (Safety)
		coolantLevelSensor; #Can casue operator to be instructed to SCRAM, thus CDA
		backupPower; #CS/CDA
		bridge; #CDA since it can affect radiation levels, which is safety-realted

		#water purification system
		waterMakeupPump; #CS, CDA if digital
		purificationRecirculationPump; #CS, CDA if digital
		flowmeter; #Not normally visible, doesn't communicate... not a CS...
		conductivityCell1; #CS/CDA
		conductivityCell2; #CS/CDA
		ionExchanger; #Not digital
		poolTotalizer; #Not digital, but would be a CDA if replaced with a digital component

		#heat exchange system
		coolantTempSensor; #CS/CDA
		heatExchangePump1; #CS/CDA
		heatExchangePump2; #CS/CDA
		conductivityCell3; #CS/CDA
		towerTotalizer; #Not digital, but problably a CS. If so, would be a CDA if digital
		coolingTowerFan; #Probably CS/CDA. Want to check on consequences of failure and update asset list

		#Ventilation System
		ventilationController; #CS/CDA
		ventilationIntakeFan; #CS/CDA
		ventilationOuttakeFan; #CS/CDA
		ventilationAirDetector; #CS/CDA
		ventilationDampers; #CS/CDA
		ventilationDiluteFan; #CS/CDA

		#Physical
		#combining values
		reactor; #CS
		coolant; #CS
		airborneRadiation; #CS
		buildingPower;
		seismicActivity;

		# For CDA Generation
		finishTag;

	facts :
		# Initial Critical Assets List
		quality:reactor,critical=true;

		# Statement of which assets are digital
		quality:tempSensor1,digital=true;
		quality:tempSensor2,digital=true;
		quality:seismicSensor1,digital=true;
		quality:automaticScram,digital=true;
		quality:operator,digital=true;
		quality:controlRodController,digital=true;
		quality:controlBlade1,digital=true;
		quality:controlBlade2,digital=true;
		quality:controlBlade5,digital=true;
		quality:controlBlade4,digital=true;
		quality:pulseControlRod,digital=true;
		quality:buildingCompressedAir,digital=true;
		quality:pressureTankSolenoidValve,digital=true;
		quality:linearPowerSensor,digital=true;
		quality:nlogPowerSensor,digital=true;
		quality:pulsePowerSensor,digital=true;
		quality:controlSystemRecorder,digital=true;
		quality:buildingEvacAlarm,digital=true;
		quality:beamRoomScramChain,digital=true;
		quality:highFluxMonitor,digital=true;
		quality:periodSensor,digital=true;
		quality:logNHVFailureSensor,digital=true;
		quality:linearHVFailureSensor,digital=true;
		quality:pulseHVFailureSensor,digital=true;
		quality:continuousAirMonitor,digital=true;
		quality:areaMonitoringSystem,digital=true;
		quality:diffuser,digital=true;
		quality:coolantLevelSensor,digital=true;
		quality:backupPower,digital=true;
		quality:bridge,digital=true;

		# Tag for when CDAs can no longer be generated
		quality:finishTag,completed=false;

		#TempSensor Facts
		quality:tempSensor1,status=ok;
		quality:tempSensor2,status=ok;
		quality:tempSensor1,temp:=50;
		quality:tempSensor2,temp:=50;
		quality:tempSensor1,calibration=normal;
		quality:tempSensor2,calibration=normal;
		quality:tempSensor1,powerStatus=on;
		quality:tempSensor2,powerStatus=on;

		topology:tempSensor1->automaticScram,connected_modbus_slave;
		quality:tempSensor1,spoofed=false;
		topology:tempSensor2->automaticScram,connected_modbus_slave;
		quality:tempSensor2,spoofed=false;
		topology:tempSensor1->controlSystemRecorder,connected_modbus_slave;
		topology:tempSensor2->controlSystemRecorder,connected_modbus_slave;
		topology:tempSensor1->operator,connected_modbus_slave;
		quality:tempSensor1,spoofed=false;
		topology:tempSensor2->operator,connected_modbus_slave;
		quality:tempSensor2,spoofed=false;
		topology:reactor<->tempSensor1,physical;
		topology:reactor<->tempSensor2,physical;
		topology:buildingPower->tempSensor1,power:=120;
		topology:buildingPower->tempSensor2,power:=120;

		quality:tempSensor1,platform=tempSensor;
		quality:tempSensor2,platform=tempSensor;

		#SeismicSensor Facts
		quality:seismicSensor1,status=ok;
		quality:seismicSensor1,powerStatus=on;
		quality:seismicSensor1,magnitude:=.003;

		topology:seismicSensor1->automaticScram,connected_modbus_slave;
		quality:seismicSensor1,spoofed=false;
		topology:seismicActivity<->seismicSensor1,physical;
		topology:buildingPower->seismicSensor1,power:=120;

		quality:seismicSensor1,platform=seismicSensor;

		#Automatic Scram Facts
		quality:automaticScram,status=ok;
		quality:automaticScram,powerStatus=on;
		quality:automaticScram,mode=manual;
		quality:automaticScram,activated=false;

		topology:automaticScram->controlRodController,connected_emag_power;
		topology:automaticScram->tempSensor1,connected_modbus_master;
		topology:automaticScram->tempSensor2,connected_modbus_master;
		topology:automaticScram->seismicSensor1,connected_modbus_master;
		topology:automaticScram->highFluxMonitor,connected_modbus_master;
		topology:automaticScram->buildingEvacAlarm,connected_modbus_master;
		topology:automaticScram->beamRoomScramChain,connected_modbus_master;
		topology:automaticScram->logNHVFailureSensor,connected_modbus_master;
		topology:automaticScram->linearHVFailureSensor,connected_modbus_master;
		topology:automaticScram->pulseHVFailureSensor,connected_modbus_master;
		topology:automaticScram->operator,connected_modbus_master;
		topology:buildingPower->automaticScram,power:=120;

		quality:automaticScram,platform=scramUnit;

		#Operator Facts
		quality:operator,status=ok;
		quality:operator,powerStatus=on;
		quality:operator,manualScram=false;
		quality:operator,operationMode=manual;
		quality:operator,consoleKey=inserted;

		topology:operator->automaticScram,connected_modbus_slave;
		quality:operator,spoofed=false;
		topology:operator->coolantLevelSensor,audible;
		topology:operator->coolantTempSensor,connected_modbus_master;
		topology:operator->controlRodController,connected_modbus_master;
		topology:operator->buildingEvacAlarm,connected_modbus_master;
		topology:operator->tempSensor1,connected_modbus_master;
		topology:operator->tempSensor2,connected_modbus_master;
		topology:operator->linearPowerSensor,connected_modbus_master;
		topology:operator->nlogPowerSensor,connected_modbus_master;
		topology:operator->pulsePowerSensor,connected_modbus_master;
		topology:operator->continuousAirMonitor,connected_modbus_master;
		topology:operator->bridge,connected_modbus_master;
		topology:operator->periodSensor,connected_modbus_master;
		topology:operator->areaMonitoringSystem,connected_modbus_master;
		topology:operator->ventilationAirDetector,connected_modbus_master;
		topology:operator->conductivityCell1,connected_modbus_master;
		topology:operator->conductivityCell2,connected_modbus_master;
		topology:operator->conductivityCell3,connected_modbus_master;
		topology:operator->heatExchangePump1,connected_modbus_master;
		topology:operator->heatExchangePump2,connected_modbus_master;
		topology:operator->diffuser,connected_modbus_master;
		topology:buildingPower->operator,power:=120;

		quality:operator,platform=operatorStation;

		#Control Rod Facts
		quality:controlRodController,status=ok;
		quality:controlRodController,powerStatus=on;
		quality:controlRodController,emagPower=on;

		topology:controlRodController->operator,connected_modbus_slave;
		quality:controlRodController,spoofed=false;
		topology:controlRodController->pressureTankSolenoidValve,connected_modbus_master;
		topology:controlRodController->nlogPowerSensor,connected_modbus_master;
		topology:buildingPower->controlRodController,power:=120;

		quality:controlRodController,platform=controlRodController;

		#Control rod position intended to represent percent of max height
			quality:controlBlade1,motorStatus=ok;
			quality:controlBlade2,motorStatus=ok;
			quality:controlBlade4,motorStatus=ok;
			quality:controlBlade5,motorStatus=ok;

			quality:controlBlade1,scrammable=true;
			quality:controlBlade2,scrammable=true;
			quality:controlBlade4,scrammable=true;
			quality:controlBlade5,scrammable=false;

			quality:controlBlade1,actualPosition:=.5;
			quality:controlBlade2,actualPosition:=.5;
			quality:controlBlade5,actualPosition:=1;
			quality:controlBlade4,actualPosition:=.5;

			quality:controlBlade1,reportedPosition:=.5;
			quality:controlBlade2,reportedPosition:=.5;
			quality:controlBlade5,reportedPosition:=1;
			quality:controlBlade4,reportedPosition:=.5;

			quality:pulseControlRod,actualPosition:=1;
			quality:pulseControlRod,cylinderPosition:=1;
			quality:pulseControlRod,reportedPosition:=1;
			quality:pulseControlRod,pulsed=false;
			quality:pulseControlRod,scrammable=true;

			quality:controlBlade1,register=0;
			quality:controlBlade2,register=4;
			quality:controlBlade5,register=16;
			quality:controlBlade4,register=12;
			quality:pulseControlRod,register=8;

			quality:controlBlade1,platform=controlBlade;
			quality:controlBlade2,platform=controlBlade;
			quality:controlBlade5,platform=controlBlade;
			quality:controlBlade4,platform=controlBlade;
			quality:pulseControlRod,platform=pulseControlRod;

			#Subcomponent Connections
			topology:controlBlade1->controlRodController,subcomponent;
			topology:controlBlade2->controlRodController,subcomponent;
			topology:controlBlade5->controlRodController,subcomponent;
			topology:controlBlade4->controlRodController,subcomponent;
			topology:pulseControlRod->controlRodController,subcomponent;
			#pressureTankSolenoidValve conncetion is unidirectional

		#Building Compressed Air
		quality:buildingCompressedAir,status=ok;
		quality:buildingCompressedAir,powerStatus=on;
		quality:buildingCompressedAir,compressor=on;
		quality:buildingCompressedAir,ctValve=open;#Compressor to Tank
		quality:buildingCompressedAir,tankPressure:=80;#psi

		topology:buildingCompressedAir->pressureTankSolenoidValve,pneumatic_closed;
		topology:buildingPower->buildingCompressedAir,power:=120;

		quality:buildingCompressedAir,platform=airCompressor;

		#Pressure Tank Solenoid Valve
		quality:pressureTankSolenoidValve,status=ok;
		quality:pressureTankSolenoidValve,powerStatus=on;
		quality:pressureTankSolenoidValve,tankPressure=80;#psi

		topology:pressureTankSolenoidValve->controlRodController,connected_modbus_slave;
		topology:pressureTankSolenoidValve->pulseControlRod,pneumatic_closed;
		#buildingCompressedAir conncetion is unidirectional

		#Power Sensors
		#Power units are in percent max
			#Linear
			quality:linearPowerSensor,status=ok;
			quality:linearPowerSensor,powerStatus=on;
			quality:linearPowerSensor,powerLevel:=0.1;

			topology:linearPowerSensor->highFluxMonitor,connected_modbus_slave;
			topology:linearPowerSensor->controlSystemRecorder,connected_modbus_slave;
			topology:linearPowerSensor->operator,connected_modbus_slave;
		quality:linearPowerSensor,spoofed=false;

			topology:reactor<->linearPowerSensor,physical;
			topology:buildingPower->linearPowerSensor,power:=120;

			quality:linearPowerSensor,platform=powerSensor;

			#nlog
			quality:nlogPowerSensor,status=ok;
			quality:nlogPowerSensor,powerStatus=on;
			quality:nlogPowerSensor,powerLevel:=0.1;

			topology:nlogPowerSensor->operator,connected_modbus_slave;
		quality:nlogPowerSensor,spoofed=false;
			topology:nlogPowerSensor->controlRodController,connected_modbus_slave;
			topology:reactor<->nlogPowerSensor,physical;
			topology:buildingPower->nlogPowerSensor,power:=120;

			quality:nlogPowerSensor,platform=powerSensor;

			#Pulse
			quality:pulsePowerSensor,status=ok;
			quality:pulsePowerSensor,powerStatus=on;
			quality:pulsePowerSensor,powerLevel:=0.1;

			topology:pulsePowerSensor->highFluxMonitor,connected_modbus_slave;
			topology:pulsePowerSensor->operator,connected_modbus_slave;
		quality:pulsePowerSensor,spoofed=false;
			topology:reactor<->pulsePowerSensor,physical;
			topology:buildingPower->pulsePowerSensor,power:=120;

			quality:pulsePowerSensor,platform=powerSensor;

		#Control System Recorder
		quality:controlSystemRecorder,status=ok;
		quality:controlSystemRecorder,powerStatus=on;
		quality:controlSystemRecorder,dataValid=true;

		topology:controlSystemRecorder->tempSensor1,connected_modbus_master;
		topology:controlSystemRecorder->tempSensor2,connected_modbus_master;
		topology:controlSystemRecorder->linearPowerSensor,connected_modbus_master;
		topology:buildingPower->controlSystemRecorder,power:=120;

		quality:controlSystemRecorder,platform=controlSystemRecorder;

		#Building Evacuation Alarm
		quality:buildingEvacAlarm,status=ok;
		quality:buildingEvacAlarm,powerStatus=on;
		quality:buildingEvacAlarm,activated=false;

		topology:buildingEvacAlarm->areaMonitoringSystem,connected_modbus_master;
		topology:buildingEvacAlarm->coolingTowerFan,connected_modbus_slave;
		topology:buildingEvacAlarm->operator,connected_modbus_slave;
		quality:buildingEvacAlarm,spoofed=false;
		topology:buildingEvacAlarm->automaticScram,connected_modbus_slave;
		quality:buildingEvacAlarm,spoofed=false;
		topology:buildingPower->buildingEvacAlarm,power:=120;

		quality:buildingEvacAlarm,platform=evacuationAlarm;

		#Beam Room Scram Chain
		quality:beamRoomScramChain,status=ok;
		quality:beamRoomScramChain,powerStatus=on;
		quality:beamRoomScramChain,activated=false;
		quality:beamRoomScramChain,accessGate=closed;
		quality:beamRoomScramChain,keysInserted=true;

		topology:beamRoomScramChain->automaticScram,connected_modbus_slave;
		quality:beamRoomScramChain,spoofed=false;
		topology:buildingPower->beamRoomScramChain,power:=120;

		quality:beamRoomScramChain,platform=scramInput;#Need to check

		#High Flux Monitor
		quality:highFluxMonitor,status=ok;
		quality:highFluxMonitor,powerStatus=on;
		quality:highFluxMonitor,alarmActivated=false;
		quality:highFluxMonitor,scramActivated=false;

		topology:highFluxMonitor->linearPowerSensor,connected_modbus_master;
		topology:highFluxMonitor->pulsePowerSensor,connected_modbus_master;
		topology:highFluxMonitor->automaticScram,connected_modbus_slave;
		quality:highFluxMonitor,spoofed=false;
		topology:buildingPower->highFluxMonitor,power:=120;

		quality:highFluxMonitor,platform=fluxMonitor;

		#Period Sensor
		quality:periodSensor,status=ok;
		quality:periodSensor,powerStatus=on;
		quality:periodSensor,output=5;#Period in seconds

		topology:periodSensor->operator,connected_modbus_slave;
		quality:periodSensor,spoofed=false;
		topology:buildingPower->periodSensor,power:=120;

		quality:periodSensor,platform=periodSensor;

		#HV Failure Sensors
		quality:logNHVFailureSensor,status=ok;
		quality:logNHVFailureSensor,powerStatus=on;
		quality:logNHVFailureSensor,activated=false;
		quality:linearHVFailureSensor,status=ok;
		quality:linearHVFailureSensor,powerStatus=on;
		quality:linearHVFailureSensor,activated=false;
		quality:pulseHVFailureSensor,status=ok;
		quality:pulseHVFailureSensor,powerStatus=on;
		quality:pulseHVFailureSensor,activated=false;

		topology:logNHVFailureSensor->automaticScram,connected_modbus_slave;
		quality:logNHVFailureSensor,spoofed=false;
		topology:linearHVFailureSensor->automaticScram,connected_modbus_slave;
		quality:linearHVFailureSensor,spoofed=false;
		topology:pulseHVFailureSensor->automaticScram,connected_modbus_slave;
		quality:pulseHVFailureSensor,spoofed=false;
		topology:logNHVFailureSensor->nlogPowerSensor,power_monitor;
		topology:linearHVFailureSensor->linearPowerSensor,power_monitor;
		topology:pulseHVFailureSensor->pulsePowerSensor,power_monitor;
		topology:buildingPower->logNHVFailureSensor,power:=120;
		topology:buildingPower->linearHVFailureSensor,power:=120;
		topology:buildingPower->pulseHVFailureSensor,power:=120;

		quality:logNHVFailureSensor,platform=HVSensor;
		quality:linearHVFailureSensor,platform=HVSensor;
		quality:pulseHVFailureSensor,platform=HVSensor;

		#Continous Air Monitor
		quality:continuousAirMonitor,status=ok;
		quality:continuousAirMonitor,powerStatus=on;
		quality:continuousAirMonitor,airborneRadiation:=50;#cpm
		quality:continuousAirMonitor,alarmActivated=false;

		topology:continuousAirMonitor->operator,connected_modbus_slave;
		quality:continuousAirMonitor,spoofed=false;
		topology:continuousAirMonitor->ventilationController,connected_modbus_slave;
		topology:airborneRadiation<->continuousAirMonitor,physical;
		topology:buildingPower->continuousAirMonitor,power:=120;

		quality:continuousAirMonitor,platform=CAM;

		#Area Monitoring System
		quality:areaMonitoringSystem,status=ok;
		quality:areaMonitoringSystem,powerStatus=on;
		quality:areaMonitoringSystem,cave_N16_level:=0;#mrem/hr
		quality:areaMonitoringSystem,nBeamRoom_N16_level:=0;
		quality:areaMonitoringSystem,sBeamRoom_N16_level:=0;
		quality:areaMonitoringSystem,sample_N16_level:=0;
		quality:areaMonitoringSystem,bridge_N16_level:=0;
		quality:areaMonitoringSystem,room101_N16_level:=0;

		topology:areaMonitoringSystem->buildingEvacAlarm,connected_modbus_slave;
		topology:areaMonitoringSystem->coolingTowerFan,connected_modbus_slave;
		topology:areaMonitoringSystem->operator,connected_modbus_slave;
		quality:areaMonitoringSystem,spoofed=false;
		topology:airborneRadiation<->areaMonitoringSystem,physical;
		topology:buildingPower->areaMonitoringSystem,power:=120;

		quality:areaMonitoringSystem,platform=N16Detector;

		#Diffuser
		quality:diffuser,status=ok;
		quality:diffuser,powerStatus=on;
		quality:diffuser,pressure=30;#psi

		topology:diffuser->operator,connected_modbus_slave;
		quality:diffuser,spoofed=false;
		topology:buildingPower->diffuser,power:=120;

		quality:diffuser,platform=diffuser;

		#Coolant Level Sensor
		quality:coolantLevelSensor,status=ok;
		quality:coolantLevelSensor,powerStatus=on;
		quality:coolantLevelSensor,level:=0.0;#defining 0 as neutral

		topology:coolantLevelSensor->operator,connected_modbus_slave;
		quality:coolantLevelSensor,spoofed=false;
		topology:coolant<->coolantLevelSensor,physical;
		topology:buildingPower->coolantLevelSensor,power:=120;

		quality:coolantLevelSensor,platform=coolantLevelSensor;

		#Backup power and connections
		quality:backupPower,status=ok;
		quality:backupPower,powerStatus=on;
		quality:backupPower,chargeLevel:=1;#percent, 1 down to 0

		#Only provides power when main power is off
		topology:backupPower->buildingEvacAlarm,power:=0.0;
		topology:backupPower->continuousAirMonitor,power:=0.0;
		topology:backupPower->areaMonitoringSystem,power:=0.0;
		topology:backupPower->coolantLevelSensor,power:=0.0;
		topology:backupPower->seismicSensor1,power:=0.0;
		topology:backupPower->nlogPowerSensor,power:=0.0;
		topology:backupPower->linearPowerSensor,power:=0.0;
		topology:backupPower->pulsePowerSensor,power:=0.0;
		topology:buildingPower->backupPower,power:=120;#needs to charge

		quality:backupPower,platform=backupPower;

		#Bridge
		quality:bridge,status=ok;
		quality:bridge,powerStatus=on;
		quality:bridge,actualPosition:=7.0;
		quality:bridge,reportedPosition:=7.0;

		topology:bridge->operator,connected_modbus_slave;
		quality:bridge,spoofed=false;
		topology:buildingPower->backupPower,power:=120;#needs power to move

		quality:bridge,platform=bridge;


		#Water Puritfication Systems

		#Water Makeup Pump
		quality:waterMakeupPump,status=ok;
		quality:waterMakeupPump,powerStatus=on;
		quality:waterMakeupPump,pumpStatus=off;

		topology:coolant<->waterMakeupPump,physical;
		topology:buildingPower->waterMakeupPump,power:=120;
		#poolTotalizer connection is unidirectional

		quality:waterMakeupPump,platform=pump;

		#Purification Recirculation Pump
		quality:purificationRecirculationPump,status=ok;
		quality:purificationRecirculationPump,powerStatus=on;
		quality:purificationRecirculationPump,pumpStatus=on;

		topology:coolant<->purificationRecirculationPump,physical;
		topology:buildingPower->purificationRecirculationPump,power:=120;

		quality:purificationRecirculationPump,platform=pump;

		#Flowmeter
		quality:flowmeter,status=ok;
		quality:flowmeter,powerStatus=on;
		quality:flowmeter,flowRate:=10;#gpm

		topology:coolant<->flowmeter,physical;
		topology:buildingPower->flowmeter,power:=120;

		quality:flowmeter,platform=flowmeter;

		#Conductivity Cells 1 and 2
		quality:conductivityCell1,status=ok;
		quality:conductivityCell1,powerStatus=on;
		quality:conductivityCell1,conductivity:=0.4;#in micromhos/cm
		quality:conductivityCell2,status=ok;
		quality:conductivityCell2,powerStatus=on;
		quality:conductivityCell2,resistance:=0.1;#in MOhms

		topology:conductivityCell1->operator,connected_modbus_slave;
		quality:conductivityCell1,spoofed=false;
		topology:conductivityCell2->operator,connected_modbus_slave;
		quality:conductivityCell2,spoofed=false;
		topology:coolant<->conductivityCell1,physical;
		topology:coolant<->conductivityCell2,physical;
		topology:buildingPower->conductivityCell1,power:=120;
		topology:buildingPower->conductivityCell2,power:=120;

		quality:conductivityCell1,platform=conductivitySensor;
		quality:conductivityCell2,platform=conductivitySensor;

		#Ion Exchanger (no power)
		quality:ionExchanger,status=ok;

		topology:coolant<->ionExchanger,physical;

		quality:ionExchanger,platform=ionExchanger;

		#Pool Totalizer (no power)
		quality:poolTotalizer,status=ok;

		topology:poolTotalizer<->waterMakeupPump,physical_switch;
		topology:coolant<->poolTotalizer,physical;

		quality:poolTotalizer,platform=totalizer;



		#Heat Exchange System

		#Coolant Temperature Sensor
		quality:coolantTempSensor,status=ok;
		quality:coolantTempSensor,powerStatus=on;
		quality:coolantTempSensor,temp:=35;

		topology:coolantTempSensor->operator,connected_modbus_slave;
		quality:coolantTempSensor,spoofed=false;
		topology:coolant<->coolantTempSensor,physical;
		topology:buildingPower->coolantTempSensor,power:=120;

		quality:coolantTempSensor,platform=coolantTempSensor;

		#Heat Exchange Pumps
		quality:heatExchangePump1,status=ok;
		quality:heatExchangePump1,powerStatus=on;
		quality:heatExchangePump1,pressureIn:=1.2;#psi
		quality:heatExchangePump1,pressureOut:=1;

		quality:heatExchangePump2,status=ok;
		quality:heatExchangePump2,powerStatus=on;
		quality:heatExchangePump2,pressureIn:=21.1;#psi
		quality:heatExchangePump2,pressureOut:=3.7;

		topology:heatExchangePump1->operator,connected_modbus_slave;
		quality:heatExchangePump1,spoofed=false;
		topology:heatExchangePump2->operator,connected_modbus_slave;
		quality:heatExchangePump2,spoofed=false;
		topology:coolant<->heatExchangePump1,physical;
		topology:coolant<->heatExchangePump2,physical;
		topology:buildingPower->heatExchangePump1,power:=120;
		topology:buildingPower->heatExchangePump2,power:=120;

		quality:heatExchangePump1,platform=pump;
		quality:heatExchangePump2,platform=pump;

		#Conductivity Cell 3
		quality:conductivityCell3,status=ok;
		quality:conductivityCell3,powerStatus=on;
		quality:conductivityCell3,conductivity:=.75;#in micromhos/cm

		topology:conductivityCell3->operator,connected_modbus_slave;
		quality:conductivityCell3,spoofed=false;
		topology:coolant<->conductivityCell3,physical;
		topology:buildingPower->conductivityCell3,power:=120;

		quality:conductivityCell3,platform=conductivitySensor;

		#Tower Totalizer (no power)
		quality:towerTotalizer,status=ok;

		topology:coolant<->towerTotalizer,physical;

		quality:towerTotalizer,platform=totalizer;

		#Cooling Tower Fan
		quality:coolingTowerFan,status=ok;
		quality:coolingTowerFan,powerStatus=on;
		quality:coolingTowerFan,fan=on;
		quality:coolingTowerFan,secondaryCoolantTemp:=25;

		topology:coolingTowerFan->buildingEvacAlarm,connected_modbus_master;
		topology:coolingTowerFan->areaMonitoringSystem,connected_modbus_master;
		topology:buildingPower->coolingTowerFan,power:=120;

		quality:coolingTowerFan,platform=fan;

		#Ventilation System

		#Ventilaton Controller
		quality:ventilationController,status=ok;
		quality:ventilationController,powerStatus=on;
		quality:ventilationController,mode=normal;

		topology:ventilationController->ventilationIntakeFan,connected_modbus_master;
		topology:ventilationController->ventilationOuttakeFan,connected_modbus_master;
		topology:ventilationController->ventilationDiluteFan,connected_modbus_master;
		topology:ventilationController->continuousAirMonitor,connected_modbus_master;
		topology:ventilationController->ventilationDampers,connected_modbus_master;
		topology:ventilationController->operator,connected_modbus_slave;
		quality:ventilationController,spoofed=false;
		topology:buildingPower->ventilationController,power:=120;

		quality:ventilationController,platform=ventilationController;

		#Intake Fan
		quality:ventilationIntakeFan,status=ok;
		quality:ventilationIntakeFan,powerStatus=on;
		quality:ventilationIntakeFan,fan=on;

		topology:ventilationIntakeFan->ventilationController,connected_modbus_slave;
		topology:buildingPower->ventilationIntakeFan,power:=120;

		quality:ventilationIntakeFan,platform=fan;

		#Outtake Fan
		quality:ventilationOuttakeFan,status=ok;
		quality:ventilationOuttakeFan,powerStatus=on;
		quality:ventilationOuttakeFan,fan=on;

		topology:ventilationOuttakeFan->ventilationController,connected_modbus_slave;
		topology:buildingPower->ventilationOuttakeFan,power:=120;

		quality:ventilationOuttakeFan,platform=fan;

		#Ventilation Air Detector
		quality:ventilationAirDetector,status=ok;
		quality:ventilationAirDetector,powerStatus=on;
		quality:ventilationAirDetector,Ar41_level:=9.9;#cpm
		quality:ventilationAirDetector,alarmActivated=false;

		topology:ventilationAirDetector->operator,connected_modbus_slave;
		quality:ventilationAirDetector,spoofed=false;
		topology:buildingPower->ventilationAirDetector,power:=120;
		topology:airborneRadiation<->ventilationAirDetector,physical;

		quality:ventilationAirDetector,platform=Ar41Detector;

		#Ventilation Dampers
		quality:ventilationDampers,status=ok;
		quality:ventilationDampers,powerStatus=on;
		quality:ventilationDampers,dampers=open;

		topology:ventilationDampers->ventilationController,connected_modbus_slave;
		topology:buildingPower->ventilationDampers,power:=120;

		quality:ventilationDampers,platform=dampers;


		#Ventilation Dilute Fan
		quality:ventilationDiluteFan,status=ok;
		quality:ventilationDiluteFan,powerStatus=on;
		quality:ventilationDiluteFan,fan=off;

		topology:ventilationDiluteFan->ventilationController,connected_modbus_slave;
		topology:buildingPower->ventilationDiluteFan,power:=120;

		quality:ventilationDiluteFan,platform=fan;


		#Physical qualites
		#This is probably bad practice, reusing these names
		quality:reactor,fuelTemp:=50;
		quality:reactor,reactorPower:=0.1;
		quality:coolant,coolantLevel:=0.0;
		quality:coolant,coolantTemp:=35;
		quality:airborneRadiation,cave_N16_level:=0;#mrem/hr appears to be the appropriate measurement.
		quality:airborneRadiation,nBeamRoom_N16_level:=0;
		quality:airborneRadiation,sBeamRoom_N16_level:=0;
		quality:airborneRadiation,sample_N16_level:=0;
		quality:airborneRadiation,bridge_N16_level:=0;
		quality:airborneRadiation,room101_N16_level:=0;
		quality:airborneRadiation,Ar41_level:=0;
		quality:airborneRadiation,airborneRadiationLevel:=50;#cpm
		quality:buildingPower,buildingPower=on;
		quality:seismicActivity,seismicActivity:=0.003;

		#Physical items are of the "physical" platform for now.
		quality:reactor,platform=physical;
		quality:coolant,platform=physical;
		quality:airborneRadiation,platform=physical;
		quality:buildingPower,platform=physical;
		quality:seismicActivity,platform=physical;
	tags:
.
