Skip to content

Commit

Permalink
Added camshaft, cylinder head and function nodes
Browse files Browse the repository at this point in the history
  • Loading branch information
ange-yaghi committed Jul 19, 2022
1 parent 4b4bc08 commit d44c435
Show file tree
Hide file tree
Showing 18 changed files with 737 additions and 43 deletions.
69 changes: 69 additions & 0 deletions assets/test.mr
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,75 @@ c0
.add_rod_journal(rj2)
.add_rod_journal(rj3)

piston_parameters piston_params(
mass: 0.0,
blowby: 0.0,
compression_height: 0.0,
wrist_pin_position: 0.0,
displacement: 0.0
)
connecting_rod_parameters cr_params(
mass: 0.0,
moment_of_inertia: 0.0,
center_of_mass: 0.0,
length: 0.0
)
cylinder_bank_parameters bank_params(
angle: 0.0,
bore: 0.0,
deck_height: 0.0
)
cylinder_bank b0(bank_params, angle: 0.0)
cylinder_bank b1(bank_params, angle: 0.0)

b0
.add_cylinder(
piston: piston(piston_params),
connecting_rod: connecting_rod(cr_params),
rod_journal: rj0
)
.add_cylinder(
piston: piston(piston_params),
connecting_rod: connecting_rod(cr_params),
rod_journal: rj1
)
.add_cylinder(
piston: piston(piston_params),
connecting_rod: connecting_rod(cr_params),
rod_journal: rj2
)
.add_cylinder(
piston: piston(piston_params),
connecting_rod: connecting_rod(cr_params),
rod_journal: rj3
)

b1
.add_cylinder(
piston: piston(piston_params),
connecting_rod: connecting_rod(cr_params),
rod_journal: rj0
)
.add_cylinder(
piston: piston(piston_params),
connecting_rod: connecting_rod(cr_params),
rod_journal: rj1
)
.add_cylinder(
piston: piston(piston_params),
connecting_rod: connecting_rod(cr_params),
rod_journal: rj2
)
.add_cylinder(
piston: piston(piston_params),
connecting_rod: connecting_rod(cr_params),
rod_journal: rj3
)

engine
.add_cylinder_bank(b0)
.add_cylinder_bank(b1)

engine.add_crankshaft(c0)

