Line data Source code
1 : !------------------------------------------------------------------------------
2 : ! Harmonized Emissions Component (HEMCO) !
3 : !------------------------------------------------------------------------------
4 : !BOP
5 : !
6 : ! !MODULE: hco_scale_mod.F90
7 : !
8 : ! !DESCRIPTION: Module hco\_scale\_mod contains a collection of
9 : ! routines to uniformly scale emissions by species-specific scale
10 : ! scale factors.
11 : !\\
12 : !\\
13 : ! !INTERFACE:
14 : !
15 : MODULE HCO_Scale_Mod
16 : !
17 : ! !USES:
18 : !
19 : USE HCO_Error_Mod
20 :
21 : IMPLICIT NONE
22 : PRIVATE
23 : !
24 : ! !PUBLIC MEMBER FUNCTIONS:
25 : !
26 : PUBLIC :: HCO_ScaleInit
27 : PUBLIC :: HCO_ScaleGet
28 : PUBLIC :: HCO_ScaleArr
29 : PUBLIC :: HCO_ScaleFinal
30 : !
31 : ! !PRIVATE MEMBER FUNCTIONS:
32 : !
33 : PRIVATE :: HCO_ScaleArr3D_sp
34 : PRIVATE :: HCO_ScaleArr3D_dp
35 : PRIVATE :: HCO_ScaleArr2D_sp
36 : PRIVATE :: HCO_ScaleArr2D_dp
37 : PRIVATE :: HCO_ScaleArr1D_sp
38 : PRIVATE :: HCO_ScaleArr1D_dp
39 : !
40 : ! !PRIVATE VARIABLES:
41 : !
42 : REAL(hp), ALLOCATABLE :: SpcScal(:)
43 : !
44 : ! !INTERFACES:
45 : !
46 : INTERFACE HCO_ScaleArr
47 : MODULE PROCEDURE HCO_ScaleArr3D_dp
48 : MODULE PROCEDURE HCO_ScaleArr3D_sp
49 : MODULE PROCEDURE HCO_ScaleArr2D_dp
50 : MODULE PROCEDURE HCO_ScaleArr2D_sp
51 : MODULE PROCEDURE HCO_ScaleArr1D_dp
52 : MODULE PROCEDURE HCO_ScaleArr1D_sp
53 : END INTERFACE
54 : !
55 : ! !REVISION HISTORY:
56 : ! 11 May 2017 - C. Keller - Initial version
57 : ! See https://github.com/geoschem/hemco for complete history
58 : !EOP
59 : !------------------------------------------------------------------------------
60 : !BOC
61 : CONTAINS
62 : !EOC
63 : !------------------------------------------------------------------------------
64 : ! Harmonized Emissions Component (HEMCO) !
65 : !------------------------------------------------------------------------------
66 : !BOP
67 : !
68 : ! !IROUTINE: HCO_ScaleInit
69 : !
70 : ! !DESCRIPTION: Function HCO\_ScaleInit initialized the uniform scale
71 : ! factors for every HEMCO species.
72 : !\\
73 : !\\
74 : ! !INTERFACE:
75 : !
76 0 : SUBROUTINE HCO_ScaleInit( HcoState, RC )
77 : !
78 : ! !USES
79 : !
80 : USE HCO_STATE_MOD, ONLY : HCO_STATE
81 : USE HCO_EXTLIST_MOD, ONLY : GetExtOpt
82 : !
83 : ! !INPUT PARAMETERS:
84 : !
85 : TYPE(HCO_State), POINTER :: HcoState ! HEMCO state object
86 : !
87 : ! !OUTPUT PARAMETERS:
88 : !
89 : INTEGER, INTENT(INOUT) :: RC
90 : !
91 : ! !REMARKS:
92 : !
93 : ! !REVISION HISTORY:
94 : ! 11 May 2017 - C. Keller - Initial version
95 : ! See https://github.com/geoschem/hemco for complete history
96 : !EOP
97 : !------------------------------------------------------------------------------
98 : !BOC
99 : !
100 : ! !LOCAL VARIABLES:
101 : !
102 : INTEGER :: N
103 : LOGICAL :: FOUND
104 : CHARACTER(LEN=255) :: iName, MSG, LOC
105 : REAL(hp) :: ScalFactor
106 :
107 : !--------------------------
108 : ! HCO_ScaleInit begins here
109 : !--------------------------
110 0 : LOC = 'HCO_ScaleInit (HCO_SCALE_MOD.F90)'
111 :
112 : ! Allocate scale factors and initialize all scale factors to 1.0
113 0 : IF ( ALLOCATED(SpcScal) ) DEALLOCATE(SpcScal)
114 0 : ALLOCATE( SpcScal( HcoState%nSpc ) )
115 0 : SpcScal(:) = 1.0_hp
116 :
117 : ! Search for scale factors in HEMCO configuration file
118 0 : DO N = 1, HcoState%nSpc
119 0 : iName = 'EmisScale_'//TRIM(HcoState%Spc(N)%SpcName)
120 : CALL GetExtOpt( HcoState%Config, -999, iName, OptValHp=ScalFactor, &
121 0 : FOUND=FOUND, RC=RC )
122 0 : IF ( RC /= HCO_SUCCESS ) THEN
123 0 : CALL HCO_ERROR( 'ERROR 0', RC, THISLOC=LOC )
124 0 : RETURN
125 : ENDIF
126 :
127 : ! If there is a scale factor, update scale vector accordingly
128 0 : IF ( FOUND ) THEN
129 0 : SpcScal(N) = ScalFactor
130 :
131 : ! Verbose mode
132 0 : IF ( HCO_IsVerb( HcoState%Config%Err ) ) THEN
133 0 : WRITE (MSG,*) 'Will use universal emission scale factor for ', &
134 0 : TRIM(HcoState%Spc(N)%SpcName),': ',SpcScal(N)
135 0 : CALL HCO_MSG ( HcoState%Config%Err, MSG )
136 : ENDIF
137 : ENDIF
138 : ENDDO
139 :
140 : ! Return w/ success
141 0 : RC = HCO_SUCCESS
142 :
143 : END SUBROUTINE HCO_ScaleInit
144 : !EOC
145 : !------------------------------------------------------------------------------
146 : ! Harmonized Emissions Component (HEMCO) !
147 : !------------------------------------------------------------------------------
148 : !BOP
149 : !
150 : ! !IROUTINE: HCO_ScaleGet
151 : !
152 : ! !DESCRIPTION: Function HCO\_ScaleGet returns the scale factor for the given
153 : ! species ID.
154 : !\\
155 : !\\
156 : ! !INTERFACE:
157 : !
158 0 : FUNCTION HCO_ScaleGet ( HcoID ) RESULT ( ScalFact )
159 : !
160 : ! !USES
161 : !
162 : !
163 : ! !INPUT PARAMETERS:
164 : !
165 : INTEGER, INTENT(IN ) :: HcoID ! HEMCO species ID
166 : !
167 : ! !RESULT:
168 : !
169 : REAL(hp) :: ScalFact
170 : !
171 : ! !REMARKS:
172 : !
173 : ! !REVISION HISTORY:
174 : ! 11 May 2017 - C. Keller - Initial version
175 : ! See https://github.com/geoschem/hemco for complete history
176 : !EOP
177 : !------------------------------------------------------------------------------
178 : !BOC
179 : !
180 : ! !LOCAL VARIABLES:
181 : !
182 : !--------------------------
183 : ! HCO_ScaleGet begins here
184 : !--------------------------
185 0 : IF ( HcoID > SIZE(SpcScal,1) .OR. HcoID <= 0 ) THEN
186 : ScalFact = 1.0_hp
187 : ELSE
188 0 : ScalFact = SpcScal(HcoID)
189 : ENDIF
190 :
191 0 : END FUNCTION HCO_ScaleGet
192 : !EOC
193 : !------------------------------------------------------------------------------
194 : ! Harmonized Emissions Component (HEMCO) !
195 : !------------------------------------------------------------------------------
196 : !BOP
197 : !
198 : ! !IROUTINE: HCO_ScaleArr3D_sp
199 : !
200 : ! !DESCRIPTION: Function HCO\_ScaleArr3D scales the 3D array.
201 : !\\
202 : !\\
203 : ! !INTERFACE:
204 : !
205 0 : SUBROUTINE HCO_ScaleArr3D_sp( HcoState, HcoID, Arr3D, RC )
206 : !
207 : ! !USES
208 : !
209 : USE HCO_STATE_MOD, ONLY : HCO_STATE
210 : USE HCO_EXTLIST_MOD, ONLY : GetExtOpt
211 : !
212 : ! !INPUT PARAMETERS:
213 : !
214 : TYPE(HCO_State), POINTER :: HcoState ! HEMCO state object
215 : INTEGER, INTENT(IN ) :: HcoID ! Species ID
216 : !
217 : ! !INPUT/OUTPUT PARAMETERS:
218 : !
219 : REAL(sp), INTENT(INOUT) :: Arr3D( HcoState%NX, &
220 : HcoState%NY, &
221 : HcoState%NZ )
222 : INTEGER , INTENT(INOUT) :: RC
223 : !
224 : ! !REMARKS:
225 : !
226 : ! !REVISION HISTORY:
227 : ! 11 May 2017 - C. Keller - Initial version
228 : ! See https://github.com/geoschem/hemco for complete history
229 : !EOP
230 : !------------------------------------------------------------------------------
231 : !BOC
232 : !
233 : ! !LOCAL VARIABLES:
234 : !
235 : REAL(hp) :: ScalFact
236 : CHARACTER(LEN=255) :: MSG
237 :
238 : !--------------------------
239 : ! HCO_ScaleArr3D_sp begins here
240 : !--------------------------
241 0 : ScalFact = HCO_ScaleGet( HcoID )
242 0 : IF ( .NOT. HcoState%Options%ScaleEmis ) ScalFact = 1.0_hp
243 0 : IF ( ScalFact /= 1.0_hp ) THEN
244 0 : Arr3D = Arr3D * ScalFact
245 : ! Verbose mode
246 0 : IF ( HCO_IsVerb( HcoState%Config%Err ) ) THEN
247 0 : WRITE(MSG,*) '3D field scaled by factor of ',ScalFact
248 0 : CALL HCO_MSG ( HcoState%Config%Err, MSG )
249 : ENDIF
250 : ENDIF
251 :
252 : ! Return w/ success
253 0 : RC = HCO_SUCCESS
254 :
255 0 : END SUBROUTINE HCO_ScaleArr3D_sp
256 : !EOC
257 : !------------------------------------------------------------------------------
258 : ! Harmonized Emissions Component (HEMCO) !
259 : !------------------------------------------------------------------------------
260 : !BOP
261 : !
262 : ! !IROUTINE: HCO_ScaleArr3D_dp
263 : !
264 : ! !DESCRIPTION: Function HCO\_ScaleArr3D scales the 3D array.
265 : !\\
266 : !\\
267 : ! !INTERFACE:
268 : !
269 0 : SUBROUTINE HCO_ScaleArr3D_dp( HcoState, HcoID, Arr3D, RC )
270 : !
271 : ! !USES
272 : !
273 : USE HCO_STATE_MOD, ONLY : HCO_STATE
274 : USE HCO_EXTLIST_MOD, ONLY : GetExtOpt
275 : !
276 : ! !INPUT PARAMETERS:
277 : !
278 : TYPE(HCO_State), POINTER :: HcoState ! HEMCO state object
279 : INTEGER, INTENT(IN ) :: HcoID ! Species ID
280 : !
281 : ! !INPUT/OUTPUT PARAMETERS:
282 : !
283 : REAL(dp), INTENT(INOUT) :: Arr3D( HcoState%NX, &
284 : HcoState%NY, &
285 : HcoState%NZ )
286 : INTEGER , INTENT(INOUT) :: RC
287 : !
288 : ! !REMARKS:
289 : !
290 : ! !REVISION HISTORY:
291 : ! 11 May 2017 - C. Keller - Initial version
292 : ! See https://github.com/geoschem/hemco for complete history
293 : !EOP
294 : !------------------------------------------------------------------------------
295 : !BOC
296 : !
297 : ! !LOCAL VARIABLES:
298 : !
299 : REAL(hp) :: ScalFact
300 : CHARACTER(LEN=255) :: MSG
301 :
302 : !--------------------------
303 : ! HCO_ScaleArr3D_dp begins here
304 : !--------------------------
305 0 : ScalFact = HCO_ScaleGet( HcoID )
306 0 : IF ( .NOT. HcoState%Options%ScaleEmis ) ScalFact = 1.0_hp
307 0 : IF ( ScalFact /= 1.0_hp ) THEN
308 0 : Arr3D = Arr3D * ScalFact
309 : ! Verbose mode
310 0 : IF ( HCO_IsVerb( HcoState%Config%Err ) ) THEN
311 0 : WRITE(MSG,*) '3D field scaled by factor of ',ScalFact
312 0 : CALL HCO_MSG ( HcoState%Config%Err, MSG )
313 : ENDIF
314 : ENDIF
315 :
316 : ! Return w/ success
317 0 : RC = HCO_SUCCESS
318 :
319 0 : END SUBROUTINE HCO_ScaleArr3D_dp
320 : !EOC
321 : !------------------------------------------------------------------------------
322 : ! Harmonized Emissions Component (HEMCO) !
323 : !------------------------------------------------------------------------------
324 : !BOP
325 : !
326 : ! !IROUTINE: HCO_ScaleArr2D_sp
327 : !
328 : ! !DESCRIPTION: Function HCO\_ScaleArr2D scales the 2D array.
329 : !\\
330 : !\\
331 : ! !INTERFACE:
332 : !
333 0 : SUBROUTINE HCO_ScaleArr2D_sp( HcoState, HcoID, Arr2D, RC )
334 : !
335 : ! !USES
336 : !
337 : USE HCO_STATE_MOD, ONLY : HCO_STATE
338 : USE HCO_EXTLIST_MOD, ONLY : GetExtOpt
339 : !
340 : ! !INPUT PARAMETERS:
341 : !
342 : TYPE(HCO_State), POINTER :: HcoState ! HEMCO state object
343 : INTEGER, INTENT(IN ) :: HcoID ! Species ID
344 : !
345 : ! !INPUT/OUTPUT PARAMETERS:
346 : !
347 : REAL(sp), INTENT(INOUT) :: Arr2D( HcoState%NX, &
348 : HcoState%NY )
349 : INTEGER , INTENT(INOUT) :: RC
350 : !
351 : ! !REMARKS:
352 : !
353 : ! !REVISION HISTORY:
354 : ! 11 May 2017 - C. Keller - Initial version
355 : ! See https://github.com/geoschem/hemco for complete history
356 : !EOP
357 : !------------------------------------------------------------------------------
358 : !BOC
359 : !
360 : ! !LOCAL VARIABLES:
361 : !
362 : REAL(hp) :: ScalFact
363 : CHARACTER(LEN=255) :: MSG
364 :
365 : !--------------------------
366 : ! HCO_ScaleArr2D begins here
367 : !--------------------------
368 0 : ScalFact = HCO_ScaleGet( HcoID )
369 0 : IF ( .NOT. HcoState%Options%ScaleEmis ) ScalFact = 1.0_hp
370 0 : IF ( ScalFact /= 1.0_hp ) THEN
371 0 : Arr2D = Arr2D * ScalFact
372 : ! Verbose mode
373 0 : IF ( HCO_IsVerb( HcoState%Config%Err ) ) THEN
374 0 : WRITE(MSG,*) '2D field scaled by factor of ',ScalFact
375 0 : CALL HCO_MSG ( HcoState%Config%Err, MSG )
376 : ENDIF
377 : ENDIF
378 :
379 : ! Return w/ success
380 0 : RC = HCO_SUCCESS
381 :
382 0 : END SUBROUTINE HCO_ScaleArr2D_sp
383 : !EOC
384 : !------------------------------------------------------------------------------
385 : ! Harmonized Emissions Component (HEMCO) !
386 : !------------------------------------------------------------------------------
387 : !BOP
388 : !
389 : ! !IROUTINE: HCO_ScaleArr2D_dp
390 : !
391 : ! !DESCRIPTION: Function HCO\_ScaleArr2D scales the 2D array.
392 : !\\
393 : !\\
394 : ! !INTERFACE:
395 : !
396 0 : SUBROUTINE HCO_ScaleArr2D_dp( HcoState, HcoID, Arr2D, RC )
397 : !
398 : ! !USES
399 : !
400 : USE HCO_STATE_MOD, ONLY : HCO_STATE
401 : USE HCO_EXTLIST_MOD, ONLY : GetExtOpt
402 : !
403 : ! !INPUT PARAMETERS:
404 : !
405 : TYPE(HCO_State), POINTER :: HcoState ! HEMCO state object
406 : INTEGER, INTENT(IN ) :: HcoID ! Species ID
407 : !
408 : ! !INPUT/OUTPUT PARAMETERS:
409 : !
410 : REAL(dp), INTENT(INOUT) :: Arr2D( HcoState%NX, &
411 : HcoState%NY )
412 : INTEGER , INTENT(INOUT) :: RC
413 : !
414 : ! !REMARKS:
415 : !
416 : ! !REVISION HISTORY:
417 : ! 11 May 2017 - C. Keller - Initial version
418 : ! See https://github.com/geoschem/hemco for complete history
419 : !EOP
420 : !------------------------------------------------------------------------------
421 : !BOC
422 : !
423 : ! !LOCAL VARIABLES:
424 : !
425 : REAL(hp) :: ScalFact
426 : CHARACTER(LEN=255) :: MSG
427 :
428 : !--------------------------
429 : ! HCO_ScaleArr2D begins here
430 : !--------------------------
431 0 : ScalFact = HCO_ScaleGet( HcoID )
432 0 : IF ( .NOT. HcoState%Options%ScaleEmis ) ScalFact = 1.0_hp
433 0 : IF ( ScalFact /= 1.0_hp ) THEN
434 0 : Arr2D = Arr2D * ScalFact
435 : ! Verbose mode
436 0 : IF ( HCO_IsVerb( HcoState%Config%Err ) ) THEN
437 0 : WRITE(MSG,*) '2D field scaled by factor of ',ScalFact
438 0 : CALL HCO_MSG ( HcoState%Config%Err, MSG )
439 : ENDIF
440 : ENDIF
441 :
442 : ! Return w/ success
443 0 : RC = HCO_SUCCESS
444 :
445 0 : END SUBROUTINE HCO_ScaleArr2D_dp
446 : !EOC
447 : !------------------------------------------------------------------------------
448 : ! Harmonized Emissions Component (HEMCO) !
449 : !------------------------------------------------------------------------------
450 : !BOP
451 : !
452 : ! !IROUTINE: HCO_ScaleArr1D_sp
453 : !
454 : ! !DESCRIPTION: Function HCO\_ScaleArr1D scales a single value.
455 : !\\
456 : !\\
457 : ! !INTERFACE:
458 : !
459 0 : SUBROUTINE HCO_ScaleArr1D_sp( HcoState, HcoID, Arr1D, RC )
460 : !
461 : ! !USES
462 : !
463 : USE HCO_STATE_MOD, ONLY : HCO_STATE
464 : USE HCO_EXTLIST_MOD, ONLY : GetExtOpt
465 : !
466 : ! !INPUT PARAMETERS:
467 : !
468 : TYPE(HCO_State), POINTER :: HcoState ! HEMCO state object
469 : INTEGER, INTENT(IN ) :: HcoID ! Species ID
470 : !
471 : ! !INPUT/OUTPUT PARAMETERS:
472 : !
473 : REAL(sp), INTENT(INOUT) :: Arr1D
474 : INTEGER , INTENT(INOUT) :: RC
475 : !
476 : ! !REMARKS:
477 : !
478 : ! !REVISION HISTORY:
479 : ! 11 May 2017 - C. Keller - Initial version
480 : ! See https://github.com/geoschem/hemco for complete history
481 : !EOP
482 : !------------------------------------------------------------------------------
483 : !BOC
484 : !
485 : ! !LOCAL VARIABLES:
486 : !
487 : REAL(hp) :: ScalFact
488 : CHARACTER(LEN=255) :: MSG
489 :
490 : !--------------------------
491 : ! HCO_ScaleArr2D begins here
492 : !--------------------------
493 0 : ScalFact = HCO_ScaleGet( HcoID )
494 0 : IF ( .NOT. HcoState%Options%ScaleEmis ) ScalFact = 1.0_hp
495 0 : IF ( ScalFact /= 1.0_hp ) THEN
496 0 : Arr1D = Arr1D * ScalFact
497 : ! Verbose mode
498 : !IF ( HCO_IsVerb( HcoState%Config%Err ) ) THEN
499 : ! WRITE(MSG,*) '1D field scaled by factor of ',ScalFact
500 : ! CALL HCO_MSG ( HcoState%Config%Err, MSG )
501 : !ENDIF
502 : ENDIF
503 :
504 : ! Return w/ success
505 0 : RC = HCO_SUCCESS
506 :
507 0 : END SUBROUTINE HCO_ScaleArr1D_sp
508 : !EOC
509 : !------------------------------------------------------------------------------
510 : ! Harmonized Emissions Component (HEMCO) !
511 : !------------------------------------------------------------------------------
512 : !BOP
513 : !
514 : ! !IROUTINE: HCO_ScaleArr1D_dp
515 : !
516 : ! !DESCRIPTION: Function HCO\_ScaleArr1D scales a single value.
517 : !\\
518 : !\\
519 : ! !INTERFACE:
520 : !
521 0 : SUBROUTINE HCO_ScaleArr1D_dp( HcoState, HcoID, Arr1D, RC )
522 : !
523 : ! !USES
524 : !
525 : USE HCO_STATE_MOD, ONLY : HCO_STATE
526 : USE HCO_EXTLIST_MOD, ONLY : GetExtOpt
527 : !
528 : ! !INPUT PARAMETERS:
529 : !
530 : TYPE(HCO_State), POINTER :: HcoState ! HEMCO state object
531 : INTEGER, INTENT(IN ) :: HcoID ! Species ID
532 : !
533 : ! !INPUT/OUTPUT PARAMETERS:
534 : !
535 : REAL(dp), INTENT(INOUT) :: Arr1D
536 : INTEGER , INTENT(INOUT) :: RC
537 : !
538 : ! !REMARKS:
539 : !
540 : ! !REVISION HISTORY:
541 : ! 11 May 2017 - C. Keller - Initial version
542 : ! See https://github.com/geoschem/hemco for complete history
543 : !EOP
544 : !------------------------------------------------------------------------------
545 : !BOC
546 : !
547 : ! !LOCAL VARIABLES:
548 : !
549 : REAL(hp) :: ScalFact
550 : CHARACTER(LEN=255) :: MSG
551 :
552 : !--------------------------
553 : ! HCO_ScaleArr2D begins here
554 : !--------------------------
555 0 : ScalFact = HCO_ScaleGet( HcoID )
556 0 : IF ( .NOT. HcoState%Options%ScaleEmis ) ScalFact = 1.0_hp
557 0 : IF ( ScalFact /= 1.0_hp ) THEN
558 0 : Arr1D = Arr1D * ScalFact
559 : ! Verbose mode
560 : !IF ( HCO_IsVerb( HcoState%Config%Err ) ) THEN
561 : ! WRITE(MSG,*) '1D field scaled by factor of ',ScalFact
562 : ! CALL HCO_MSG ( HcoState%Config%Err, MSG )
563 : !ENDIF
564 : ENDIF
565 :
566 : ! Return w/ success
567 0 : RC = HCO_SUCCESS
568 :
569 0 : END SUBROUTINE HCO_ScaleArr1D_dp
570 : !EOC
571 : !------------------------------------------------------------------------------
572 : ! Harmonized Emissions Component (HEMCO) !
573 : !------------------------------------------------------------------------------
574 : !BOP
575 : !
576 : ! !IROUTINE: HCO_ScaleFinal
577 : !
578 : ! !DESCRIPTION: Function HCO\_ScaleFinal finalizes the module.
579 : !\\
580 : !\\
581 : ! !INTERFACE:
582 : !
583 0 : SUBROUTINE HCO_ScaleFinal()
584 : !
585 : ! !USES
586 : !
587 : !
588 : ! !INPUT PARAMETERS:
589 : !
590 : !
591 : ! !REMARKS:
592 : !
593 : ! !REVISION HISTORY:
594 : ! 11 May 2017 - C. Keller - Initial version
595 : ! See https://github.com/geoschem/hemco for complete history
596 : !EOP
597 : !------------------------------------------------------------------------------
598 : !BOC
599 : !
600 : ! !LOCAL VARIABLES:
601 : !
602 : !--------------------------
603 : ! HCO_ScaleFinal begins here
604 : !--------------------------
605 :
606 : ! Allocate scale factors and initialize all scale factors to 1.0
607 0 : IF ( ALLOCATED(SpcScal) ) DEALLOCATE(SpcScal)
608 :
609 0 : END SUBROUTINE HCO_ScaleFinal
610 : !EOC
611 : END MODULE HCO_Scale_Mod
612 : !EOM
|