mcdp{
# We need to fly for this duration
providesendurance[s]
# ... while carrying this extra payload ...
providesextra_payload[kg]
# ... and providing extra power ...
providesextra_power[W]
# Sub-design problem: choose the battery
battery=instancemcdp{
# A battery provides capacity
providescapacity[J]
# ... and requires some mass to be transported
requiresmass[kg]
# requires cost [$]
specific_energy_Li_Ion=500Wh/kgrequiredmass≥providedcapacity/specific_energy_Li_Ion}
# Sub-design problem: actuation
actuation=instancemcdp{
# actuators need to provide this lift
provideslift[N]
# and will require power
requirespower[W]
# simple model: quadratic
c=0.002W/N²requiredpower≥c·(providedlift)²}
# Co-design constraint: the battery must be large enough
power=powerrequiredbyactuation+providedextra_powerenergy=power·providedendurancecapacityprovidedbybattery≥energy
# Co-design constraint: actuators must be powerful enough
gravity=9.81m/s²weight=(massrequiredbybattery+providedextra_payload)·gravityliftprovidedbyactuation≥weightrequiresmassforbattery}