90 likes | 234 Views
A quick overview of Object-oriented, Distributed, Network-based software. objects. Anthony Lomax Anthony Lomax Scientific Software Mouans-Sartoux, France anthony@alomax.net www.alomax.net. program horrible(tr,gr,t,g,dist)
E N D
A quick overview of Object-oriented, Distributed, Network-based software objects Anthony Lomax Anthony Lomax Scientific Software Mouans-Sartoux, France anthony@alomax.netwww.alomax.net
program horrible(tr,gr,t,g,dist) common/mess/t,g,h,p,str,ctr,r1,r2 real*8 d,tr,gr,t,g,h,p,str,ctr,r1,r2,st,ct,cdg, &sdg,q,x,y,z,az12,az21,p0,horrible if(tr.eq.t.and.gr.eq.g) goto 100 h=.006722653d0 p=.006768153d0 str=dsin(tr) ctr=dcos(tr) if(ctr.eq.0.d0) ctr=.000001d0 if(str.eq.0.d0) str=.000001d0 r1=6378.388d0/dsqrt(1.d0-h*str*str) if(t.eq.0.d0) t=.000001d0 goto 999 100 st=dsin(t) ct=dcos(t) r2=6378.388d0/dsqrt(1.d0-h*st*st) cdg=dcos(g-gr) sdg=dsin(g-gr) q=st*ctr/((1.d0+p)*ct*str)+h*r1*ctr/(r2*ct) x=r2*ct*cdg y=r2*ct*sdg z=(1.d0-h)*(r2*st-r1*str) az12=datan2(sdg,(q-cdg)*str) q=str*ct/(ctr*st*(1.d0+p))+h*r2*ct/(r1*ctr) horrible=q*x-az12*y+z if(tr.eq.t.and.gr.eq.g) goto 100 h=.006722653d0 p=.006768153d0 str=dsin(tr) ctr=dcos(tr) if(ctr.eq.0.d0) ctr=.000001d0 if(str.eq.0.d0) str=.000001d0 r1=6378.388d0/dsqrt(1.d0-h*str*str) if(t.eq.0.d0) t=.000001d0 goto 999 100 st=dsin(t) ct=dcos(t) r2=6378.388d0/dsqrt(1.d0-h*st*st) cdg=dcos(g-gr) sdg=dsin(g-gr) q=st*ctr/((1.d0+p)*ct*str)+h*r1*ctr/(r2*ct) x=r2*ct*cdg y=r2*ct*sdg z=(1.d0-h)*(r2*st-r1*str) az12=datan2(sdg,(q-cdg)*str) q=str*ct/(ctr*st*(1.d0+p))+h*r2*ct/(r1*ctr) horrible=q*x-az12*y+z if(tr.eq.t.and.gr.eq.g) goto 100 h=.006722653d0 p=.006768153d0 str=dsin(tr) ctr=dcos(tr) if(ctr.eq.0.d0) ctr=.000001d0 if(str.eq.0.d0) str=.000001d0 r1=6378.388d0/dsqrt(1.d0-h*str*str) if(t.eq.0.d0) t=.000001d0 goto 999 100 st=dsin(t) ct=dcos(t) r2=6378.388d0/dsqrt(1.d0-h*st*st) cdg=dcos(g-gr) sdg=dsin(g-gr) q=st*ctr/((1.d0+p)*ct*str)+h*r1*ctr/(r2*ct) x=r2*ct*cdg y=r2*ct*sdg z=(1.d0-h)*(r2*st-r1*str) az12=datan2(sdg,(q-cdg)*str) q=str*ct/(ctr*st*(1.d0+p))+h*r2*ct/(r1*ctr) horrible=q*x-az12*y+z if(tr.eq.t.and.gr.eq.g) goto 100 h=.006722653d0 p=.006768153d0 str=dsin(tr) ctr=dcos(tr) if(ctr.eq.0.d0) ctr=.000001d0 if(str.eq.0.d0) str=.000001d0 r1=6378.388d0/dsqrt(1.d0-h*str*str) if(t.eq.0.d0) t=.000001d0 goto 999 100 st=dsin(t) ct=dcos(t) r2=6378.388d0/dsqrt(1.d0-h*st*st) cdg=dcos(g-gr) sdg=dsin(g-gr) q=st*ctr/((1.d0+p)*ct*str)+h*r1*ctr/(r2*ct) x=r2*ct*cdg y=r2*ct*sdg z=(1.d0-h)*(r2*st-r1*str) az12=datan2(sdg,(q-cdg)*str) q=str*ct/(ctr*st*(1.d0+p))+h*r2*ct/(r1*ctr) horrible=q*x-az12*y+z if(tr.eq.t.and.gr.eq.g) goto 100 h=.006722653d0 p=.006768153d0 str=dsin(tr) ctr=dcos(tr) if(ctr.eq.0.d0) ctr=.000001d0 if(str.eq.0.d0) str=.000001d0 r1=6378.388d0/dsqrt(1.d0-h*str*str) if(t.eq.0.d0) t=.000001d0 goto 999 100 st=dsin(t) ct=dcos(t) r2=6378.388d0/dsqrt(1.d0-h*st*st) cdg=dcos(g-gr) sdg=dsin(g-gr) q=st*ctr/((1.d0+p)*ct*str)+h*r1*ctr/(r2*ct) x=r2*ct*cdg y=r2*ct*sdg z=(1.d0-h)*(r2*st-r1*str) az12=datan2(sdg,(q-cdg)*str) q=str*ct/(ctr*st*(1.d0+p))+h*r2*ct/(r1*ctr) horrible=q*x-az12*y+z return end program horrible(tr,gr,t,g,dist) common/mess/t,g,h,p,str,ctr,r1,r2 real*8 d,tr,gr,t,g,h,p,str,ctr,r1,r2,st,ct,cdg, &sdg,q,x,y,z,az12,az21,p0,horrible if(tr.eq.t.and.gr.eq.g) goto 100 h=.006722653d0 p=.006768153d0 str=dsin(tr) ctr=dcos(tr) if(ctr.eq.0.d0) ctr=.000001d0 if(str.eq.0.d0) str=.000001d0 r1=6378.388d0/dsqrt(1.d0-h*str*str) if(t.eq.0.d0) t=.000001d0 goto 999 100 st=dsin(t) ct=dcos(t) r2=6378.388d0/dsqrt(1.d0-h*st*st) cdg=dcos(g-gr) sdg=dsin(g-gr) q=st*ctr/((1.d0+p)*ct*str)+h*r1*ctr/(r2*ct) x=r2*ct*cdg y=r2*ct*sdg z=(1.d0-h)*(r2*st-r1*str) az12=datan2(sdg,(q-cdg)*str) q=str*ct/(ctr*st*(1.d0+p))+h*r2*ct/(r1*ctr) horrible=q*x-az12*y+z if(tr.eq.t.and.gr.eq.g) goto 100 h=.006722653d0 p=.006768153d0 str=dsin(tr) ctr=dcos(tr) if(ctr.eq.0.d0) ctr=.000001d0 if(str.eq.0.d0) str=.000001d0 r1=6378.388d0/dsqrt(1.d0-h*str*str) if(t.eq.0.d0) t=.000001d0 goto 999 100 st=dsin(t) ct=dcos(t) r2=6378.388d0/dsqrt(1.d0-h*st*st) cdg=dcos(g-gr) sdg=dsin(g-gr) q=st*ctr/((1.d0+p)*ct*str)+h*r1*ctr/(r2*ct) x=r2*ct*cdg y=r2*ct*sdg z=(1.d0-h)*(r2*st-r1*str) az12=datan2(sdg,(q-cdg)*str) q=str*ct/(ctr*st*(1.d0+p))+h*r2*ct/(r1*ctr) horrible=q*x-az12*y+z if(tr.eq.t.and.gr.eq.g) goto 100 h=.006722653d0 p=.006768153d0 str=dsin(tr) ctr=dcos(tr) if(ctr.eq.0.d0) ctr=.000001d0 if(str.eq.0.d0) str=.000001d0 r1=6378.388d0/dsqrt(1.d0-h*str*str) if(t.eq.0.d0) t=.000001d0 goto 999 100 st=dsin(t) ct=dcos(t) r2=6378.388d0/dsqrt(1.d0-h*st*st) cdg=dcos(g-gr) sdg=dsin(g-gr) q=st*ctr/((1.d0+p)*ct*str)+h*r1*ctr/(r2*ct) x=r2*ct*cdg y=r2*ct*sdg z=(1.d0-h)*(r2*st-r1*str) az12=datan2(sdg,(q-cdg)*str) q=str*ct/(ctr*st*(1.d0+p))+h*r2*ct/(r1*ctr) horrible=q*x-az12*y+z if(tr.eq.t.and.gr.eq.g) goto 100 h=.006722653d0 p=.006768153d0 str=dsin(tr) ctr=dcos(tr) if(ctr.eq.0.d0) ctr=.000001d0 if(str.eq.0.d0) str=.000001d0 r1=6378.388d0/dsqrt(1.d0-h*str*str) if(t.eq.0.d0) t=.000001d0 goto 999 100 st=dsin(t) ct=dcos(t) r2=6378.388d0/dsqrt(1.d0-h*st*st) cdg=dcos(g-gr) sdg=dsin(g-gr) q=st*ctr/((1.d0+p)*ct*str)+h*r1*ctr/(r2*ct) x=r2*ct*cdg y=r2*ct*sdg z=(1.d0-h)*(r2*st-r1*str) az12=datan2(sdg,(q-cdg)*str) q=str*ct/(ctr*st*(1.d0+p))+h*r2*ct/(r1*ctr) horrible=q*x-az12*y+z if(tr.eq.t.and.gr.eq.g) goto 100 h=.006722653d0 p=.006768153d0 str=dsin(tr) ctr=dcos(tr) if(ctr.eq.0.d0) ctr=.000001d0 if(str.eq.0.d0) str=.000001d0 r1=6378.388d0/dsqrt(1.d0-h*str*str) if(t.eq.0.d0) t=.000001d0 goto 999 100 st=dsin(t) ct=dcos(t) r2=6378.388d0/dsqrt(1.d0-h*st*st) cdg=dcos(g-gr) sdg=dsin(g-gr) q=st*ctr/((1.d0+p)*ct*str)+h*r1*ctr/(r2*ct) x=r2*ct*cdg y=r2*ct*sdg z=(1.d0-h)*(r2*st-r1*str) az12=datan2(sdg,(q-cdg)*str) q=str*ct/(ctr*st*(1.d0+p))+h*r2*ct/(r1*ctr) horrible=q*x-az12*y+z return end program horrible(tr,gr,t,g,dist) common/mess/t,g,h,p,str,ctr,r1,r2 real*8 d,tr,gr,t,g,h,p,str,ctr,r1,r2,st,ct,cdg, &sdg,q,x,y,z,az12,az21,p0,horrible if(tr.eq.t.and.gr.eq.g) goto 100 h=.006722653d0 p=.006768153d0 str=dsin(tr) ctr=dcos(tr) if(ctr.eq.0.d0) ctr=.000001d0 if(str.eq.0.d0) str=.000001d0 r1=6378.388d0/dsqrt(1.d0-h*str*str) if(t.eq.0.d0) t=.000001d0 goto 999 100 st=dsin(t) ct=dcos(t) r2=6378.388d0/dsqrt(1.d0-h*st*st) cdg=dcos(g-gr) sdg=dsin(g-gr) q=st*ctr/((1.d0+p)*ct*str)+h*r1*ctr/(r2*ct) x=r2*ct*cdg y=r2*ct*sdg z=(1.d0-h)*(r2*st-r1*str) az12=datan2(sdg,(q-cdg)*str) q=str*ct/(ctr*st*(1.d0+p))+h*r2*ct/(r1*ctr) horrible=q*x-az12*y+z if(tr.eq.t.and.gr.eq.g) goto 100 h=.006722653d0 p=.006768153d0 str=dsin(tr) ctr=dcos(tr) if(ctr.eq.0.d0) ctr=.000001d0 if(str.eq.0.d0) str=.000001d0 r1=6378.388d0/dsqrt(1.d0-h*str*str) if(t.eq.0.d0) t=.000001d0 goto 999 100 st=dsin(t) ct=dcos(t) r2=6378.388d0/dsqrt(1.d0-h*st*st) cdg=dcos(g-gr) sdg=dsin(g-gr) q=st*ctr/((1.d0+p)*ct*str)+h*r1*ctr/(r2*ct) x=r2*ct*cdg y=r2*ct*sdg z=(1.d0-h)*(r2*st-r1*str) az12=datan2(sdg,(q-cdg)*str) q=str*ct/(ctr*st*(1.d0+p))+h*r2*ct/(r1*ctr) horrible=q*x-az12*y+z if(tr.eq.t.and.gr.eq.g) goto 100 h=.006722653d0 p=.006768153d0 str=dsin(tr) ctr=dcos(tr) if(ctr.eq.0.d0) ctr=.000001d0 if(str.eq.0.d0) str=.000001d0 r1=6378.388d0/dsqrt(1.d0-h*str*str) if(t.eq.0.d0) t=.000001d0 goto 999 100 st=dsin(t) ct=dcos(t) r2=6378.388d0/dsqrt(1.d0-h*st*st) cdg=dcos(g-gr) sdg=dsin(g-gr) q=st*ctr/((1.d0+p)*ct*str)+h*r1*ctr/(r2*ct) x=r2*ct*cdg y=r2*ct*sdg z=(1.d0-h)*(r2*st-r1*str) az12=datan2(sdg,(q-cdg)*str) q=str*ct/(ctr*st*(1.d0+p))+h*r2*ct/(r1*ctr) horrible=q*x-az12*y+z if(tr.eq.t.and.gr.eq.g) goto 100 h=.006722653d0 p=.006768153d0 str=dsin(tr) ctr=dcos(tr) if(ctr.eq.0.d0) ctr=.000001d0 if(str.eq.0.d0) str=.000001d0 r1=6378.388d0/dsqrt(1.d0-h*str*str) if(t.eq.0.d0) t=.000001d0 goto 999 100 st=dsin(t) ct=dcos(t) r2=6378.388d0/dsqrt(1.d0-h*st*st) cdg=dcos(g-gr) sdg=dsin(g-gr) q=st*ctr/((1.d0+p)*ct*str)+h*r1*ctr/(r2*ct) x=r2*ct*cdg y=r2*ct*sdg z=(1.d0-h)*(r2*st-r1*str) az12=datan2(sdg,(q-cdg)*str) q=str*ct/(ctr*st*(1.d0+p))+h*r2*ct/(r1*ctr) horrible=q*x-az12*y+z if(tr.eq.t.and.gr.eq.g) goto 100 h=.006722653d0 p=.006768153d0 str=dsin(tr) ctr=dcos(tr) if(ctr.eq.0.d0) ctr=.000001d0 if(str.eq.0.d0) str=.000001d0 r1=6378.388d0/dsqrt(1.d0-h*str*str) if(t.eq.0.d0) t=.000001d0 goto 999 100 st=dsin(t) ct=dcos(t) r2=6378.388d0/dsqrt(1.d0-h*st*st) cdg=dcos(g-gr) sdg=dsin(g-gr) q=st*ctr/((1.d0+p)*ct*str)+h*r1*ctr/(r2*ct) x=r2*ct*cdg y=r2*ct*sdg z=(1.d0-h)*(r2*st-r1*str) az12=datan2(sdg,(q-cdg)*str) q=str*ct/(ctr*st*(1.d0+p))+h*r2*ct/(r1*ctr) horrible=q*x-az12*y+z return end program horrible(tr,gr,t,g,dist) common/mess/t,g,h,p,str,ctr,r1,r2 real*8 d,tr,gr,t,g,h,p,str,ctr,r1 ,r2,st,ct,cdg, &sdg,q,x,y,z,az12,az21,p0,horrible if(tr.eq.t.and.gr.eq.g) goto 100 h=.006722653d0 p=.006768153d0 str=dsin(tr) ctr=dcos(tr) if(ctr.eq.0.d0) ctr=.000001d0 if(str.eq.0.d0) str=.000001d0 r1=6378.388d0/dsqrt(1.d0-h*str*str) if(t.eq.0.d0) t=.000001d0 goto 999 100 st=dsin(t) ct=dcos(t) r2=6378.388d0/dsqrt(1.d0-h*st*st) cdg=dcos(g-gr) sdg=dsin(g-gr) q=st*ctr/((1.d0+p)*ct*str)+h*r1*ctr/(r2*ct) x=r2*ct*cdg y=r2*ct*sdg z=(1.d0-h)*(r2*st-r1*str) az12=datan2(sdg,(q-cdg)*str) q=str*ct/(ctr*st*(1.d0+p))+h*r2*ct/(r1*ctr) horrible=q*x-az12*y+z if(tr.eq.t.and.gr.eq.g) goto 100 h=.006722653d0 p=.006768153d0 str=dsin(tr) ctr=dcos(tr) if(ctr.eq.0.d0) ctr=.000001d0 if(str.eq.0.d0) str=.000001d0 r1=6378.388d0/dsqrt(1.d0-h*str*str) if(t.eq.0.d0) t=.000001d0 goto 999 100 st=dsin(t) ct=dcos(t) r2=6378.388d0/dsqrt(1.d0-h*st*st) cdg=dcos(g-gr) sdg=dsin(g-gr) q=st*ctr/((1.d0+p)*ct*str)+h*r1*ctr/(r2*ct) x=r2*ct*cdg y=r2*ct*sdg z=(1.d0-h)*(r2*st-r1*str) az12=datan2(sdg,(q-cdg)*str) q=str*ct/(ctr*st*(1.d0+p))+h*r2*ct/(r1*ctr) horrible=q*x-az12*y+z if(tr.eq.t.and.gr.eq.g) goto 100 h=.006722653d0 p=.006768153d0 str=dsin(tr) ctr=dcos(tr) if(ctr.eq.0.d0) ctr=.000001d0 if(str.eq.0.d0) str=.000001d0 r1=6378.388d0/dsqrt(1.d0-h*str*str) if(t.eq.0.d0) t=.000001d0 goto 999 100 st=dsin(t) ct=dcos(t) r2=6378.388d0/dsqrt(1.d0-h*st*st) cdg=dcos(g-gr) sdg=dsin(g-gr) q=st*ctr/((1.d0+p)*ct*str)+h*r1*ctr/(r2*ct) x=r2*ct*cdg y=r2*ct*sdg z=(1.d0-h)*(r2*st-r1*str) az12=datan2(sdg,(q-cdg)*str) q=str*ct/(ctr*st*(1.d0+p))+h*r2*ct/(r1*ctr) horrible=q*x-az12*y+z if(tr.eq.t.and.gr.eq.g) goto 100 h=.006722653d0 p=.006768153d0 str=dsin(tr) ctr=dcos(tr) if(ctr.eq.0.d0) ctr=.000001d0 if(str.eq.0.d0) str=.000001d0 r1=6378.388d0/dsqrt(1.d0-h*str*str) if(t.eq.0.d0) t=.000001d0 goto 999 100 st=dsin(t) ct=dcos(t) r2=6378.388d0/dsqrt(1.d0-h*st*st) cdg=dcos(g-gr) sdg=dsin(g-gr) q=st*ctr/((1.d0+p)*ct*str)+h*r1*ctr/(r2*ct) x=r2*ct*cdg y=r2*ct*sdg z=(1.d0-h)*(r2*st-r1*str) az12=datan2(sdg,(q-cdg)*str) q=str*ct/(ctr*st*(1.d0+p))+h*r2*ct/(r1*ctr) horrible=q*x-az12*y+z if(tr.eq.t.and.gr.eq.g) goto 100 h=.006722653d0 p=.006768153d0 str=dsin(tr) ctr=dcos(tr) if(ctr.eq.0.d0) ctr=.000001d0 if(str.eq.0.d0) str=.000001d0 r1=6378.388d0/dsqrt(1.d0-h*str*str) if(t.eq.0.d0) t=.000001d0 goto 999 100 st=dsin(t) ct=dcos(t) r2=6378.388d0/dsqrt(1.d0-h*st*st) cdg=dcos(g-gr) sdg=dsin(g-gr) q=st*ctr/((1.d0+p)*ct*str)+h*r1*ctr/(r2*ct) x=r2*ct*cdg y=r2*ct*sdg z=(1.d0-h)*(r2*st-r1*str) az12=datan2(sdg,(q-cdg)*str) q=str*ct/(ctr*st*(1.d0+p))+h*r2*ct/(r1*ctr) horrible=q*x-az12*y+z return end program horrible(tr,gr,t,g,dist) common/mess/t,g,h,p,str,ctr,r1,r2 real*8 d,tr,gr,t,g,h,p,str,ctr,r1,r2,st,ct,cdg, &sdg,q,x,y,z,az12,az21,p0,horrible if(tr.eq.t.and.gr.eq.g) goto 100 h=.006722653d0 p=.006768153d0 str=dsin(tr) ctr=dcos(tr) if(ctr.eq.0.d0) ctr=.000001d0 if(str.eq.0.d0) str=.000001d0 r1=6378.388d0/dsqrt(1.d0-h*str*str) if(t.eq.0.d0) t=.000001d0 goto 999 100 st=dsin(t) ct=dcos(t) r2=6378.388d0/dsqrt(1.d0-h*st*st) cdg=dcos(g-gr) sdg=dsin(g-gr) q=st*ctr/((1.d0+p)*ct*str)+h*r1*ctr/(r2*ct) x=r2*ct*cdg y=r2*ct*sdg z=(1.d0-h)*(r2*st-r1*str) az12=datan2(sdg,(q-cdg)*str) q=str*ct/(ctr*st*(1.d0+p))+h*r2*ct/(r1*ctr) horrible=q*x-az12*y+z if(tr.eq.t.and.gr.eq.g) goto 100 h=.006722653d0 p=.006768153d0 str=dsin(tr) ctr=dcos(tr) if(ctr.eq.0.d0) ctr=.000001d0 if(str.eq.0.d0) str=.000001d0 r1=6378.388d0/dsqrt(1.d0-h*str*str) if(t.eq.0.d0) t=.000001d0 goto 999 100 st=dsin(t) ct=dcos(t) r2=6378.388d0/dsqrt(1.d0-h*st*st) cdg=dcos(g-gr) sdg=dsin(g-gr) q=st*ctr/((1.d0+p)*ct*str)+h*r1*ctr/(r2*ct) x=r2*ct*cdg y=r2*ct*sdg z=(1.d0-h)*(r2*st-r1*str) az12=datan2(sdg,(q-cdg)*str) q=str*ct/(ctr*st*(1.d0+p))+h*r2*ct/(r1*ctr) horrible=q*x-az12*y+z if(tr.eq.t.and.gr.eq.g) goto 100 h=.006722653d0 p=.006768153d0 str=dsin(tr) ctr=dcos(tr) if(ctr.eq.0.d0) ctr=.000001d0 if(str.eq.0.d0) str=.000001d0 r1=6378.388d0/dsqrt(1.d0-h*str*str) if(t.eq.0.d0) t=.000001d0 goto 999 100 st=dsin(t) ct=dcos(t) r2=6378.388d0/dsqrt(1.d0-h*st*st) cdg=dcos(g-gr) sdg=dsin(g-gr) q=st*ctr/((1.d0+p)*ct*str)+h*r1*ctr/(r2*ct) x=r2*ct*cdg y=r2*ct*sdg z=(1.d0-h)*(r2*st-r1*str) az12=datan2(sdg,(q-cdg)*str) q=str*ct/(ctr*st*(1.d0+p))+h*r2*ct/(r1*ctr) horrible=q*x-az12*y+z if(tr.eq.t.and.gr.eq.g) goto 100 h=.006722653d0 p=.006768153d0 str=dsin(tr) ctr=dcos(tr) if(ctr.eq.0.d0) ctr=.000001d0 if(str.eq.0.d0) str=.000001d0 r1=6378.388d0/dsqrt(1.d0-h*str*str) if(t.eq.0.d0) t=.000001d0 goto 999 100 st=dsin(t) ct=dcos(t) r2=6378.388d0/dsqrt(1.d0-h*st*st) cdg=dcos(g-gr) sdg=dsin(g-gr) q=st*ctr/((1.d0+p)*ct*str)+h*r1*ctr/(r2*ct) x=r2*ct*cdg y=r2*ct*sdg z=(1.d0-h)*(r2*st-r1*str) az12=datan2(sdg,(q-cdg)*str) q=str*ct/(ctr*st*(1.d0+p))+h*r2*ct/(r1*ctr) horrible=q*x-az12*y+z return end procedure user interface computer operating system logic / calculations classic program I/O data management
user interface logic / calculations data management objects computer B Object-oriented, Distributed, Network-based software computer operating system www intranet classic program I/O computer A
objects user interface logic / calculations data management
package net.alomax.seis; import net.alomax.math.*; /** A basic Seismogram object */ public class BasicSeismogram extends BasicItem implements Serializable { public TimeSeries timeSeries; // The seismogram data public BasicChannel channel; // The channel information public BasicHypocenter hypocenter; // The hypocenter public int iyear; // The year of the reference time public int ijday; // The day of year of reference time public int ihour, imin, isec; // The reference hour and min public double sec; // The reference sec public double timeMin; // The offset of the first sample /** Returns the amplitude at a given time. */ public final double ampAtTime(double time) { double sampleOffset = (time - timeMin) / (double) timeSeries.sampleInt; int nsample = (int) sampleOffset; if (nsample < 0 || nsample >= timeSeries.sampleLength() - 1) return INVALID_AMPLITUDE; double fract = sampleOffset - (double) nsample; double amp1, amp2; amp1 = (double) timeSeries.sampleAt(nsample); amp2 = (double) timeSeries.sampleAt(nsample + 1); return(amp1 + (amp2 - amp1) * fract); } /** Removes the mean of the time series samples. */ public void removeMean() { timeSeries.removeMean(); } } // end class BasicSeismogram logic / calculations
package net.alomax.seis; import net.alomax.math.*; /** A basic Seismogram object */ public class BasicSeismogram extends BasicItem implements Serializable { public TimeSeries timeSeries; // The seismogram data public BasicChannel channel; // The channel information public BasicHypocenter hypocenter; // The hypocenter public int iyear; // The year of the reference time public int ijday; // The day of year of reference time public int ihour, imin, isec; // The reference hour and min public double sec; // The reference sec public double timeMin; // The offset of the first sample /** Returns the amplitude at a given time. */ public final double ampAtTime(double time) { double sampleOffset = (time - timeMin) / (double) timeSeries.sampleInt; int nsample = (int) sampleOffset; if (nsample < 0 || nsample >= timeSeries.sampleLength() - 1) return INVALID_AMPLITUDE; double fract = sampleOffset - (double) nsample; double amp1, amp2; amp1 = (double) timeSeries.sampleAt(nsample); amp2 = (double) timeSeries.sampleAt(nsample + 1); return(amp1 + (amp2 - amp1) * fract); } /** Removes the mean of the time series samples. */ public void removeMean() { timeSeries.removeMean(); } } // end class BasicSeismogram “program” (software process) distributed and dynamic program data methods object restricted access messages
distributed & dynamic distributed data management distributed and dynamic program data methods Java-RMI Corba SOAP http: ftp: restricted access messages http: plug-in, applet download
Object-oriented, Distributed, Network-based seismology
A quick overview of Object-oriented, Distributed, Network-based software References General: Developer.com - http://developer.com Developer.com deesign - http://www.developer.com/design O'Reilly Network - http://www.oreillynet.com Scientific: D. Walker, Computer Science, Univ of Wales Cardiff, UK - http://www.cs.cf.ac.uk/user/David.W.Walker/talks.html The Globus Project: GRID computing - http://www.globus.org UK Research Councils e-science - http://www.rcuk.ac.uk/escience Seismological: Information Technology by T. Owens, Geological SciencesUniversity of South Carolina, USA -http://www.seismosoc.org/publications/SRL/SRL_73/srl_73-4_es.html SCEC Community Modeling Environment - http://www.scec.org/cme Anthony Lomax Scientific Software, Mouans-Sartoux, France anthony@alomax.netwww.alomax.net