returnValue OCPexport::checkConsistency( ) const { // // Consistency checks: // Objective objective; ocp.getObjective( objective ); int hessianApproximation; get( HESSIAN_APPROXIMATION, hessianApproximation ); if ( ocp.hasObjective( ) == true && !((HessianApproximationMode)hessianApproximation == EXACT_HESSIAN && (objective.getNumMayerTerms() == 1 || objective.getNumLagrangeTerms() == 1)) ) { // for Exact Hessian RTI return ACADOERROR( RET_INVALID_OBJECTIVE_FOR_CODE_EXPORT ); } int sensitivityProp; get(DYNAMIC_SENSITIVITY, sensitivityProp); // if( (HessianApproximationMode)hessianApproximation == EXACT_HESSIAN && (ExportSensitivityType) sensitivityProp != THREE_SWEEPS ) { // return ACADOERROR( RET_INVALID_OPTION ); // } DifferentialEquation f; ocp.getModel( f ); // if ( f.isDiscretized( ) == BT_TRUE ) // return ACADOERROR( RET_NO_DISCRETE_ODE_FOR_CODE_EXPORT ); if ( f.getNUI( ) > 0 ) return ACADOERROR( RET_INVALID_ARGUMENTS ); if ( f.getNP( ) > 0 ) return ACADOERRORTEXT(RET_INVALID_ARGUMENTS, "Free parameters are not supported. For the old functionality use OnlineData class."); if ( (HessianApproximationMode)hessianApproximation != GAUSS_NEWTON && (HessianApproximationMode)hessianApproximation != EXACT_HESSIAN ) return ACADOERROR( RET_INVALID_OPTION ); int discretizationType; get( DISCRETIZATION_TYPE,discretizationType ); if ( ( (StateDiscretizationType)discretizationType != SINGLE_SHOOTING ) && ( (StateDiscretizationType)discretizationType != MULTIPLE_SHOOTING ) ) return ACADOERROR( RET_INVALID_OPTION ); return SUCCESSFUL_RETURN; }
returnValue SIMexport::checkConsistency( ) const { // consistency checks: // only time-continuous DAEs without parameter and disturbances supported! DifferentialEquation f; modelData.getModel(f); if ( f.isDiscretized( ) == true ) return ACADOERROR( RET_NO_DISCRETE_ODE_FOR_CODE_EXPORT ); if ( ( f.getNUI( ) > 0 ) || /*( f.getNP( ) > 0 ) ||*/ ( f.getNPI( ) > 0 ) || ( f.getNW( ) > 0 ) ) return ACADOERROR( RET_ONLY_STATES_AND_CONTROLS_FOR_CODE_EXPORT ); int mode; get( IMPLICIT_INTEGRATOR_MODE, mode ); if( (ImplicitIntegratorMode) mode == LIFTED ) return ACADOERROR( RET_NOT_IMPLEMENTED_YET ); return SUCCESSFUL_RETURN; }
returnValue SIMexport::checkConsistency( ) const { // Number of differential state derivatives must be either zero or equal to the number of differential states: if( !modelData.checkConsistency() ) { return ACADOERROR( RET_INVALID_OPTION ); } // consistency checks: // only time-continuous DAEs without parameter and disturbances supported! DifferentialEquation f; modelData.getModel(f); if ( f.isDiscretized( ) == BT_TRUE ) return ACADOERROR( RET_NO_DISCRETE_ODE_FOR_CODE_EXPORT ); if ( ( f.getNUI( ) > 0 ) || /*( f.getNP( ) > 0 ) ||*/ ( f.getNPI( ) > 0 ) || ( f.getNW( ) > 0 ) ) return ACADOERROR( RET_ONLY_STATES_AND_CONTROLS_FOR_CODE_EXPORT ); // only equidistant evaluation grids supported! return SUCCESSFUL_RETURN; }