Showing posts with label Engineering Systems. Show all posts
Showing posts with label Engineering Systems. Show all posts

Sunday, 15 January 2017

Bond Graph Representation of the Coaxial Contra-Rotating Propeller

Abstract of my research in to the bond graph modeling for a coaxial contra-rotating propeller is given below.

A system of propellers formed when two propellers rotate about the same axis but in opposite direction is called coaxial contra-rotating propeller (Noriyuki Sasaki, 1998). A well-designed contra-rotating propeller has no rotational air flow, a maximum amount of air is pushed uniformly through the propeller disk resulting in an increase in performance and low induced energy losses. This study focuses on obtaining the system of equations needed to represent a contra-rotating propeller to be designed using seven spur gears mounted on five shafts. This study was completed using a bond graph model with a desire of obtaining a clearer understanding of this multi-domain , nonlinear and nonhomogeneous  system. A bond graph is a graphical representation of a physical dynamic system. The study resulted in a total of thirteen differential equations; needed to represent the system.

Thursday, 16 June 2016

Karush–Kuhn–Tucker Conditions (MATLAB)

Code

%KKT with 2 variables, 2 linear constraints with one equality and one

%inequality constraint at once or 1 equality and no inequality constraint at once or no

%equality and one inequality constraint at once

clc;

syms x1 x2 g1 h1 u1 v1 s1

%input of a function like (x1 - 1.5).^2 + (x2 - 1.5).^2 for up to two variables x1, x2

fx=input('Enter the function of ''x'' to be minimized of the form (x - 4).^2 + (y - 6).^2 ');

clc;

C=input('Enter the number of constraints in the problem, e.g. 10 for one equality and no inequality constraint ');

clc;

if C==01

    %constraints input

    g1=input('Enter inequality constraint in the form x1+x2-10 ');

    clc;

    %Lagrange function calculation

    L=fx+(u1*(g1+s1.^2));

    %gradient conditions

    dx1=(diff (L,x1)); dx2=(diff (L,x2)); du1=(diff (L,u1)); ds1=(diff (L,s1));

    %simultaneous solution of gradient conditions

    [sols1,solu1,solx1,solx2]=solve(dx1==0,dx2==0,du1==0,ds1==0);

    a=zeros(3,4);

    for i=1:3

        a(i,1)=solx1(i,1);

        a(i,2)=solx2(i,1);

        a(i,3)=sols1(i,1);

        a(i,4)=solu1(i,1);

    end

    SET1=a(1,:); SET2=a(2,:); SET3=a(3,:);

    %feasibility and non-negativity of Lagrange multiplier check

    if SET1(1,3)>0 || SET1(1,4)>0

        disp('Set 1 '); disp ('     x1    x2    s    u'); disp (SET1)

    end

    if SET2(1,3)>0 || SET2(1,4)>0

        disp('Set 2 '); disp ('     x1    x2    s    u'); disp (SET2)

    end

    if SET3(1,3)>0 || SET3(1,4)>0

        disp('Set 3 '); disp ('     x1    x2    s    u'); disp (SET3)

    end

end

if C==10

    %constraints input

    h1=input('Enter equality constraint in the form x1+x2-10 ');

    clc;

    %Lagrange function calculation

    L=fx+(v1*h1);

    %gradient conditions

    dx1=(diff (L,x1)); dx2=(diff (L,x2)); dv1=(diff (L,v1));

    %simultaneous solution of gradient conditions

    [solv1,solx1,solx2]=solve(dx1==0,dx2==0,dv1==0);

    a=zeros(1,3);

    a(1,1)=solx1;

    a(1,2)=solx2;

    a(1,3)=solv1;

    disp('Set 1 '); disp ('     x1    x2    v'); disp (a);

end

if C==11

    %constraints input

    g1=input('Enter inequality constraint in the form x1+x2-10 ');

    clc;

    h1=input('Enter equality constraint in the form x1+x2-10 ');

    clc;

    %Lagrange function calculation

    L=fx+(v1*h1)+(u1*(g1+s1.^2));

    %gradient conditions

    dx1=(diff (L,x1)); dx2=(diff (L,x2)); du1=(diff (L,u1)); ds1=(diff (L,s1)); dv1=(diff (L,v1));

    %simultaneous solution of gradient conditions

    [sols1,solu1,solv1,solx1,solx2]=solve(dx1==0,dx2==0,du1==0,ds1==0,dv1==0);

    a=zeros(3,5);

    for i=1:3

        a(i,1)=solx1(i,1);

        a(i,2)=solx2(i,1);

        a(i,3)=sols1(i,1);

        a(i,4)=solu1(i,1);

        a(i,5)=solv1(i,1);

    end

    SET1=a(1,:); SET2=a(2,:); SET3=a(3,:);

    %feasibility and non-negativity of Lagrange multiplier check

    if SET1(1,3)>0 || SET1(1,4)>0

        disp('Set 1 '); disp ('       x1         x2         s         u         v'); disp (SET1)

    end

    if SET2(1,3)>0 || SET2(1,4)>0

        disp('Set 2 '); disp ('       x1         x2         s         u         v'); disp (SET2)

    end

    if SET3(1,3)>0 || SET3(1,4)>0

        disp('Set 3 '); disp ('       x1         x2         s         u         v'); disp (SET3)

    end

end


Example 4.29 Arora pg. 128


Step One


In this step the user enters the objective function:

Command Window

Enter the function of 'x' to be minimized (x1 - 1.5).^2 + (x2 - 1.5).^2

Step Two


In this step the user specifies the type(s) and quantity of constraints the objective function is subjected to.

01 means no equality and one inequality constraint, 10 means one equality and no inequality constraint, 11 means one equality and one inequality constraint.

Command Window

Enter the number of constraints in the problem, e.g. 10 for one equality and no inequality constraint 01

Step Three


In this step the user enter the constraint(s).

Command Window

Enter inequality constraint in the form x1+x2-10 x1 + x2 – 2

Step Four


Output of the program; feasible set with candidate minimum point(s).

Command Window

Set 1

     x1    x2    s    u

     1     1     0     1

Example 4.27 Arora pg. 122


Step One


Command Window

Enter the function of 'x' to be minimized (x1 - 1.5).^2 + (x2 - 1.5).^2

Step Two


Command Window

Enter the number of constraints in the problem, e.g. 10 for one equality and no inequality constraint 10

Step Three


Command Window

Enter equality constraint in the form x1+x2-10 x1 + x2 – 2

Step Four


Command Window

Set 1

     x1    x2    v

     1     1     1

Modifications

Extension to five or even more variables and more constraints can be made via simple modifications to the code. The structure of the new code will remain similar to the code mention above, though it will have many more lines of instructions.