public ITorsionalFunction  GetTorsionalFunction(TorsionalFunctionCase Case, double E, double G,double J,double L,double z, double T, double C_w,double t,double alpha)
        {
            TorsionalParameters torProps = new TorsionalParameters();
            double a = torProps.Get_a(C_w, E, G, J);

            ITorsionalFunction function = null;
            switch (Case)
            {
                case TorsionalFunctionCase.Case1:   function =new  TorsionalFunctionCase1(G,J,L,z,T);     break;                              
                case TorsionalFunctionCase.Case2:   function =new  TorsionalFunctionCase2(G,J,L,z,a, T);     break;                                              
                case TorsionalFunctionCase.Case3:   function =new  TorsionalFunctionCase3(G,J,L,z,a,T,alpha);     break;                                      
                case TorsionalFunctionCase.Case4:   function =new  TorsionalFunctionCase4(G,J,L,z,a,t);     break;                                              
                case TorsionalFunctionCase.Case5:   function =new  TorsionalFunctionCase5(G,J,L,z,a,t);     break;                                          
                case TorsionalFunctionCase.Case6:   function =new  TorsionalFunctionCase6(G,J,L,z,a,T,alpha);     break;                                             
                case TorsionalFunctionCase.Case7:   function =new  TorsionalFunctionCase7(G,J,L,z,a,t);     break;                                                 
                case TorsionalFunctionCase.Case8:   function =new  TorsionalFunctionCase8(G,J,L,z,a,t);     break;                                             
                case TorsionalFunctionCase.Case9:   function =new  TorsionalFunctionCase9(G,J,L,z,a,T,alpha);     break;                                                
                case TorsionalFunctionCase.Case10:  function =new  TorsionalFunctionCase10(G,J,L,z,a,t,alpha);     break;                                                
                case TorsionalFunctionCase.Case11:  function =new  TorsionalFunctionCase11(G,J,L,z,a,t);     break;
                case TorsionalFunctionCase.Case12: function = new  TorsionalFunctionCase12(G, J, L, z, a, t); break;
            }

            return function;
        }
        public ITorsionalFunction  GetTorsionalFunction(TorsionalFunctionCase Case, double E, double G, double J, double L, double z, double T, double C_w, double t, double alpha)
        {
            TorsionalParameters torProps = new TorsionalParameters();
            double a = torProps.Get_a(C_w, E, G, J);

            ITorsionalFunction function = null;

            switch (Case)
            {
            case TorsionalFunctionCase.Case1:   function = new  TorsionalFunctionCase1(G, J, L, z, T);     break;

            case TorsionalFunctionCase.Case2:   function = new  TorsionalFunctionCase2(G, J, L, z, a, T);     break;

            case TorsionalFunctionCase.Case3:   function = new  TorsionalFunctionCase3(G, J, L, z, a, T, alpha);     break;

            case TorsionalFunctionCase.Case4:   function = new  TorsionalFunctionCase4(G, J, L, z, a, t);     break;

            case TorsionalFunctionCase.Case5:   function = new  TorsionalFunctionCase5(G, J, L, z, a, t);     break;

            case TorsionalFunctionCase.Case6:   function = new  TorsionalFunctionCase6(G, J, L, z, a, T, alpha);     break;

            case TorsionalFunctionCase.Case7:   function = new  TorsionalFunctionCase7(G, J, L, z, a, t);     break;

            case TorsionalFunctionCase.Case8:   function = new  TorsionalFunctionCase8(G, J, L, z, a, t);     break;

            case TorsionalFunctionCase.Case9:   function = new  TorsionalFunctionCase9(G, J, L, z, a, T, alpha);     break;

            case TorsionalFunctionCase.Case10:  function = new  TorsionalFunctionCase10(G, J, L, z, a, t, alpha);     break;

            case TorsionalFunctionCase.Case11:  function = new  TorsionalFunctionCase11(G, J, L, z, a, t);     break;

            case TorsionalFunctionCase.Case12: function = new  TorsionalFunctionCase12(G, J, L, z, a, t); break;
            }

            return(function);
        }