⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dsprsin.cpp

📁 有限元计算程序用于计算平面板结构单元的应力和位移。
💻 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 + -