CASSBEAM(1)
π°οΈ CASSBEAM(1) β User Commands π°οΈ
okay so this is the manual for cassbeam, aka the Cassegrain antenna ray tracer. It's giving very serious science bestie energy, but I got you. π
β¨ NAME β¨
cassbeamβ Cassbeam is a Cassegrain antenna ray tracer.
π SYNOPSIS π
cassbeam input_file [key=value ...]
π« DESCRIPTION π«
okay so cassbeam is a program for Cassegrain antenna modelling. It computes several properties of the antenna, including gain, zenith system temperature, and the beam, in full polarization. All calculations are done in the transmit sense and use reciprocity to relate to the equivalent receiving system. No cap.
Cassbeam is a non-interactive command line program that takes all of its input from the command line. And note that this does not preclude someone at a later date from making a graphical or web front end. So like, CLI-only for now, but the future is open. π
There is one required argument when running cassbeam β the input filename. Additional arguments can supplement the parameters of the input file. These arguments are passed in the same key=value as required in the input file, except whitespace is not allowed around the equal sign. If a parameter appears both in the input file and the command line, then the value on the command line supercedes the value on the input file. Periodt.
π INPUT FILE π
okay bestie so the main input file? it's literally just a bunch of lines that look like key=value. that's it. that's the whole vibe. one entry per line, no multitasking β and the equal sign is optional, so you can be a little chaotic if you want. π
the file also lets you leave comments! every comment starts with %, and the % plus everything after it on that line gets ignored by cassbeam. so go ahead, annotate your heart out. π
depending on the key, the value can be one of five types: string, integer, double, vector, or none.
- a
stringis a sequence of non-whitespace characters not surrounded by quotes of any kind β so no sneaky"or', bestie - a
doubleis a number that can have a fractional part - a
vectoris a comma-separated list of doubles - the
nonetype expects no value at all
below is the full list of allowed keys and what type of value each one wants. if the range of legal values is restricted, that legal range shows up inside brackets. β οΈ and heads up: legal values do not imply a physical system that will generate meaningful results! like, the code will accept it. the universe might not. π
for the vector type, if a certain number of values is needed, that count is in parentheses. and a required parameter gets marked with a *.
π¨ the thing you NEED to internalize: the secondary optical surface (aka the subreflector) is defined based on the input geometry. so changing where the feed sits changes the geometry of the subreflector! if you want to poke at telescope parameters without messing with the subreflector's shape, that's what the pathology parameters are for. also, the order of the parameters doesn't matter. β¨
π‘ Antenna geometry parameters π‘
feed_xβ the x value of the phase center of the feed. if you don't give a value,0is assumed. [double]feed_yβ the y value of the phase center of the feed. no value?0is assumed. [double]feed_zβ the z value of the phase center of the feed. no value? again,0is assumed. [double]geomβ this string points to a disk file holding the primary optical surface geometry. the file is a three-column ascii text file, each column holding space-separated values forr,z, anddz/drfor the antenna. there's no limit to how many lines it can have (other than your computer's memory, obviously π). it's assumed (but not checked!) that the values ofrstart at0and are equally spaced. the radius,R, of the primary is given by the value ofrin the last row. columns 1 and 2 are in meters, and column 3 is dimensionless. [string]hole_radiusβ the radius (in meters) of an unpanelled area at the center of the primary. if you omit it, no hole gets made. [double, > 0]legapexβ the z value where the legs (struts) intersect each other. note that the legs might terminate before reaching this point. default is1.2*sub_h. [double, > 0]legfootβ the r value where the legs (struts) intersect the primary surface. default is half the antenna radius. [double, > 0]legwidthβ the effective width of the legs, used to compute blockage. note that currently a positive value means four equally spaced legs with one leg along the x axis. if the value is negative, its absolute value is used in the blockage calculations, but the legs get rotated 45Β°. if this parameter isn't set, or if it's set to0, then no legs get generated at all. [double]nameβ an optional name for the antenna. and if the name is ``VLBA'', then the true strut geometry for the VLBA antennas is used instead of equispaced struts. π [string]roughnessβ the RSS surface roughness in meters. this number represents the combined surface error for the primary and secondary. if you don't provide a roughness, the default0is used. [double, >= 0]sub_hβ this value is the z value of the intersection of the subreflector with the z axis. [double, > 0]
π¦ Feed pattern parameters π¦
π note that you have to provide either bothfeedtaperandfeedangleorfeedpattern. pick a lane, bestie.
feedangleβ sets the reference angle for the feed taper. [double, > 0]feedpatternβ the name of the file containing the pattern of the feed. this file holds two space-separated columns of numbers: the angle in degrees and the taper in dB. the first angle must equal0, and the angles must be uniformly spaced. [string]feedpatternscaleβ the factor by which to scale the pattern defined infeedpattern. [double, > 0]feedtaperβ this parameter sets the taper (in dB) of the feed at an anglefeedanglefrom the feed axis to10^-feedtaper/10. [double, > 0]
π©Ή Pathology parameters π©Ή
so here's the tea: none of the following operations change the shape of the subreflector β its geometry is calculated before they get applied. π«Ά
also note that displacements of either the feed or the subreflector result in a rotation of the feed that corrects for the mispointing caused by the translations. rotations of the feed act in addition to this correction.
and for composited rotations (i.e., when rsub_x and rsub_y are both provided), the operations on the object being rotated proceed in reverse alphabetical order β z rotation before y rotation, and y rotation before x rotation β regardless of the order the parameters were received in. so no, you can't reorder your way out of it. π
dfeed_xβ displacement of the feed along the x axis. [double]dfeed_yβ displacement of the feed along the y axis. [double]dfeed_zβ displacement of the feed along the z axis. [double]dsub_xβ displacement of the subreflector along the x axis. [double]dsub_yβ displacement of the subreflector along the y axis. [double]dsub_zβ displacement of the subreflector along the z axis. [double]focusβ displacement of the feed along the feed axis. a positive value moves the feed closer to the subreflector. [double]rfeed_xβ rotation of the feed in degrees about the x axis. a positive value will rotate from the z axis through the y axis. [double]rfeed_yβ rotation of the feed in degrees about the y axis. a positive value will rotate from the x axis through the z axis. [double]rfeed_zβ rotation of the feed in degrees about the z axis. a positive value will rotate from the y axis through the x axis. [double]rsub_xβ rotation of the subreflector in degrees about the x axis. a positive value will rotate from the z axis through the y axis. [double]rsub_yβ rotation of the subreflector in degrees about the y axis. a positive value will rotate from the x axis through the z axis. [double]rsub_zβ rotation of the subreflector in degrees about the z axis. a positive value will rotate from the y axis through the x axis. [double]subrotpointβ defines the point about which the rotation of the subreflector is performed. the contents of the vector depend on how many elements you provide: either only the z value, or the x and y values, or the x, y, and z values. [vector (1 or 2 or 3)]
βοΈ Operating condition parameters βοΈ
computeβ a string tellingcassbeamwhat output to produce. it can beall,none, or a string containing flag characters. the default value isall, meaning produce all possible output.nonewill produce only messages on the screen and no output files. the characters of the general string mean the following:aβ save the aperture images;jβ save the Jones matrices in a table;pβ save the parameters;sβ save the polarized beams.
note that the string is case insensitive. [string]
diffeffβ a user-supplied diffraction efficiency. if you don't provide one, an internal algorithm that is not very good gets used. this needs to be upgraded! π [double]freqβ the frequency in GHz at which the calculation will be run. [double, > 0]gridsizeβ specifies a fixed grid size. if it's odd, the next even number gets used. this option overrides any setting ofoversampand is the preferred method of setting the grid size. setting it to a value less than32will result in a grid size of32. [integer, >= 32]leggroundscatterβ the fraction of power that scatters off the struts toward the ground. default value is0.2. [double, >= 0, <= 1]misceffβ a factor of the efficiency calculation that contains "everything else". you are responsible for choosing a realistic value for this one. a default of1(i.e., 100%) is assumed if this parameter isn't provided. [double, >= 0, <= 1]outβ the prefix for all output files. default iscassbeam. a dot will always separate the prefix from any trailing characters. [string]oversampβ one way of specifying the grid size. this option makes the grid on the primary fine enough to accommodate4*oversamp*R/lambdapoints. default is1. note that vastly "undersampling" is fine, since the field is never calculated anywhere between the feed and the aperture plane. normally blockage calculations and constancy of the illumination dictate the required sampling. seegridsizefor an alternate way of specifying the grid. this parameter is ignored ifgridsizeis set. [double, > 0]pixelsperbeamβ this is the approximate number of pixels that the core of the beam will occupy in the output images. [int, > 0]Tgroundβ the temperature in Kelvin of the ground. default value is290. [double, > 0]Trecβ the equivalent temperature of the receiver. this adds into the system temperature. default value is50. [double, > 0]Tskyβ the temperature in Kelvin of the sky. default value is3for frequencies over 1 GHz, and3 * 10^-2.5 nufor frequencies below 1 GHz. [double, > 0]
β¨ OUTPUT FILES β¨
okay bestie so depending on which compute options you picked at run time, you get up to 12 output files π. The letter in brackets in the section headings tells you which option turns that file on. And every single one of these output files starts with whatever value you gave to the input parameter out. Also FYI, right now all the output images are in PGM format, which is a super simple greyscale image format that basically every unix-based image viewer supports. iconic of it honestly. π
πΈ Aperture images [a]
Three images get generated so you can vibe-check the aperture field qualitatively. If you need actual quantitative numbers though, you'd have to go modify the source code to export the illumination parameters. so, yk. π«Ά
out.illumamp.pgmβ a raster image showing the amplitude of the illumination pattern of the primary. No blockage is done at this point. The scale is linear in flux. πout.illumphase.pgmβ a raster image showing the net phase (that's pathlength multiplied by wave vector) at each point on the primary. A phase gradient is removed. Any portions of the image that correspond to zero flux have an arbitrary phase, so like, don't read too much into those. πout.illumblock.pgmβ a raster image showing the blocked portion of the aperture. White means that part of the dish experiences either plane wave blockage from the sky or spherical wave blockage from the feed, and therefore does not contribute to the gain of the antenna. blocked bestie, no notes. π
π Jones matrix file [j]
The Jones matrix file, out.jones.dat, contains the Jones matrix (peep Hamaker et al. 1996 for the details, iykyk) corresponding to the effect of the antenna on the incoming radiation as a function of position on the sky. The file is organized as an eight column ascii. The first row corresponds to the point on the image with the smallest l and m. The rastering then proceeds first with increasing l, and then with increasing m. There are a total of n^2 rows, where n is the smallest odd number greater than or equal to the gridsize used. The matrices are rastered on a sine-projected coordinate system tangent to the sky at the beam center, which corresponds to row number (n^2+1)/2. At the beam center the pixel scale is given by the output parameter beampixelscale, which is stored in the output file out.params described below. π¦
π Parameter file [p]
The parameter file, out.params, is an output file in the same format as the input file, containing all of the input parameters that were specified (even if they were given on the command line) as well as many output values. Here they are, in order, no skips: π
Aeffβ The effective area of the antenna [m^2]. [double]Aeff_Tsysβ The effective area of the antenna divided by the system temperature [m^2/K]. [double]ampeffβ The amplitude efficiency. [double]beampixelscaleβ The scale of the generated beam images [deg/pixel]. [double]blockeffβ The blockage efficiency. [double]diffeffβ The diffraction efficiency. [double]fwhm_lβ The full width at half max of the beam in theldirection. [double]fwhm_mβ The full width at half max of the beam in themdirection. [double]gainβ The gain G of the antenna. [double]illumeffβ The illumination efficiency. [double]peaksidelobeβ The directivity of the greatest sidelobe relative to the peak directivity of the beam. [double]phaseeffβ The phase efficiency. [double]point_lβ Thelcomponent of the pointing offset from the z axis measured in the image plane. [double]point_mβ Themcomponent of the pointing offset from the z axis measured in the image plane. [double]prispilleffβ The primary spillover efficiency. [double]programβ The name of the program run, which iscassbeam. [string]misceffβ The miscellaneous efficiency. [double]spilleffβ The spillover efficiency. [double]subspilleffβ The subreflector spillover efficiency. [double]surfeffβ The surface efficiency. [double]totaleffβ The total efficiency calculated for the antenna. [double]Tsysβ The system temperature. [double]versionβ The software version number. [string]
π Polarized beam images [s]
With the s option, cassbeam will produce 7 images of the beam showing, in the four Stokes parameters, the response to an unpolarized source as a function of the position of the source on the sky. This info is derived from the Jones matrices which get saved in out.jones.dat. These images are meant for qualitative inspection β the Jones matrices are the ones holding the formal output, bestie. π
out.I.pgmβ Stokes I - total intensity;out.Q.pgmβ Stokes Q - excess linear polarizatione_1overe_2;out.U.pgmβ Stokes U - excess linear polarization ine'_1overe'_2out.V.pgmβ Stokes V - excess right circular polarzation over left circular polarization;out.QI.pgmβ The ratio of the Stokes Q image to the Stokes I image;out.UI.pgmβ The ratio of the Sytokes U image to the Stokes I image;out.VI.pgmβ The ratio of the Stokes V image to the Stokes I image;
π AUTHOR π
Cassbeam is written by Walter Brisken, National Radio Astronomy Observatory. This manpage is extracted from his cassbeam manual. shoutout to him fr fr π«Ά
π SEE ALSO π
See the complete manual in /usr/share/doc/cassbeam/ for more information. go read it, it's giving lore π
and that's a wrap, bestie!! β¨ this whole thing is version 1.0, dated 18 Aug 2003, which is honestly vintage in the most iconic way π¦π go beam some radio waves, you got this ππΈ
π¦ where this page comes from
- debian bookworm: cassbeam 1.1-3 Β· GPL-2.0-or-later
- debian trixie: cassbeam 1.1-4+b1 Β· GPL-2.0-or-later
- ubuntu jammy: cassbeam 1.1-3 Β· GPL-2.0-or-later
- ubuntu noble: cassbeam 1.1-4build2 Β· GPL-2.0-or-later
- ubuntu resolute: cassbeam 1.1-5 Β· GPL-2.0-or-later
- ubuntu stonking: cassbeam 1.1-5 Β· GPL-2.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms