mcdp{
# We need to fly for this duration
providesendurance[s]
# ...while carrying this extra payload
providesextra_payload[kg]
# ...and providing this 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=10.0W/N²requiredpower≥(providedlift)^2·c}
# Co-design constraint: 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≥weight
# suppose we want to optimize for size of the battery
requiresmassforbattery}