SYSTEM CONSIDERATIONS FOR SUBARRAYS IN ALMA S. T. Myers (NRAO) 3 March 2000 ----------------------------------------------------------- ABSTRACT: ----------------------------------------------------------- It is clear that the ability to transparently operate a moderate number of simultaneous subarrays will be a fundamental mode for ALMA observing. In particular, these subarrays are likely to be used for widely different things, such as engineering tests, VLBI observing, single-dish observing, and standard interferometric observing. These modes must seamlessly coexist, without interference with the (presumably) dynamic scheduled user observations. These requirements have a number of implications for the System Software as well as the hardware control (eg. LO and correlator subsystems). After reviewing the documents describing the current system, in particular: http://iram.fr/%7Elucas/almassr/report-1/report-1.html and Mel's memo on dynamic scheduling http://www.mma.nrao.edu/memos/html-memos/abstracts/abs282.html as well as Larry's memo on fringe rotation, phase switching and related issues http://www.mma.nrao.edu/memos/html-memos/abstracts/abs287.html I have a number of comments and ideas to float. SYSTEM SOFTWARE AND SUBARRAYS ----------------------------- Barry's strawperson scripting appendix to the SSR interim report brings up a number of issues that impact how subarrays are implemented. In particular, in a large array such as ALMA, or even the VLA, it does not make sense for the user to specify antennas by name, number or even location. This is especially true for dynamically scheduled observations where the observer has no idea at scheduling time of what particular antennas are located where. For example, Barry's example TRANSFER (, ) would only make sense to an interactive observer. Still, the user will likely need to have a mechanism to accomplish this in the absence of real-time array status information, eg. TRANSFER (, ) where the object gives the number of antennas and any restrictions (eg. location in array, receivers needed, etc.). A concrete example is given below. Furthermore, antennas may come into and go out of a particular subarray in a manner not controlled by the observer schedule, for example when an antenna or antennas are pulled out for VLBI (as is the current case for the VLA) or out for servicing and moving (also as per the current VLA). When an antenna enters a subarray, it must inherit the state of that subarray, with the LO, receiver, correlator and everything else updated to the necessary state, as well as be integrated into the event list for the observing. I have adopted the terminology "state" to refer to the instantaneous operational mode of the subarray and all its constituent parts, and the "event list" to be the schedule broken down into its atomic steps (eg. each timing interval of 50msec). Note that a change of state is an event itself, and thus a state can be reconstructed by executing the state-change events. See Memo 287 on LO phase control for an example of how this works for deterministic LO phase setting on source changes. Events can have different flavors, such as the above-mentioned state-changing events (like setting parameters or variables), or observing events (which cause data to be taken and sent to the correlator), or informational events (which output status etc.). AN OBJECT-ORIENTED SYSTEM? -------------------------- It might be useful to explore whether an Object-Oriented system design might be a better description for ALMA than the traditional Command - Macro - Script paradigm. At this point I feel ambivalent on this matter, but feel its worth thinking about. For example, one could envision a "subarray" object, to which are attached "antenna" objects and which connect to a "correlator" object. I would guess that the different subarray objects would execute asynchronously, though the underlying event transmission (eg. from the subarrays to the antennas and the correlator) would be synchronous with the array timing. In this model, the subarray is the fundamental observing object. Observations are carried out by invoking methods of the subarray. Barry's example $OBSERVE { &setup1 source = nrao530 / UNTIL (15:30:00) { source = sgra* / UNTIL (.+1:20) source = 1749-28 / UNTIL (.+40) } REPEAT (60) } becomes an observe method of the subarray obsobj := subarray(id=1,spec=) which starts when obsobj.open() is invoked, and completes when obsobj.done() is invoked. For example obsobj.open() obsobj.setrx(band=1mm,lo=loset1) obsobj.setcor(mode=cross,bb=2pol,lta=16) obsobj.setdata(integ='1000ms') obsobj.setsource(src=nrao530) obsobj.obswhile(start=now,stop='15:30:00lst') for ( iter in 1:60 ) { obsobj.setsource(src='sgra*'); obsobj.obswhile(start=now,duration='1:20lst') obsobj.setsource(src='1749-28'); obsobj.obswhile(start=now,duration='40lst') } obsobj.done() The looping and timing is done here either in a script-level "for" loop (or a "while" or even "if" control structures), or in the provided obswhile method. In addition to Barry's controls REPEAT() UNTIL(