From 24f172f86601ae255dbfee265155ddc433338914 Mon Sep 17 00:00:00 2001 From: Oszkar Semerath Date: Mon, 11 May 2020 02:22:52 +0200 Subject: Satelite case study update for Models-Attribute paper --- .../domains/satellite/queries/SatelliteQueries.vql | 147 +++++++++++++++------ .../satellite/runner/SatelliteGeneratorMain.xtend | 3 +- 2 files changed, 108 insertions(+), 42 deletions(-) (limited to 'Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src/hu/bme/mit') diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/SatelliteQueries.vql b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/SatelliteQueries.vql index ba12bbda..57b5933a 100644 --- a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/SatelliteQueries.vql +++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src/hu/bme/mit/inf/dslreasoner/domains/satellite/queries/SatelliteQueries.vql @@ -51,13 +51,13 @@ private pattern spacecraftWithInterferometryPayload(Mission : ConstellationMissi // All spacecraft must have some communication path to the ground station -@Constraint(severity = "error", key = {Spacecraft}, - message = "Spacecraft has no communication path to the ground station.") -pattern noLinkToGroundStation(Spacecraft : Spacecraft) { - ConstellationMission.groundStationNetwork(Mission, GroundStation); - ConstellationMission.spacecraft(Mission, Spacecraft); - neg find indirectCommunicationLink(Spacecraft, GroundStation); -} +//@Constraint(severity = "error", key = {Spacecraft}, +// message = "Spacecraft has no communication path to the ground station.") +//pattern noLinkToGroundStation(Spacecraft : Spacecraft) { +// ConstellationMission.groundStationNetwork(Mission, GroundStation); +// ConstellationMission.spacecraft(Mission, Spacecraft); +// neg find indirectCommunicationLink(Spacecraft, GroundStation); +//} //@Constraint(severity = "error", key = {Spacecraft}, message = "UNSAT") //pattern unsat_linkToGroundStation(Spacecraft : Spacecraft) { @@ -66,41 +66,41 @@ pattern noLinkToGroundStation(Spacecraft : Spacecraft) { // find indirectCommunicationLink(Spacecraft, GroundStation); //} -@Constraint(severity = "error", key = {Mission}, message = "UNSAT") -pattern unsat_linkToGroundStation(Mission : InterferometryMission) { - InterferometryMission(Mission); - neg find noLinkToGroundStation(_); -} +//@Constraint(severity = "error", key = {Mission}, message = "UNSAT") +//pattern unsat_linkToGroundStation(Mission : InterferometryMission) { +// InterferometryMission(Mission); +// neg find noLinkToGroundStation(_); +//} -@Constraint(severity = "error", key = {Spacecraft}, - message = "Spacecraft has no potential communication path to the ground station.") -pattern noPotentialLinkToGroundStation(Spacecraft : Spacecraft) { - ConstellationMission.groundStationNetwork(Mission, GroundStation); - ConstellationMission.spacecraft(Mission, Spacecraft); - neg find indirectLinkAllowed(Spacecraft, GroundStation); -} +//@Constraint(severity = "error", key = {Spacecraft}, +// message = "Spacecraft has no potential communication path to the ground station.") +//pattern noPotentialLinkToGroundStation(Spacecraft : Spacecraft) { +// ConstellationMission.groundStationNetwork(Mission, GroundStation); +// ConstellationMission.spacecraft(Mission, Spacecraft); +// neg find indirectLinkAllowed(Spacecraft, GroundStation); +//} -private pattern indirectLinkAllowed(From : Spacecraft, To : CommunicatingElement) { - find linkAllowed+(From, To); -} +//private pattern indirectLinkAllowed(From : Spacecraft, To : CommunicatingElement) { +// find linkAllowed+(From, To); +//} -private pattern linkAllowed(From : Spacecraft, To : CommunicatingElement) { - find matchingAntenna(From, To); - neg find cubeSat3U(From); -} or { - find matchingAntenna(From, To); - CubeSat3U(From); -} or { - find matchingAntenna(From, To); - CubeSat3U(From); - GroundStationNetwork(To); -} +//private pattern linkAllowed(From : Spacecraft, To : CommunicatingElement) { +// find matchingAntenna(From, To); +// neg find cubeSat3U(From); +//} or { +// find matchingAntenna(From, To); +// CubeSat3U(From); +//} or { +// find matchingAntenna(From, To); +// CubeSat3U(From); +// GroundStationNetwork(To); +//} -private pattern matchingAntenna(From : Spacecraft, To : CommunicatingElement) { - CommunicatingElement.commSubsystem(From, FromSys); - CommunicatingElement.commSubsystem(To, ToSys); - find matchingCommSubsystem(FromSys, ToSys); -} +//private pattern matchingAntenna(From : Spacecraft, To : CommunicatingElement) { +// CommunicatingElement.commSubsystem(From, FromSys); +// CommunicatingElement.commSubsystem(To, ToSys); +// find matchingCommSubsystem(FromSys, ToSys); +//} private pattern matchingCommSubsystem(From : CommSubsystem, To : CommSubsystem) { UHFCommSubsystem(From); @@ -113,9 +113,9 @@ private pattern matchingCommSubsystem(From : CommSubsystem, To : CommSubsystem) KaCommSubsystem(To); } -private pattern cubeSat3U(Sat : CubeSat3U) { - CubeSat3U(Sat); -} +//private pattern cubeSat3U(Sat : CubeSat3U) { +// CubeSat3U(Sat); +//} // No communication loops may exist // No spacecraft may directly communicate with itself @@ -180,6 +180,71 @@ pattern smallSat(Sat : SmallSat) { SmallSat(Sat); } +@Constraint(severity = "error", key = {c1,c2}, message = "error") +pattern differentFrequency(c1 : CommSubsystem, c2 : CommSubsystem) { + CommSubsystem.target(c1,c2); + CommSubsystem.frequency(c1,f1); + CommSubsystem.frequency(c2,f2); + check(f1!=f2); +} + +@Constraint(severity = "error", key = {s,s}, message = "error") +pattern tooHighFrequencyForUHF(s : UHFCommSubsystem) { + UHFCommSubsystem(s); + CommSubsystem.frequency(s,f); + check(f>1000);//1GHz +} +@Constraint(severity = "error", key = {s,s}, message = "error") +pattern tooLowFrequencyForUHF(s : UHFCommSubsystem) { + UHFCommSubsystem(s); + CommSubsystem.frequency(s,f); + check(f<300);//300MHz +} +@Constraint(severity = "error", key = {s,s}, message = "error") +pattern tooHighFrequencyForKaComm(s : KaCommSubsystem) { + KaCommSubsystem(s); + CommSubsystem.frequency(s,f); + check(f>40000);//40GHz +} +@Constraint(severity = "error", key = {s,s}, message = "error") +pattern tooLowFrequencyForKaComm(s : KaCommSubsystem) { + KaCommSubsystem(s); + CommSubsystem.frequency(s,f); + check(f<26500);//26.5GHz +} +@Constraint(severity = "error", key = {s,s}, message = "error") +pattern tooHighFrequencyForXComm(s : XCommSubsystem) { + XCommSubsystem(s); + CommSubsystem.frequency(s,f); + check(f>12000);//12GHz +} +@Constraint(severity = "error", key = {s,s}, message = "error") +pattern tooLowFrequencyForXComm(s : XCommSubsystem) { + XCommSubsystem(s); + CommSubsystem.frequency(s,f); + check(f<8000);//8GHz +} +@Constraint(severity = "error", key = {s,s}, message = "error") +pattern tooHighPathLengthForSatelite(s:CommSubsystem) { + CommSubsystem.pathLength(s,l); + CommSubsystem.target(s,ts); + Spacecraft.commSubsystem(_,ts); + check(l>250);//250km +} +@Constraint(severity = "error", key = {s,s}, message = "error") +pattern tooLowPathLengthForSatelite(s:CommSubsystem) { + CommSubsystem.pathLength(s,l); + CommSubsystem.target(s,ts); + Spacecraft.commSubsystem(_,ts); + check(l<150);//150km +} +@Constraint(severity = "error", key = {s,s}, message = "error") +pattern tooLowPathLengthForGroundStation(s:CommSubsystem) { + CommSubsystem.pathLength(s,l); + CommSubsystem.target(s,ts); + GroundStationNetwork.commSubsystem(_,ts); + check(l!=385000);//385.000km +} //// //// Metrics //// diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src/hu/bme/mit/inf/dslreasoner/domains/satellite/runner/SatelliteGeneratorMain.xtend b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src/hu/bme/mit/inf/dslreasoner/domains/satellite/runner/SatelliteGeneratorMain.xtend index 5e4e4ef0..0ac66ce9 100644 --- a/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src/hu/bme/mit/inf/dslreasoner/domains/satellite/runner/SatelliteGeneratorMain.xtend +++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src/hu/bme/mit/inf/dslreasoner/domains/satellite/runner/SatelliteGeneratorMain.xtend @@ -12,6 +12,7 @@ final class SatelliteGeneratorMain { public static def void main(String[] args) { ViatraQueryEngineOptions.setSystemDefaultBackends(ReteBackendFactory.INSTANCE, ReteBackendFactory.INSTANCE, ReteBackendFactory.INSTANCE) - println(StandaloneScriptExecutor.executeScript("configs/generation.vsconfig")) + val res = StandaloneScriptExecutor.executeScript("configs/generation.vsconfig") + if(res!==null) println(res) } } -- cgit v1.2.3-54-g00ecf