Cizz22 3 months ago
parent 49c2a6e7e3
commit afdba57174

@ -99,13 +99,10 @@
} }
}, },
{ {
"k_of_n": { "parallel": [
"k": 1,
"components": [
"3DCS-CAB014A", "3DCS-CAB014A",
"3DCS-CAB014B" "3DCS-CAB014B"
] ]
}
}, },
"3DCS-CAB015", "3DCS-CAB015",
"3DCS-CO001", "3DCS-CO001",

@ -0,0 +1,25 @@
from fastapi import APIRouter
from src.aeros_contribution.service import update_contribution_bulk_mappings
from src.database.core import DbSession
from src.models import StandardResponse
router = APIRouter()
active_simulations = {}
@router.get("", response_model=StandardResponse[None])
async def get_all_simulation(db_session: DbSession):
"""Get all simulation."""
simulation_id = "b2dc96df-4d1f-4616-88ed-73ea9dfd62ae"
results = await update_contribution_bulk_mappings(db_session=db_session, simulation_id=simulation_id)
return {
"data": results,
"status": "success",
"message": "Simulations result retrieved successfully",
}

@ -199,6 +199,7 @@ def compute_all_importance_measures(structure: Structure, availabilities: Dict[s
# Get all components in the system # Get all components in the system
all_components = get_all_components(structure) all_components = get_all_components(structure)
# Check for missing components # Check for missing components
missing_components = all_components - set(normalized_availabilities.keys()) missing_components = all_components - set(normalized_availabilities.keys())
if missing_components: if missing_components:
@ -206,8 +207,10 @@ def compute_all_importance_measures(structure: Structure, availabilities: Dict[s
for comp in missing_components: for comp in missing_components:
normalized_availabilities[comp] = 1.0 normalized_availabilities[comp] = 1.0
# Calculate system baseline availability # Calculate system baseline availability
system_avail = system_availability(structure, normalized_availabilities) system_avail = system_availability(structure, normalized_availabilities)
# Calculate importance measures for each component # Calculate importance measures for each component
results = {} results = {}
@ -333,13 +336,17 @@ async def update_contribution_bulk_mappings(*, db_session, simulation_id):
# Round to reasonable precision for database storage # Round to reasonable precision for database storage
eq_importance = importance.get(calc.aeros_node.node_name, {}) eq_importance = importance.get(calc.aeros_node.node_name, {})
if not eq_importance: if not eq_importance:
continue continue
calc.contribution = importance.get(calc.aeros_node.node_name).get('birnbaum_importance', 0) calc.contribution = eq_importance.get('birnbaum_importance', 0)
calc.criticality = importance.get(calc.aeros_node.node_name).get('criticality_importance', 0) calc.criticality = eq_importance.get('criticality_importance', 0)
calc.contribution_factor = importance.get(calc.aeros_node.node_name).get('fussell_vesely_importance', 0) calc.contribution_factor = eq_importance.get('fussell_vesely_importance', 0)
await db_session.commit() await db_session.commit()
return importance
return importance

@ -259,13 +259,25 @@ async def calculate_plant_eaf(
db_session=db_session, simulation_id=simulation_id, node_id="plant" db_session=db_session, simulation_id=simulation_id, node_id="plant"
) )
is_oh_from_aeros = (plant_calc_data.total_uptime + plant_calc_data.total_downtime + offset) > oh_interval is_oh_from_aeros = (
plant_calc_data.total_uptime + plant_calc_data.total_downtime + offset
) > oh_interval
seasonal_outage = (mo_downtime*24 + po_downtime*24) if is_oh_from_aeros else mo_downtime*24 # Calculate outages
forced_outage = (plant_calc_data.total_downtime - po_downtime*24) if is_oh_from_aeros else plant_calc_data.total_downtime if is_oh_from_aeros:
total_uptime = plant_calc_data.total_uptime - mo_downtime*24 seasonal_outage = (mo_downtime + po_downtime) * 24
forced_outage = max(0, plant_calc_data.total_downtime - (po_downtime * 24))
else:
seasonal_outage = mo_downtime * 24
forced_outage = max(0, plant_calc_data.total_downtime)
# Adjust uptime
total_uptime = max(0, plant_calc_data.total_uptime - (mo_downtime * 24))
# Total period time
total_period_time = total_uptime + seasonal_outage + forced_outage total_period_time = total_uptime + seasonal_outage + forced_outage
eaf, efor, sof, edh = calculate_eaf( eaf, efor, sof, edh = calculate_eaf(
available_hours=total_uptime, available_hours=total_uptime,
period_hours=total_period_time, period_hours=total_period_time,

@ -9,6 +9,7 @@ from src.aeros_simulation.router import router as aeros_simulation_router, airfl
from src.auth.service import JWTBearer from src.auth.service import JWTBearer
from src.dashboard_model.router import router as dashboard_model_router from src.dashboard_model.router import router as dashboard_model_router
from src.aeros_equipment.router import router as aeros_equipment_router from src.aeros_equipment.router import router as aeros_equipment_router
from src.aeros_contribution.router import router as aeros_contribution_router
class ErrorMessage(BaseModel): class ErrorMessage(BaseModel):
msg: str msg: str
@ -48,6 +49,8 @@ aeros_routes = APIRouter(prefix="/aeros")
aeros_routes.include_router(aeros_simulation_router, prefix="/simulation") aeros_routes.include_router(aeros_simulation_router, prefix="/simulation")
aeros_routes.include_router(aeros_project_router, prefix="/project") aeros_routes.include_router(aeros_project_router, prefix="/project")
aeros_routes.include_router(aeros_equipment_router, prefix="/equipment") aeros_routes.include_router(aeros_equipment_router, prefix="/equipment")
aeros_routes.include_router(aeros_contribution_router, prefix="/contribution")
authenticated_api_router.include_router(aeros_routes) authenticated_api_router.include_router(aeros_routes)

Loading…
Cancel
Save