Есть код на Фортране, который я пытаюсь перевести на C++. Видимо, я где-то неправильно понял синтаксис Фортрана и поэтому у меня возникает проблема в строке 94. Я посмотрел значения компонентов в строке 94 и понял, что с большой вероятностью я неправильно рассчитал двумерный массив A Но я много раз перепроверял его расчеты и не нашел ошибок. Подскажите пожалуйста, что нужно сделать, чтобы код работал корректно? (Я пользовался отладчиком, склоняюсь к тому, что я что-то напутал с разницей в синтаксисе языков)
С++:
#include
#include
#include
using namespace std;
void initl(double& sxxs, double& sxxn, double& syys, double& syyn, double& sxys, double& sxyn, double& uxs, double& uxn, double& uys, double& uyn)
{
sxxs = 0.0;
sxxn = 0.0;
syys = 0.0;
syyn = 0.0;
sxys = 0.0;
sxyn = 0.0;
uxs = 0.0;
uxn = 0.0;
uys = 0.0;
uyn = 0.0;
}
void coeff(double x, double y, double cx, double cy, double a, double cosb, double sinb, int msym, double pi, double con, double cond, double pr1, double pr2, double pr3, double& uxs, double& uxn, double& uys, double& uyn, double& sxxs, double& sxxn, double& syys, double& syyn, double& sxys, double& sxyn) {
double cos2b, sin2b, xb, yb, r1s, r2s, fl1, fl2, fb1, fb2, fb3, fb4, fb5, uxps, uxpn, uyps, uypn;
double sxxps, sxxpn, syyps, syypn, sxyps, sxypn;
cos2b = cosb * cosb - sinb * sinb;
sin2b = 2.0 * sinb * cosb;
xb = (x - cx) * cosb + (y - cy) * sinb;
yb = -(x - cx) * sinb + (y - cy) * cosb;
r1s = (xb - a) * (xb - a) + yb * yb;
r2s = (xb + a) * (xb + a) + yb * yb;
fl1 = 0.5 * log(r1s);//log - натуральный логарифм
fl2 = 0.5 * log(r2s);
fb2 = con * (fl1 - fl2);
if (yb != 0.0) {
fb3 = -con * (atan((xb + a) / yb) - atan((xb - a) / yb));
}
else
{
fb3 = 0.0;
if (abs(xb) < a) {
fb3 = con * pi;
}
}
fb1 = yb * fb3 + con * ((xb - a) * fl1 - (xb + a) * fl2);
fb4 = con * (yb / r1s - yb / r2s);
fb5 = con * ((xb - a) / r1s - (xb + a) / r2s);
uxps = cond * (pr3 * cosb * fb1 + yb * (sinb * fb2 + cosb * fb3));
uxpn = cond * (-pr3 * sinb * fb1 - yb * (cosb * fb2 - sinb * fb3));
uyps = cond * (pr3 * sinb * fb1 - yb * (cosb * fb2 - sinb * fb3));
uypn = cond * (pr3 * cosb * fb1 - yb * (sinb * fb2 + cosb * fb3));
sxxps = fb2 + pr2 * (cos2b * fb2 - sin2b * fb3) + yb * (cos2b * fb4 + sin2b * fb5);
sxxpn = fb3 - pr1 * (sin2b * fb2 + cos2b * fb3) + yb * (sin2b * fb4 - cos2b * fb5);
syyps = fb2 - pr2 * (cos2b * fb2 - sin2b * fb3) - yb * (cos2b * fb4 + sin2b * fb5);
syypn = fb3 + pr1 * (sin2b * fb2 + cos2b * fb3) - yb * (sin2b * fb4 - cos2b * fb5);
sxyps = pr2 * (sin2b * fb2 + cos2b * fb3) + yb * (sin2b * fb4 - cos2b * fb5);
sxypn = pr1 * (cos2b * fb2 - sin2b * fb3) - yb * (cos2b * fb4 + sin2b * fb5);
uxs = uxs + msym * uxps;
uxn = uxn + uxpn;
uys = uys + msym * uyps;
uyn = uyn + uypn;
sxxs = sxxs + msym * sxxps;
sxxn = sxxn + sxxpn;
syys = syys + msym * syyps;
syyn = syyn + syypn;
sxys = sxys + msym * sxyps;
sxyn = sxyn + sxypn;
}
void solve(int n, vector& a, vector& b, vector& x) {
int nb, l;
double xm;
nb = n - 1;
for (int j = 0; j < nb; ++j) {// 1 -> 0; "
Подробнее здесь: https://stackoverflow.com/questions/782 ... -languages
Проблема с синтаксической разницей в языках C++ и Fortran. ⇐ C++
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Можем ли мы исправить мою проблему с синтаксической ошибкой дубликатора в строке 10?
Anonymous » » в форуме Php - 0 Ответы
- 25 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Получение синтаксической ошибки при создании входного слоя для NN в тензорном потоке
Anonymous » » в форуме Python - 0 Ответы
- 31 Просмотры
-
Последнее сообщение Anonymous
-