📄 dsprsin.cpp
字号:
#include <iostream>
using namespace std;
#include "Plate.h"
//---------------------------------------------------------------------------
void TPlate::dsprsin(double *sa, int NEQ, int MBAND, double **S, int *ija){
int k = 0, start = 0;
int temp_a = 0, temp_b = 0;
int temp_ija = 0;
int offset = 1;
int count = 0;
//-----------------------------------------------------------------------
// 1st Column of Banded Matrix = Diagonal of Square Matrix;
for (int i = 1; i <= NEQ; i++){
sa[k] = S[i][1];
// cout << "sa[" << k << "] = " << sa[k] << endl;
k = k + 1;
}
k = NEQ + 1;
ija[start] = NEQ + 1;
// cout << "ija[" << start << "] = " << ija[start] << endl;
start = start + 1;
//-----------------------------------------------------------------------
for (int i = 1; i <= MBAND; i++){
temp_a = i;
for (int j = 1; j < i; j++){ // Store (/) pattern values
if (S[j][temp_a] != 0){
sa[k] = S[j][temp_a];
ija[k] = j - 1;
// cout << "sa[" << k << "] = " << sa[k] << endl;
// cout << "ija[" << k << "] = " << ija[k] << endl;
k = k + 1;
count = count + 1;
}
temp_a = temp_a - 1;
}
temp_ija = offset;
for (int m = 2; m <= MBAND; m++){ // Store (-) pattern values
if (S[i][m] != 0){
sa[k] = S[i][m];
ija[k] = temp_ija;
// cout << "sa[" << k << "] = " << sa[k] << endl;
// cout << "ija[" << k << "] = " << ija[k] << endl;
k = k + 1;
count = count + 1;
}
temp_ija = temp_ija + 1;
}
offset = offset + 1;
ija[start] = ija[start - 1] + count;
// cout << "ija[" << start << "] = " << ija[start] << endl;
count = 0;
start = start + 1;
}
//-----------------------------------------------------------------------
for (int i = 2; i <= (NEQ - MBAND + 1); i++){
temp_b = i;
for (int j = MBAND; j >= 2; j--){ // Store (/) pattern values
if (S[temp_b][j] != 0){
sa[k] = S[temp_b][j];
ija[k] = temp_b - 1;
// cout << "sa[" << k << "] = " << sa[k] << endl;
// cout << "ija[" << k << "] = " << ija[k] << endl;
k = k + 1;
count = count + 1;
}
temp_b = temp_b + 1;
}
temp_ija = offset;
for (int j = 2; j <= MBAND; j++){ // Store (-) pattern values
if (S[i + MBAND - 1][j] != 0){
sa[k] = S[i + MBAND - 1][j];
ija[k] = temp_ija;
// cout << "sa[" << k << "] = " << sa[k] << endl;
// cout << "ija[" << k << "] = " << ija[k] << endl;
k = k + 1;
count = count + 1;
}
temp_ija = temp_ija + 1;
}
offset = offset + 1;
ija[start] = ija[start - 1] + count;
// cout << "ija[" << start << "] = " << ija[start] << endl;
count = 0;
start = start + 1;
}
/*
for (int k = 0; k < nmax; k++){
cout << "\nk = " << k;
cout << "\t\tija[" << k << "] = " << ija[k];
cout << "\t\ta[" << k << "] = " << sa[k];
}
*/
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -