Форум программистов, компьютерный форум CyberForum.ru

Из Fortran в C++ - C++

Восстановить пароль Регистрация
 
ZveRb34
5 / 5 / 0
Регистрация: 23.11.2011
Сообщений: 83
28.05.2013, 18:29     Из Fortran в C++ #1
Здравствуйте, есть программа написанная на Fortran, необходимо переделать в С++, заранее спасибо
Fortran
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
program wave002
! Расчет полей в брэгговском изотропном планарном волноводе
!
integer(4)::n_2pi   !сколько длин волн укладывается по толщине d в вакууме
!
real(8)::eps1,eps3,tet0(901),htet0,rrs(901),rrp(901),pi,x(1001)
complex(8)::eps2(1001),p0,pn,q0,qn,mju,ns(2,2),np(2,2),rs(901),rp(901),Ey(901,1001),Hz(901,1001)
complex(8)::ic,k0d,p(1001),q(1001),alfa(901),alfa2,Hy(901,1001),Ez(901,1001),eps21,eps22,sum
real(8)::rEy(901,1001),rHy(901,1001),tet_R,fi_s(901),fi_p(901)
real(8)::del_12s(901),del_23s(901),del_12p(901),del_23p(901),k0ds,k0dp,d_k0d,delta_s(901,1001),delta_p(901,1001)
logical(4)::il
 
open(1,file='Ey.dat',form='formatted')
open(2,file='Hy.dat',form='formatted')
open(3,file='dis_s.dat',form='formatted')
open(4,file='dis_p.dat',form='formatted')
pi=3.1415926
n_2pi=5
k0d=n_2pi*2.*pi
d_k0d=k0d/10.
eps1=1.1
eps21=3.
eps22=4.
eps3=1.1
miu=1.
tet_R=dasin(dsqrt(min(eps1,eps3)/dreal(eps21)))
htet0=(pi/2.-tet_R)/900.
h_x=k0d/1000.
 
ic=dcmplx(0.,1)
 
do i=1,901
tet0(i)=tet_R+dfloat(i-1)*htet0
alfa2=eps21*dsin(tet0(i))**2
alfa(i)=cdsqrt(alfa2)
p0=cdsqrt(eps1*miu-alfa2)
q0=p0/eps1
 
 
 
 
!для m=0
 
 
Ey(i,1)=1.*dcos(del_12s(i))
Hz(i,1)=ic*dsin(del_12s(i))*p0
 
Hy(i,1)=1.*dcos(del_12p(i))
Ez(i,1)=-ic*dsin(del_12p(i))*q0
sum=0.
!неоднородность
do l=1,1001
x(l)=dfloat(l-1)*h_x
if(int(x(l)/d_k0d)/2*2.eq.int(x(l)/d_k0d)) then
il=.true.
else
il=.false.
endif
if(il) then
eps2(l)=eps21
else
eps2(l)=eps22
endif
enddo
 
del_12s(i)=-datan(dreal(cdsqrt((alfa2-eps1*miu)/(eps2(1)*miu-alfa2))))
del_23s(i)=-datan(dreal(cdsqrt((alfa2-eps3*miu)/(eps2(1001)*miu-alfa2))))
del_12p(i)=-datan(dreal(eps21*miu/eps1*miu*cdsqrt((alfa2-eps1*miu)/(eps21*miu-alfa2))))
del_23p(i)=-datan(dreal(eps22*miu/eps3*miu*cdsqrt((alfa2-eps3*miu)/(eps22*miu-alfa2))))
 
fi_s(i)=del_12s(i)+del_23s(i)
fi_p(i)=del_12p(i)+del_23p(i)
 
do l=1,1001
 
p(l)=cdsqrt(eps2(l)*miu-alfa2)/miu
q(l)=cdsqrt(eps2(l)*miu-alfa2)/eps2(l)
sum=sum+p(l)*h_x
ns(1,1)=cdcos(sum)
ns(1,2)=ic*cdsin(sum)/p(l)
ns(2,1)=ic*cdsin(sum)*p(l)
ns(2,2)=cdcos(sum)
 
Ey(i,l)=ns(1,1)*Ey(i,1)+ns(1,2)*Hz(i,1)
Hz(i,l)=ns(2,1)*Ey(i,1)+ns(2,2)*Hz(i,1)
 
np(1,1)=cdcos(sum)
np(1,2)=-ic*cdsin(sum)/q(l)
np(2,1)=-ic*cdsin(sum)*q(l)
np(2,2)=cdcos(sum)
 
Hy(i,l)=np(1,1)*Hy(i,1)+np(1,2)*Ez(i,1)
Ez(i,l)=np(2,1)*Hy(i,1)+np(2,2)*Ez(i,1)
delta_s(i,l)=sum+fi_s(i)-4*pi
delta_p(i,l)=sum+fi_p(i)-4*pi
enddo
enddo
 
do i=1,901
do l=1,1001
rEy(i,l)=dreal(Ey(i,l))
rHy(i,l)=cdabs(Hy(i,l))
enddo
enddo
 
do i=1,900
do l=1,1001
if(l.gt.1.and.i.gt.1) then
 
if((delta_s(i,l)*delta_s(i,l-1).lt.0.).or.(delta_s(i,l)*delta_s(i-1,l).lt.0.)) then
 
write(1,1111) x(l),alfa(i)
1111 format(2X,E15.7,4X,2E15.7)
endif
 
 
if((delta_p(i,l)*delta_p(i,l-1).lt.0.).or.(delta_p(i,l)*delta_p(i-1,l).lt.0.)) then
write(2,2222) x(l),alfa(i)
2222 format(2X,E15.7,4X,2E15.7)
endif
endif
enddo
enddo
 
end program wave002
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.05.2013, 18:29     Из Fortran в C++
Посмотрите здесь:

из Fortran в delphi Delphi
C++ Перевод с Fortran на С++
Перевод с Fortran на С++ C++
Чтение бинарника fortran в C++ C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4248 / 2780 / 219
Регистрация: 12.12.2009
Сообщений: 7,109
Записей в блоге: 1
Завершенные тесты: 1
28.05.2013, 18:46     Из Fortran в C++ #2
А в чем проблема? Fortran интуитивно понятный язык, не надо его знать, чтобы понимать, что написано. Это во первых, а во вторых все равно сабрутин не хватает, т.е. код не полный.
ZveRb34
5 / 5 / 0
Регистрация: 23.11.2011
Сообщений: 83
28.05.2013, 23:27  [ТС]     Из Fortran в C++ #3
Странно, вот что прислал преподаватель, он сказал что у него работает все
Stepanov.rar
Kuzia domovenok
29.05.2013, 00:25
  #4

Не по теме:

Твой преподаватель тебя узнал, Степанов. На пересдачу можешь не приходить.

ZveRb34
5 / 5 / 0
Регистрация: 23.11.2011
Сообщений: 83
29.05.2013, 01:08  [ТС]     Из Fortran в C++ #5
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение

Не по теме:

Твой преподаватель тебя узнал, Степанов. На пересдачу можешь не приходить.

Не по теме, я не Степанов=)
Yandex
Объявления
29.05.2013, 01:08     Из Fortran в C++
Ответ Создать тему
Опции темы

Текущее время: 01:15. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru