KeplerianRefractor: simple image flow model: staging BDD

Gallery
Tutorial

A "staging" BDD for defining some flows and ports for a simple port-based image flow model for a KeplerianRefractor with an eyepiece:

Click on the image to view it full size

This time, instead of modelling the flow of light, the flow of a step-wise transformed OpticalImage is represented. The main aim of this trail is be able to model reflectors, however most reflectors use a secondary mirror in addition to a primary mirror, not just a simple single objective. Before extending OpticalTelescope to include such reflectors, a simpler light flow model of a KeplerianRefractor (which has a single primary lens as objective) is demonstrated.

Care has to be taken here not to build inflexible assumptions into the abstract OpticalTelescope. For example, a Gregorian reflector has the focal plane before a secondary, whereas the secondary of a Cassegrain reflector intercepts the image being focussed by the primary. The final viewed image of a Gregorian reflector is not inverted, whereas the final viewed image of a Keplerian refractor is. Therefore, to capture the transformation of an OpticalImage through an optical system, it must be specialised with appropriately redefined properties, and the optical elements of the system need ports with dedicated FlowProperty types.

The block KeplerianObjectiveImage is a specialisation of OpticalImage with isReal=true and isInverted=true. The block KeplerianViewedImage is a specialisation of OpticalImage with isVirtual=true, isInverted=true, and isMagnified=true, corresponding with these earlier snippets:

There are specialised blocks KeplerianObjective and KeplerianEyepiece with specialised Ports for handling the above image flows. The specialised KeplerianRefractor has redefined objective to be of type KeplerianObjective and eyepiece to be of type KeplerianEyepiece (and it has also redefined them as 'composite' part properties, not just reference properties, because it is assumed there are no intermediate assemblies).

The specialised KeplerianRefractor also has a redefined image of type KeplerianObjectiveImage, and a redefined viewedImage of type KeplerianViewedImage. These can each be used as the SysML 'itemProperty' on Connectors with ItemFlows.

The context block KeplerianRefractorContext is much as was used for the simple light flow model with a :DistantObject, and an :Eye, but has a :KeplerianRefractor, as well as properties objectImage of type OpticalImage and viewImage of type KeplerianViewedImage for use as the 'itemProperty' of SysML ItemFlows on Connectors.

Block OpticalTelescope has now also been given an additional property objectImage of type OpticalImage, which is inherited by KeplerianRefractor, and may likewise be used as the 'itemProperty' of a SysML ItemFlow on a Connector.

As per Webel Best Practice for BDDs:

Up next
Notes
Snippets (quotes/extracts)
Visit also
Visit also (backlinks)
Related slides (other tutorials)
Related slides (other tutorials, backlinks)