objects

9
objects A quick overview of Object-oriented, Distributed, Network- based software Anthony Lomax Anthony Lomax Scientific Software Mouans-Sartoux, France [email protected] www.alomax.net

Upload: axel-brock

Post on 30-Dec-2015

29 views

Category:

Documents


1 download

DESCRIPTION

A quick overview of Object-oriented, Distributed, Network-based software. objects. Anthony Lomax Anthony Lomax Scientific Software Mouans-Sartoux, France [email protected] www.alomax.net. program horrible(tr,gr,t,g,dist) - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: objects

objectsobjects

A quick overview ofObject-oriented,

Distributed, Network-based

software

A quick overview ofObject-oriented,

Distributed, Network-based

software

Anthony Lomax Anthony Lomax Scientific Software Mouans-Sartoux, France

[email protected] www.alomax.net

Anthony Lomax Anthony Lomax Scientific Software Mouans-Sartoux, France

[email protected] www.alomax.net

Page 2: objects

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 999100 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 999100 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 999100 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 999100 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 999100 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 999100 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 999100 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 999100 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 999100 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 999100 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

computercomputer

operating systemoperating system

classic program

classic program I/O

user interface

data management

logic / calculations

procedure

procedure

Page 3: objects

computercomputer

operating systemoperating system

classic program

classic program I/O

user interface

logic / calculations

data management

objectsobjects

wwwintranet

Object-oriented,Distributed, Network-based

software

Object-oriented,Distributed, Network-based

software

computer Acomputer A

computer Bcomputer B

Page 4: objects

logic / calculations

user interface

data management

objects

Page 5: objects

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

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

Page 6: objects

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

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

data

methods

messagesmessages restrictedaccess

restrictedaccess

distributed and dynamic programdistributed and dynamic program“program” (software process)“program” (software process)

objectobject

Page 7: objects

data

methods

messagesmessages restrictedaccess

restrictedaccess

distributed and dynamic programdistributed and dynamic programdistributeddata

management

distributeddata

management

plug-in,applet

download

plug-in,applet

download

distributed& dynamic

distributed& dynamic

http:http:

ftp:ftp:

Java-RMICorbaSOAP

Java-RMICorbaSOAP

http:http:

Page 8: objects

Object-oriented,Distributed,

Network-based seismology

Object-oriented,Distributed,

Network-based seismology

Page 9: objects

A quick overview of Object-oriented, Distributed, Network-based software

References

A quick overview of Object-oriented, Distributed, Network-based software

References

Anthony Lomax Scientific Software, Mouans-Sartoux, France

[email protected] www.alomax.net

Anthony Lomax Scientific Software, Mouans-Sartoux, France

[email protected] www.alomax.net

General:Developer.com - http://developer.com

Developer.com deesign - http://www.developer.com/designO'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.orgUK Research Councils e-science - http://www.rcuk.ac.uk/escience

Seismological:Information Technology by T. Owens, Geological Sciences

University of South Carolina, USA - http://www.seismosoc.org/publications/SRL/SRL_73/srl_73-4_es.htmlSCEC Community Modeling Environment - http://www.scec.org/cme

General:Developer.com - http://developer.com

Developer.com deesign - http://www.developer.com/designO'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.orgUK Research Councils e-science - http://www.rcuk.ac.uk/escience

Seismological:Information Technology by T. Owens, Geological Sciences

University of South Carolina, USA - http://www.seismosoc.org/publications/SRL/SRL_73/srl_73-4_es.htmlSCEC Community Modeling Environment - http://www.scec.org/cme