Coverage for backend/core/auxiliary/models/Solution.py: 100%

11 statements  

« prev     ^ index     » next       coverage.py v7.10.7, created at 2025-11-06 23:27 +0000

1from django.contrib.postgres.fields import ArrayField 

2from django.db import models 

3 

4from core.managers import AccessControlManager 

5 

6class Solution(models.Model): 

7 """Persist property results produced by multi-solves. 

8 

9 Each instance captures values for a specific `solve_index` and property 

10 within a scenario. Steady-state runs typically contribute a single float, 

11 while dynamic solves (standalone or nested inside an MSS iteration) store a 

12 sequence of time-step values. Records are populated following any MSS solve 

13 and later surfaced through serializers, viewsets, and summary tooling. 

14 """ 

15 flowsheet = models.ForeignKey("Flowsheet", on_delete=models.CASCADE, related_name="solutions") 

16 property = models.ForeignKey("PropertyValue", on_delete=models.CASCADE, related_name="solutions", null=True) 

17 scenario = models.ForeignKey("Scenario", on_delete=models.CASCADE, related_name="solutions") 

18 solve_index = models.IntegerField(null=True, default=None) 

19 values = ArrayField( 

20 models.FloatField() 

21 ) 

22 

23 created_at = models.DateTimeField(auto_now_add=True) 

24 

25 objects = AccessControlManager()