chenqinghong
2024-05-07 3ec06a830367465068963156dcc1d8e522571c13
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
Quintiq file version 2.0
#parent: #root
Method UpdateUnitPeriod (
  MacroPlan macroplan,
  UnitPeriod unitperiod,
  Boolean updatecapacity,
  Real maxload,
  Real efficiency,
  Number nrofunit,
  Duration maintenance,
  Real mincapacity,
  Real maxcapacity
)
{
  Description: 'Update maxload percetange for unitcapacity or unitavailability'
  TextBody:
  [*
    if ( updatecapacity )
    {
      if( unitperiod.istype( UnitPeriodTime )  )
      {
        upt := unitperiod.astype( UnitPeriodTime );
        shiftpattern := select( macroplan, ShiftPattern, sf, sf.Name()='24x7' ); //always use 24x7,keep it simple for capacity calculation
        UnitAvailability::CreateOrUpdateForUnitPeriodTime( upt, true, upt.Period_MP().TimeUnit(), 
                                                           maintenance, true, efficiency, false, 1.0,
                                                           true, shiftpattern, true, maxload,
                                                           true, nrofunit, false, 
                                                           false, 0.0 );
                                                           
      }  
      else if ( unitperiod.istype( UnitPeriodQuantity ) )
      {
        upt := unitperiod.astype( UnitPeriodQuantity );
        UnitCapacity::CreateOrUpdateForUnitPeriodQuantity( upt, true, upt.Period_MP().TimeUnit(), 
                                                           mincapacity, maxcapacity, true, 
                                                           maxload, true, nrofunit, false );
      
      }
    }
  *]
  InterfaceProperties { Accessibility: 'Module' }
}