## Composite Component Using `import` Statements

This example shows how you can use `import` statements to implement a composite component equivalent to the one described in Composite Component — DC Motor . The two components are identical, but, because of the use of the `import` statements, the amount of typing in the `nodes` and `components` sections is significantly reduced.

```import foundation.electrical.electrical; % electrical domain class definition import foundation.electrical.elements.*; % electrical elements import foundation.mechanical.rotational.*; % mechanical rotational domain and elements component DC_Motor1 % DC Motor1 % This block models a DC motor with an equivalent circuit comprising a % series connection of a resistor, inductor, and electromechanical converter. % Default values are as for the DC Motor Simscape example, ssc_dcmotor. nodes p = electrical; % +:left n = electrical; % -:left R = rotational; % R:right C = rotational; % C:right end parameters rotor_resistance = { 3.9, 'Ohm' }; % Rotor Resistance rotor_inductance = { 12e-6, 'H' }; % Rotor Inductance motor_inertia = { 0.01, 'g*cm^2' }; % Inertia breakaway_torque = { 0.02e-3, 'N*m' }; % Breakaway friction torque coulomb_torque = { 0.02e-3, 'N*m' }; % Coulomb friction torque viscous_coeff = { 0, 'N*m*s/rad' }; % Viscous friction coefficient breakaway_velocity = { 0.1, 'rad/s' }; % Breakaway friction velocity back_emf_constant = { 0.072e-3, 'V/rpm' }; % Back EMF constant end components(ExternalAccess=observe) rotorResistor = resistor(R = rotor_resistance); rotorInductor = inductor(l = rotor_inductance); rotationalElectroMechConverter = rotational_converter(K = back_emf_constant); friction = friction(brkwy_trq = breakaway_torque, Col_trq = coulomb_torque, ... visc_coef = viscous_coeff, brkwy_vel = breakaway_velocity); motorInertia = inertia(inertia = motor_inertia); end connections connect(p, rotorResistor.p); connect(rotorResistor.n, rotorInductor.p); connect(rotorInductor.n, rotationalElectroMechConverter.p); connect(rotationalElectroMechConverter.n, n); connect(rotationalElectroMechConverter.R, friction.R, motorInertia.I, R); connect(rotationalElectroMechConverter.C, friction.C, C); end end ```

Consider the three `import` statements at the beginning of the file. The first one:

`import foundation.electrical.electrical;`

is a qualified import of the Foundation electrical domain class. Therefore, in the `nodes` section, you can define the `p` and `n` nodes simply as `electrical`.

The second statement:

`import foundation.electrical.elements.*;`

is an unqualified import, which imports all subpackages and classes under the `foundation.electrical.elements` subpackage and therefore gives you direct access to all the Foundation electrical components in the Elements sublibrary, such as `inductor`, `resistor`, and `rotational_converter`.

The third statement:

`import foundation.mechanical.rotational.*;`

is an unqualified import, which imports all subpackages and classes under the `foundation.mechanical.rotational` subpackage and therefore gives you direct access to the Foundation mechanical rotational domain definition (`rotational`) and components (such as `friction` and `inertia`).

The `nodes` block declares two electrical nodes, `p` and `n`, and two mechanical rotational nodes, `R` and `C`.

The `components` block declares all the member (constituent) components, using the following components from the Simscape™ Foundation library:

• Resistor

• Inductor

• Rotational Electromechanical Converter

• Rotational Friction

• Inertia

Because of the `import` statements at the top of the file, these classes already exist in the scope of the file, and you do not have to specify their complete names starting from the top-level package directory.