728x90
300x250

[Mechanics] 재료역학 - E, G, v의 관계식 / 모형화

 

재료역학(재료과학이라고도 불림.)에서 얇지만 충실하게 다루는 탄성계수 사이의 관계(E, G, v) 관계식에 대해서 프로그래밍 코드로 모형화를 하였습니다.

탄성 계수(modulus of elasticity)는 고체 역학에서 재료의 강성도(stiffness)를 나타내는 값이다.

 

 

 

 

 

E = 인장 탄성 계수(또는 선형탄성계수), 영 계수 (E) [Young's modulus (E)]

G = 전단탄성계수(또는 층밀리기 탄성계수) 또는 [전단 계수 또는 강성 계수 (G)] The shear modulus or modulus of rigidity (G)

v = 푸아송의 비

K = 벌크 모듈러스(bulk modulus (K))

 


1. 설계[Design]

 

  /*
 * Author: Dodo(rabbit.white at daum dot net)
 * Created by: 2018-07-15
 * Project Name: E,G,v의 관계식(탄성계수)
 * FileName: Calculate.h
 * Description:
 */

#ifndef CALCULATE_H_
#define CALCULATE_H_

 

class Calculate{

 

 private:
           int G_TYPE_EV = 1;
           int G_TYPE_KE = 2;
           int G_TYPE_KV = 3;

           int K_TYPE_GE = 1;
           int K_TYPE_EV = 2;
           int K_TYPE_GV = 3;

           int V_TYPE_EG = 1;
           int V_TYPE_KE = 2;
           int V_TYPE_KG = 3;

 

 public:

           Calculate();
           ~Calculate();

           int getG_TYPE_EV(){ return this->G_TYPE_EV; }
           int getG_TYPE_KE(){ return this->G_TYPE_KE; }
           int getG_TYPE_KV(){ return this->G_TYPE_KV; }

 

           // G에 관한 변형식
           double getG(double v1, double v2, const int type);

           // K에 관한 변형식
           double getK(double v1, double v2, const int type);

           // v에 관한 변형식
           double getV(double v1, double v2, const int type);

 

 protected:


};

#endif /* CALCULATE_H_ */

 Calculate.h

 

 /*
 * Author: Dodo(rabbit.white at daum dot net)
 * Created by: 2018-07-15
 * Project Name: E,G,v의 관계식(탄성계수)
 * FileName: Calculate.cpp
 * Description:
 */


 #include <iostream>
 #include "Calculate.h"

 

 using namespace std;

 

 Calculate::Calculate(){}

 Calculate::~Calculate(){}

 

 // G에 관한 변형식
 double Calculate::getG(double v1, double v2, int type){
       double f = 0;
       double e, v, k;
       e = v = k = 0;

 

       switch ( type ){
              case 1:

                   e = v1;
                   v = v2;

                   f = e / ( 2 * ( 1 + v ) );
                   break;

 

              case 2:

                   k = v1;
                   e = v2;

                   f = ( 3 * k * e ) / ( (9 * k) - e );
                   break;

 

              case 3:

                   k = v1;
                   v = v2;

                   f = ( ( 3 * k ) * ( 1 - ( 2 * v ) ) ) / ( 2 * (1+v));
                   break;

     }

 

     return f;
 }

 

 // K에 관한 변형식
 double Calculate::getK(double v1, double v2, int type){

        double f = 0;
        double g, e, v;
        g = e = v = 0;

 

        switch ( type ){
              case 1:

                   g = v1;
                   e = v2;

                   f = (g * e) / ( ( 9 * g) - (3 * e) );
                   break;

 

              case 2:

                   e = v1;
                   v = v2;

                   f = e / ( 3 * ( 1 - v ) );
                  break;

 

              case 3:

                  g = v1;
                  v = v2;

                  f = ( ( 2* g) * ( 1 + v) ) / ( 3 * ( 1 - ( 2*v ) ) );
                  break;

        }

 

        return f;
 }

 

 // K에 관한 변형식
 double Calculate::getK(double v1, double v2, int type){

         double f = 0;
         double g, e, v;
         g = e = v = 0;

 

         switch ( type ){
               case 1:

                   g = v1;
                   e = v2;

                   f = (g * e) / ( ( 9 * g) - (3 * e) );
                   break;

 

              case 2:

                   e = v1;
                   v = v2;

                   f = e / ( 3 * ( 1 - v ) );
                   break;

 

              case 3:

                   g = v1;
                   v = v2;

                   f = ( ( 2* g) * ( 1 + v) ) / ( 3 * ( 1 - ( 2*v ) ) );
                   break;

       }

       return f;
 }


 // v에 관한 변형식
 double Calculate::getV(double v1, double v2, const int type){

       double f = 0;
       double e, g, k;
       e = g = k = 0;

 

       switch ( type ){
             case 1:

                  e = v1;
                  g = v2;

                  f = ( e - (2*g)) / (2 * g);
                  break;

 

            case 2:

                  k = v1;
                  e = v2;

                  f = ( ( 3 * k) - e ) / ( 6 * k );
                  break;

 

            case 3:

                  k = v1;
                  g = v2;

                  f = ( (3*k) - (2* g) ) / ( ( 6* k) + ( 2 * g) );
                  break;

         }

         return f;
 }
 

 Calculate.cpp

 

 /*
 * Author: Dodo(rabbit.white at daum dot net)
 * Created by: 2018-07-15
 * Project Name: E,G,v의 관계식(탄성계수)
 * FileName: main.cpp
 * Description:
 */

 

 #include <iostream>
 #include <math.h>
 #include "Calculate.h"

 

 using namespace std;

 

 const int GB = pow(10, 9);
 const int MB = pow(10, 6);

 

 int main(){

        Calculate* cal = new Calculate();

        double e = 200 * (double)GB;
        double v = 0.3;

 

        cout.setf(ios::fixed);

        cout.precision(3);

        cout << e << endl;

 

        double result = cal->getG(e, v, cal->getG_TYPE_EV() );
        cout.precision(5);

        cout << result << endl;

        return 0;
 } 

 main.cpp

 

 

그림1-1) 출력값

 

[소스코드]


egk.7z

 


2. 참고하면 도움되는 자료

 

1. 영률(Young's), Wikipedia(한글), https://ko.wikipedia.org/wiki/영률

2. 탄성계수(Modulus of elasticity), Wikipedia(한글), https://ko.wikipedia.org/wiki/탄성 계수

3. 전단탄성계수(Shear modulus of elasticity), Wikipedia(한글), https://ko.wikipedia.org/wiki/전단탄성계수

4. 전단탄성계수(Shear modulus of elasticity), Wikipedia(영문) https://en.wikipedia.org/wiki/Elastic_modulus

반응형

+ Recent posts