LCOV - code coverage report
Current view: top level - src/microsim/engine - FirstOrderLagModel.cpp (source / functions) Coverage Total Hit
Test: lcov.info Lines: 0.0 % 31 0
Test Date: 2024-11-21 15:56:26 Functions: 0.0 % 9 0

            Line data    Source code
       1              : /****************************************************************************/
       2              : // Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.dev/sumo
       3              : // Copyright (C) 2001-2024 German Aerospace Center (DLR) and others.
       4              : // This program and the accompanying materials are made available under the
       5              : // terms of the Eclipse Public License 2.0 which is available at
       6              : // https://www.eclipse.org/legal/epl-2.0/
       7              : // This Source Code may also be made available under the following Secondary
       8              : // Licenses when the conditions for such availability set forth in the Eclipse
       9              : // Public License 2.0 are satisfied: GNU General Public License, version 2
      10              : // or later which is available at
      11              : // https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html
      12              : // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-or-later
      13              : /****************************************************************************/
      14              : /// @file    FirstOrderLagModel.cpp
      15              : /// @author  Michele Segata
      16              : /// @date    4 Feb 2015
      17              : ///
      18              : // An engine model using a first order lag
      19              : /****************************************************************************/
      20              : 
      21              : #include "FirstOrderLagModel.h"
      22              : #include <microsim/cfmodels/CC_Const.h>
      23              : #include "utils/common/StdDefs.h"
      24              : #include <algorithm>
      25              : 
      26            0 : FirstOrderLagModel::FirstOrderLagModel() : GenericEngineModel(),
      27            0 :     tau_s(0.5), dt_s(0.01) {
      28            0 :     className = "FirstOrderLagModel";
      29            0 :     computeParameters();
      30            0 : }
      31            0 : FirstOrderLagModel::~FirstOrderLagModel() {}
      32              : 
      33            0 : void FirstOrderLagModel::computeParameters() {
      34            0 :     alpha = dt_s / (tau_s + dt_s);
      35            0 :     oneMinusAlpha = 1 - alpha;
      36            0 : }
      37              : 
      38            0 : double FirstOrderLagModel::getRealAcceleration(double speed_mps, double accel_mps2, double reqAccel_mps2, SUMOTime timeStep) {
      39              :     UNUSED_PARAMETER(speed_mps);
      40              :     UNUSED_PARAMETER(timeStep);
      41              :     return std::min(
      42            0 :                maxAcceleration_mpsps,
      43              :                std::max(
      44            0 :                    -maxDeceleration_mpsps,
      45            0 :                    alpha * reqAccel_mps2 + oneMinusAlpha * accel_mps2
      46              :                )
      47            0 :            );
      48              : }
      49              : 
      50            0 : void FirstOrderLagModel::loadParameters(const Parameterised::Map& parameters) {
      51            0 :     parseParameter(parameters, std::string(FOLM_PAR_TAU), tau_s);
      52            0 :     parseParameter(parameters, std::string(FOLM_PAR_DT), dt_s);
      53            0 :     computeParameters();
      54            0 : }
      55              : 
      56            0 : void FirstOrderLagModel::setParameter(const std::string parameter, const std::string& value) {
      57              :     UNUSED_PARAMETER(parameter);
      58              :     UNUSED_PARAMETER(value);
      59            0 : }
      60            0 : void FirstOrderLagModel::setParameter(const std::string parameter, double value) {
      61            0 :     if (parameter == FOLM_PAR_TAU) {
      62            0 :         tau_s = value;
      63              :     }
      64            0 :     if (parameter == FOLM_PAR_DT) {
      65            0 :         dt_s = value;
      66              :     }
      67            0 :     computeParameters();
      68            0 : }
      69            0 : void FirstOrderLagModel::setParameter(const std::string parameter, int value) {
      70              :     UNUSED_PARAMETER(parameter);
      71              :     UNUSED_PARAMETER(value);
      72            0 : }
        

Generated by: LCOV version 2.0-1