« GPVehicle » : différence entre les versions

De GENOPUS
Aller à la navigation Aller à la recherche
Aucun résumé des modifications
Aucun résumé des modifications
Ligne 15 : Ligne 15 :
</syntaxhighlight>
</syntaxhighlight>


In future [[https://logiciels.cnes.fr/en/node/62?type=desc PATRIUS]] versions (since 3.4), there is a <font color=#4169E1>Vehicle</font> class so, it will be possible to search in [[https://logiciels.cnes.fr/en/node/62?type=desc PATRIUS]] documentation how it is possible to initialize such an object. But, up to now, it is mandatory to use the <font color=#556B2F>'''GENOPUS'''</font> <font color=#4169E1>CustomVehicle</font> class. We have then to instantiate this class using all the previous sub-objects described in the following paragraphs.
In future [[https://logiciels.cnes.fr/en/node/62?type=desc PATRIUS]] versions (since 3.4), there is a <font color=#4169E1>Vehicle</font> class so, it will be possible to search in [[https://logiciels.cnes.fr/en/node/62?type=desc PATRIUS]] documentation how it is possible to initialize such an object. But, up to now, it is mandatory to use the <font color=#556B2F>'''GENOPUS'''</font> [{{PathCurrentJavaDoc}}/fr/cnes/genopus/nonWidget/vehicle/CustomVehicle.html CustomVehicle] class. We have then to instantiate this class using all the previous sub-objects described in the following paragraphs.


=== Dry mass initialization ===
=== Dry mass initialization ===

Version du 7 septembre 2017 à 10:34

How to call it

For using the GPVehicle class, the developer has only to create such an object with these two possibilities:

  • With no vehicle initialization
veh = new GPVehicle("My Vehicle");
  • Or, if we want to initialize the widget with a predefined vehicle:
final CustomVehicle vehicle = new CustomVehicle();
veh = new GPVehicle("My Vehicle", vehicle);

In future [PATRIUS] versions (since 3.4), there is a Vehicle class so, it will be possible to search in [PATRIUS] documentation how it is possible to initialize such an object. But, up to now, it is mandatory to use the GENOPUS CustomVehicle class. We have then to instantiate this class using all the previous sub-objects described in the following paragraphs.

Dry mass initialization

// DRY MASS
final double dryMass = 1000.;
MassProperty dryMassProperty = new MassProperty(dryMass);

Propulsive properties initialization

// PROPULSION
final ArrayList<CustomEngine> enginesList = new ArrayList<CustomEngine>();
enginesList.add(new CustomEngine("OCS", 320., 1000.));
enginesList.add(new CustomEngine("ACS", 150., 270.));

final ArrayList<CustomFuelTank> fuelTankList = new ArrayList<CustomFuelTank>();
fuelTankList.add(new CustomFuelTank("Tank1", 500.));

Shape characteristics initializaton

// SHAPE (HERE PARALLELEPIPED + SOLAR PANELS)
final CustomParallelepiped parall =
   new CustomParallelepiped(4.0, 1.0, 2.0);
final CustomParallelepiped solarPanels =
   new CustomParallelepiped(10., 0., 0.);
vehicleRefSurface = new CustomVehicleSurfaceModel(parall, solarPanels);

Aerodynamic properties initialization

// AERODYNAMIC PROPERTIES (CONSTANT COEFFICIENTS)
final double cd = 2.0;
final double cl = 0.;
final CustomAerodynamicProperties aerodynamicProperties =
   new CustomAerodynamicProperties(vehicleRefSurface, cd, cl);

Note: we need the shape model previously defined

Radiative properties initialization

// RADIATIVE PROPERTIES
final double ka = 1.0;
final double ks = 0.0;
final double kd = 0.0;
final RadiativeProperty rp = new RadiativeProperty(ka, ks, kd);

final double absorptionCoef = 1.0;
final double specularCoef = 0.0;
final double diffuseCoef = 0.0;
final RadiativeIRProperty rpIr =
   new RadiativeIRProperty(absorptionCoef, specularCoef, diffuseCoef);

final CustomRadiativeProperties radiativeProperties =
   new CustomRadiativeProperties(rp, rpIr, vehicleRefSurface);

Note: we need the shape model previously defined

Vehicle initialization

At last, when all sub-objects are available, we have just to write this:

final CustomVehicle vehicle =
   new CustomVehicle(dryMassProperty, aerodynamicProperties,
                     radiativeProperties, enginesList, fuelTankList);

Note: of course, possible to put null to some of them except for dry mass properties.

Display

With the previous initialization and by clicking on the engines and/or tanks for more information, we will have this display:

GPVehicle.png GPVehiclePropulsiveProperties.png

How to use it

To get a GENOPUS CustomVehicle object, we will just have to call for the getPatriusObject() method as below:

CustomVehicle vehicle = veh.getPatriusObject();

How it is stored

Here is the XML format for such a vehicle:

  <Vehicle name="My_Vehicle">
    <Boolean name="hasMassProperties">true</Boolean>
    <MassProperties name="massProperties">
      <Real name="dryMass" unit="kg">1.0E3</Real>
    </MassProperties>
    <Boolean name="hasPropulsiveProperties">true</Boolean>
    <PropulsiveProperties name="PropulsiveProperties">
      <Real name="ergMass" unit="kg">5.0E2</Real>
      <ComponentList name="listOfEngines">
        <!--Amount of items-->
        <Integer name="nbItems">2</Integer>
        <ComponentListItem name="Item_1">
          <Engine name="Engine">
            <String name="name">OCS</String>
            <Real name="isp" unit="s">3.2E2</Real>
            <Real name="thrust" unit="N">1.0E3</Real>
          </Engine>
        </ComponentListItem>
        <ComponentListItem name="Item_2">
          <Engine name="Engine">
            <String name="name">ACS</String>
            <Real name="isp" unit="s">1.5E2</Real>
            <Real name="thrust" unit="N">2.7E2</Real>
          </Engine>
        </ComponentListItem>
      </ComponentList>
      <ComponentList name="listOfTanks">
        <!--Amount of items-->
        <Integer name="nbItems">1</Integer>
        <ComponentListItem name="Item_1">
          <FuelTank name="Fuel_Tank">
            <String name="name">Tank1</String>
            <Real name="propMass" unit="kg">5.0E2</Real>
          </FuelTank>
        </ComponentListItem>
      </ComponentList>
    </PropulsiveProperties>
    <Boolean name="hasAerodynamicProperties">true</Boolean>
    <AerodynamicProperties name="AerodynamicProperties">
      <Real name="dragCoefficient">2.0E0</Real>
      <Real name="liftCoefficient">0.0E0</Real>
    </AerodynamicProperties>
    <Boolean name="hasRadiativeProperties">false</Boolean>
    <Shape name="VehicleShape">
      <String name="shapeType">Parallelepiped</String>
      <String name="shapeDefinitionType">Surface</String>
      <Real name="sx" unit="m^2">4.0E0</Real>
      <Real name="sy" unit="m^2">1.0E0</Real>
      <Real name="sz" unit="m^2">2.0E0</Real>
      <Boolean name="withSolarPanels">false</Boolean>
    </Shape>
  </Vehicle>