# # stidata object # ## 2003dec13 LAMA Memo 803 writeup version # # include 'stidata.g' # sti := stidata() # sti.setdata( rms=1.0, alpha=0.6 ) # sti.getphase( freq=230, baseline=[10,40,160], el=60 ) # sti.done() stidata := subsequence () { private := [=]; private.stifreq := 11.198; # site testing interferometer Frequency private.stibaseline := 300; # baseline length [m] of STI private.stiel := 30; # elevation angle of STI private.rms300 := 1.0; # degrees of phase at stifreq private.alpha := 0.58; # structure function alpha self.done := function() { wider self, private; val self := F; val public := F; return T; } self.setdata := function( rms=1.0, alpha=0.58) { wider private; private.rms300 := rms; private.alpha := alpha; return T; } # works on vector baseline; self.getphase := function ( freq=230, baseline=[300], el=60 ) { coeff := private.rms300 * freq / private.stifreq / sqrt(1/sin(private.stiel/(180/pi))); phaseresid := sqrt(1/sin(el/(180/pi))) * coeff * ( baseline/private.stibaseline )^private.alpha; return phaseresid; } }