set_engine(
Expand Down
2 changes: 1 addition & 1 deletion dependencies/submodules/piranha
60 changes: 59 additions & 1 deletion es/actions/actions.mr
Original file line number Diff line number Diff line change
Expand Up @@ -36,5 +36,63 @@ public node add_crankshaft {
input this;
alias output out: this;

_add_crankshaft(crankshaft, this)
_add_crankshaft(crankshaft, engine: this)
}

private node _add_cylinder_bank => __engine_sim__add_cylinder_bank {
input engine [engine];
input cylinder_bank [cylinder_bank];
}

public node add_cylinder_bank {
input cylinder_bank;
input this;
alias output __out: this;

_add_cylinder_bank(engine: this, cylinder_bank)
}

private node _add_cylinder => __engine_sim__add_cylinder {
input piston [piston];
input connecting_rod [connecting_rod];
input rod_journal [rod_journal];
input cylinder_bank [cylinder_bank];
}

public node add_cylinder {
input piston;
input connecting_rod;
input rod_journal;
input this;
alias output __out: this;

_add_cylinder(piston, connecting_rod, rod_journal, cylinder_bank: this)
}

private node _add_sample => __engine_sim__add_sample {
input x [float];
input y [float];
input function [function];
}

public node add_sample {
input x;
input y;
input this;
alias output __out: this;

_add_sample(x: x, y: y, function: this)
}

private node _add_lobe => __engine_sim__add_lobe {
input centerline [float];
input camshaft [camshaft];
}

public node add_lobe {
input centerline;
input this;
alias output __out: this;

_add_lobe(centerline: centerline, camshaft: this)
}
105 changes: 101 additions & 4 deletions es/objects/objects.mr
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,9 @@ public node rod_journal_channel => __engine_sim__rod_journal { /* void */ }
public node connecting_rod_channel => __engine_sim__connecting_rod_channel { /* void */ }
public node piston_channel => __engine_sim__piston_channel { /* void */ }
public node cylinder_bank_channel => __engine_sim__cylinder_bank_channel { /* void */ }
public node function_channel => __engine_sim__function_channel { /* void */ }
public node cylinder_head_channel => __engine_sim__cylinder_head_channel { /* void */ }
public node camshaft_channel => __engine_sim__camshaft_channel { /* void */ }

// Engine
public node _build_engine => __engine_sim__engine {
Expand Down Expand Up @@ -82,7 +85,7 @@ private node _connecting_rod => __engine_sim__connecting_rod {

public node connecting_rod {
input params: connecting_rod_parameters();
alias output __out:
alias output __out [_connecting_rod]:
_connecting_rod(
mass: params.mass,
moment_of_inertia: params.moment_of_inertia,
Expand Down Expand Up @@ -122,7 +125,7 @@ private node _piston => __engine_sim__piston {

public node piston {
input params: piston_parameters();
alias output __out:
alias output __out [_piston]:
_piston(
mass: params.mass,
blowby: params.blowby,
Expand All @@ -133,7 +136,7 @@ public node piston {
}

// Cylinder Bank
private node cylinder_bank_parameter_defaults {
public node cylinder_bank_parameter_defaults {
input angle: 0.0;
input bore: 0.0;
input deck_height: 0.0;
Expand All @@ -158,10 +161,104 @@ public node cylinder_bank {
input angle: parameters.angle;
input bore: parameters.bore;
input deck_height: parameters.deck_height;
alias output __out:
alias output __out [_cylinder_bank]:
_cylinder_bank(
angle: angle,
bore: bore,
deck_height: deck_height
);
}

// Function
public node function => __engine_sim__function {
input filter_radius [float]: 1.0;
alias output __out [function_channel];
}

// Cylinder
public node cylinder_friction_parameter_defaults {
output friction_k: 0.06;
output breakaway_friction: 0.0;
output breakaway_friction_velocity: 0.0;
output viscous_friction_coefficient: 0.0;
}

public node cylinder_friction_parameters {
input copy: cylinder_friction_parameter_defaults();
input friction_k: copy.friction_k;
input breakaway_friction: copy.breakaway_friction;
input breakaway_friction_velocity: copy.breakaway_friction_velocity;
input viscous_friction_coefficient: copy.viscous_friction_coefficient;
}

// Cylinder Head
public node cylinder_head_parameter_defaults {
output intake_port_flow: function();
output exhaust_port_flow: function();
output chamber_volume: 0.0;
output flip_display: false;
}

public node cylinder_head_parameters {
input copy: cylinder_head_parameter_defaults();
input intake_port_flow: copy.intake_port_flow;
input exhaust_port_flow: copy.exhaust_port_flow;
input chamber_volume: copy.chamber_volume;
input flip_display: copy.flip_display;
}

private node _cylinder_head => __engine_sim__cylinder_head_node {
input intake_port_flow [function];
input exhaust_port_flow [function];
input intake_camshaft [camshaft];
input exhaust_camshaft [camshaft];
input chamber_volume [float];
input flip_display [bool];
alias output __out [cylinder_head_channel];
}

public node cylinder_head {
input params: cylinder_head_parameters();
input intake_camshaft;
input exhaust_camshaft;
alias output __out [_cylinder_head]:
_cylinder_head(
intake_port_flow: params.intake_port_flow,
exhaust_port_flow: params.exhaust_port_flow,
chamber_volume: params.chamber_volume,
flip_display: params.flip_display,
intake_camshaft: intake_camshaft,
exhaust_camshaft: exhaust_camshaft
);
}

// Camshaft
public node camshaft_parameter_defaults {
output advance: 0.0;
output base_radius: 0.0;
output lobe_profile: function();
}

public node camshaft_parameters {
input copy: camshaft_parameter_defaults();
input advance: copy.advance;
input base_radius: copy.base_radius;
input lobe_profile: copy.lobe_profile;
}

private node _camshaft => __engine_sim__camshaft {
input advance [float];
input base_radius [float];
input lobe_profile [function];
alias output __out [camshaft_channel];
}

public node camshaft {
input parameters: camshaft_parameters();
alias output __out [_camshaft]:
_camshaft(
advance: parameters.advance,
base_radius: parameters.base_radius,
lobe_profile: parameters.lobe_profile
);
}
54 changes: 52 additions & 2 deletions scripting/include/actions.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@
#include "crankshaft_node.h"
#include "rod_journal_node.h"
#include "cylinder_bank_node.h"
#include "function_node.h"
#include "camshaft_node.h"

namespace es_script {

Expand Down Expand Up @@ -49,8 +51,6 @@ namespace es_script {

virtual void _evaluate() {
readAllInputs();

m_crankshaft->addRodJournal(m_rodJournal);
}

protected:
Expand Down Expand Up @@ -138,6 +138,56 @@ namespace es_script {
CylinderBankNode *m_cylinderBank = nullptr;
};

class AddSampleNode : public Node {
public:
AddSampleNode() { /* void */ }
virtual ~AddSampleNode() { /* void */ }

protected:
virtual void registerInputs() {
addInput("x", &m_x);
addInput("y", &m_y);
addInput("function", &m_function, InputTarget::Type::Object);

Node::registerInputs();
}

virtual void _evaluate() {
readAllInputs();

m_function->addSample(m_x, m_y);
}

protected:
double m_x = 0;
double m_y = 0;
FunctionNode *m_function = nullptr;
};

class AddLobeNode : public Node {
public:
AddLobeNode() { /* void */ }
virtual ~AddLobeNode() { /* void */ }

protected:
virtual void registerInputs() {
addInput("centerline", &m_centerline);
addInput("camshaft", &m_camshaft, InputTarget::Type::Object);

Node::registerInputs();
}

virtual void _evaluate() {
readAllInputs();

m_camshaft->addLobe(m_centerline);
}

protected:
double m_centerline = 0;
CamshaftNode *m_camshaft = nullptr;
};

} /* namespace es_script */

#endif /* ATG_ENGINE_SIM_ACTIONS_H */
Loading

0 comments on commit d44c435

Please sign in to comment.