ورود

نسخه کامل مشاهده نسخه کامل : کمک برای یک برنامه



khoshchehre13
11-05-2011, 09:04
با سلام
من یک برنامه رو که بهش نیاز دارم از اینترنت گرفته‌ام ولی نمی‌دونم که به زبان ‌C نوشته شده و یا زبان فورترن و یا زبان دیگه!! چون من باید اون رو به کد متلب تبدیل کنم. حالا خواستم بدونم که این برنامه به چه زبانی نوشته شده؟

Sigmoid -- Make sigmoid reflectivity model.
#
# Sigmoid [n1=400 n2=100 o1=0 d1=.004 o2=0 d2=.032 ] > out.H
#%
integer large, n1,n3, esize,n2
from par: integer n1=400, n2=100, n3=1, esize=4, large=5*n1
allocate: real imp1(large), imp2(large)
allocate: real dipper(n1,n2), earth(n1,n2), refl(n1,n2)
allocate: real sig1(n1,n2), sig2(n1,n2), fault(n1,n2)
subroutine doit( n1,n2,large, imp1,imp2,dipper,sig1,sig2,fault,earth,refl)
integer n1,n2,large
real imp1(large), imp2(large)
real dipper(n1,n2), earth(n1,n2), refl(n1,n2), t, frac
real sig1(n1,n2), sig2(n1,n2), fault(n1,n2)
integer i1,i2, iseed, it, is
real o1,d1,o2,d2, rand01, x
from par: real o1=0.,d1=.004, o2=0,d2=.032
call putch('label1','s','sec')
call putch('label2','s','km')
iseed = 19921995
imp1(1) = 1.
do i1= 2, large {
if( rand01(iseed) > .2 ) { imp1(i1) = imp1(i1-1) }
else { imp1(i1) = 1. + .1 * rand01(iseed) }
}
imp2(1) = 1.
do i1= 2, large {
if( rand01(iseed) > .3 ) { imp2(i1) = imp2(i1-1) }
else { imp2(i1) = 1. + .1 * rand01(iseed) }
}
call zero( n1*n2, dipper)
do i2= 1, n2 {
do i1= 1, n1 {
t = i1 + i2 * .3 * (1.*n1)/(1.*n2)
it = t
frac = t - it
dipper ( i1, i2) = imp1( it) * (1.-frac) + imp1( it+1) * frac
}}
call zero( n1*n2, sig1)
call zero( n1*n2, sig2)
do i2= 1, n2 {
do i1= 1, n1 {
t = i1 + n1 *.15 * ( 1.1 + cos( ( 3 *3.14 * i2)/n2) )
it = t
is = it + 10
frac = t - it
sig1( i1, i2) = imp2( it) * (1.-frac) + imp2( it+1) * frac
sig2( i1, i2) = imp2( is) * (1.-frac) + imp2( is+1) * frac
}}
do i2= 1, n2 { # fault
do i1= 1, n1 {
# if( (i2-.9*n2) < -.75*n1*((i1+1.)/n1)**2 )
if( (float(i2)/n2-.9) < -.75*((i1+1.)/n1)**2 )
fault(i1,i2) = sig1(i1,i2)
else
fault(i1,i2) = sig2(i1,i2)
}}
do i2= 1, n2 {
do i1= 1, n1 {
it = i1 + i2 * .3 * (1.*n1)/(1.*n2)
if( it > n1/2 ) { earth(i1,i2) = fault(i1,i2) }
else { earth(i1,i2) = dipper (i1,i2) }
}}
do i2= 1, n2 { refl(1,i2) = 0.
do i1= 2, n1 {
refl(i1,i2) = ( earth(i1-1,i2) - earth(i1,i2) ) / _
( earth(i1-1,i2) + earth(i1,i2) )
}}
do i1= 1, n1 {
do i2= 1, 10
refl(i1,i2) = refl(i1,i2) * (i2) / 10.
do i2= n2, n2-10+1, -1
refl(i1,i2) = refl(i1,i2) * (n2-i2+1) / 10.
}
do i2= 1, n2 {
do i1= 1, 5
refl(i1,i2) = refl(i1,i2) * (i1) / 5.
do i1= n1, n1-5+1, -1
refl(i1,i2) = refl(i1,i2) * (n1-i1+1) / 5.
}
call hclose()
call srite( 'out', refl, 4*n1*n2)
return; end

water_lily_2012
11-05-2011, 09:17
زبان C كه نيست. بايد بررسي كنم ببينم چه زباني هست.

water_lily_2012
11-05-2011, 09:33
چند تا از دستورات را در زبان فرترن ديدم. احتمال زياد دستورات فرترن هست.

Abraham70
11-05-2011, 21:09
زبان سی که مطمئنم که نیست به احتمال زیاد فورترن هست