7373 },
7474 {
7575 "name" : " producers_required_attributes_are_set" ,
76- "description" : " Report errors if the required attributes of producer assets are not set." ,
76+ "description" : " Report errors if the required attributes of heat producer assets are not set. HeatProducer also includes GeothermalSource and ResidualHeatSource " ,
7777 "type" : " error" ,
7878 "message" : " Required Attribute Not Set" ,
7979 "selects" : [{
8080 "function" : " get" ,
8181 "alias" : " producers" ,
8282 "args" : {
83- "type" : [" GeothermalSource" , " ResidualHeatSource" ]
83+ "type" : [" HeatProducer" ],
84+ "exclude_type" : [" SolarCollector" ]
8485 }
8586 }
8687 ],
301302 "resultMsgJSON" : true
302303 }
303304 }
305+ },
306+ {
307+ "name" : " investmentCosts_EUR_MW_or_kW_are_set" ,
308+ "description" : " Report errors if costInformation.investmentCosts [EUR/MW] or [EUR/kW] are not set or incorrectly set for the defined assets." ,
309+ "type" : " error" ,
310+ "message" : " Investment Costs [EUR/MW] or [EUR/kW] is incomplete or incorrect" ,
311+ "selects" : [{
312+ "function" : " get" ,
313+ "alias" : " assets" ,
314+ "args" : {
315+ "type" : [" HeatPump" , " HeatProducer" , " ATES" , " HeatExchange" ]
316+ }
317+ }
318+ ],
319+ "check" : {
320+ "function" : " attributes_not_null" ,
321+ "dataset" : " assets" ,
322+ "args" : {
323+ "checks" : [
324+ { "attribute" : " costInformation.investmentCosts.value" , "count_as_null" : [0.0 ] }
325+ ],
326+ "resultMsgJSON" : true
327+ },
328+ "and" : [
329+ {
330+ "function" : " attributes_are_valid" ,
331+ "args" : {
332+ "reference_path" : " costInformation.investmentCosts.profileQuantityAndUnit" ,
333+ "checks" : [
334+ { "attribute" : " unit" , "count_as_valid" : " EURO" },
335+ { "attribute" : " perUnit" , "count_as_valid" : " WATT" },
336+ { "attribute" : " perMultiplier" , "count_as_valid" : [" MEGA" , " KILO" ] },
337+ { "attribute" : " perTimeUnit" , "count_as_valid" : " Unset" }
338+ ],
339+ "resultMsgJSON" : true
340+ }
341+ }
342+ ]
343+ }
344+ },
345+ {
346+ "name" : " investmentCosts_EUR_m3_are_set" ,
347+ "description" : " Report errors if costInformation.investmentCosts [EUR/m3] are not set or incorrectly set for the defined assets." ,
348+ "type" : " error" ,
349+ "message" : " Investment Costs [EUR/m3] is incomplete or incorrect" ,
350+ "selects" : [{
351+ "function" : " get" ,
352+ "alias" : " assets" ,
353+ "args" : {
354+ "type" : [" HeatStorage" ],
355+ "exclude_type" : [" ATES" ]
356+ }
357+ }
358+ ],
359+ "check" : {
360+ "function" : " attributes_not_null" ,
361+ "dataset" : " assets" ,
362+ "args" : {
363+ "checks" : [
364+ { "attribute" : " costInformation.investmentCosts.value" , "count_as_null" : [0.0 ] }
365+ ],
366+ "resultMsgJSON" : true
367+ },
368+ "and" : [
369+ {
370+ "function" : " attributes_are_valid" ,
371+ "args" : {
372+ "reference_path" : " costInformation.investmentCosts.profileQuantityAndUnit" ,
373+ "checks" : [
374+ { "attribute" : " unit" , "count_as_valid" : " EURO" },
375+ { "attribute" : " perUnit" , "count_as_valid" : " CUBIC_METRE" },
376+ { "attribute" : " perMultiplier" , "count_as_valid" : " Unset" },
377+ { "attribute" : " perTimeUnit" , "count_as_valid" : " Unset" }
378+ ],
379+ "resultMsgJSON" : true
380+ }
381+ }
382+ ]
383+ }
384+ },
385+ {
386+ "name" : " variableOperationalCosts_EUR_MWh_are_set" ,
387+ "description" : " Report errors if costInformation.variableOperationalCosts [EUR/MWh] are not set or incorrectly set for the defined assets." ,
388+ "type" : " error" ,
389+ "message" : " Variable Operational Costs [EUR/MWh] is incomplete or incorrect" ,
390+ "selects" : [{
391+ "function" : " get" ,
392+ "alias" : " assets" ,
393+ "args" : {
394+ "type" : [" HeatPump" , " HeatProducer" ]
395+ }
396+ }
397+ ],
398+ "check" : {
399+ "function" : " attributes_not_null" ,
400+ "dataset" : " assets" ,
401+ "args" : {
402+ "checks" : [
403+ { "attribute" : " costInformation.variableOperationalCosts.value" , "count_as_null" : [0.0 ] }
404+ ],
405+ "resultMsgJSON" : true
406+ },
407+ "and" : [
408+ {
409+ "function" : " attributes_are_valid" ,
410+ "args" : {
411+ "reference_path" : " costInformation.variableOperationalCosts.profileQuantityAndUnit" ,
412+ "checks" : [
413+ { "attribute" : " unit" , "count_as_valid" : " EURO" },
414+ { "attribute" : " perUnit" , "count_as_valid" : " WATTHOUR" },
415+ { "attribute" : " perMultiplier" , "count_as_valid" : " MEGA" },
416+ { "attribute" : " perTimeUnit" , "count_as_valid" : " Unset" }
417+ ],
418+ "resultMsgJSON" : true
419+ }
420+ }
421+ ]
422+ }
423+ },
424+ {
425+ "name" : " fixedOperationalCosts_are_set" ,
426+ "description" : " Report errors if costInformation.fixedOperationalCosts [EUR/MW] or [EUR/kW] are not set or incorrectly set for the defined assets." ,
427+ "type" : " error" ,
428+ "message" : " Fixed Operational Costs [EUR/MW] or [EUR/kW] is incomplete or incorrect" ,
429+ "selects" : [{
430+ "function" : " get" ,
431+ "alias" : " assets" ,
432+ "args" : {
433+ "type" : [" HeatExchange" , " ATES" ]
434+ }
435+ }
436+ ],
437+ "check" : {
438+ "function" : " attributes_not_null" ,
439+ "dataset" : " assets" ,
440+ "args" : {
441+ "checks" : [
442+ { "attribute" : " costInformation.fixedOperationalCosts.value" , "count_as_null" : [0.0 ] }
443+ ],
444+ "resultMsgJSON" : true
445+ },
446+ "and" : [
447+ {
448+ "function" : " attributes_are_valid" ,
449+ "args" : {
450+ "reference_path" : " costInformation.fixedOperationalCosts.profileQuantityAndUnit" ,
451+ "checks" : [
452+ { "attribute" : " unit" , "count_as_valid" : " EURO" },
453+ { "attribute" : " perUnit" , "count_as_valid" : " WATT" },
454+ { "attribute" : " perMultiplier" , "count_as_valid" : [" MEGA" , " KILO" ] },
455+ { "attribute" : " perTimeUnit" , "count_as_valid" : " Unset" }
456+ ],
457+ "resultMsgJSON" : true
458+ }
459+ }
460+ ]
461+ }
462+ },
463+ {
464+ "name" : " marginalCosts_are_set" ,
465+ "description" : " Report errors if costInformation.marginalCosts [unitless] are not set or incorrectly set for the defined assets." ,
466+ "type" : " warning" ,
467+ "message" : " Marginal Costs [unitless] used for priority assigment is incomplete or incorrect" ,
468+ "selects" : [{
469+ "function" : " get" ,
470+ "alias" : " assets" ,
471+ "args" : {
472+ "type" : [" HeatProducer" ],
473+ "exclude_type" : [" SolarCollector" ]
474+ }
475+ }
476+ ],
477+ "check" : {
478+ "function" : " attributes_not_null" ,
479+ "dataset" : " assets" ,
480+ "args" : {
481+ "checks" : [
482+ { "attribute" : " costInformation.marginalCosts.value" , "count_as_null" : [0.0 ] }
483+ ],
484+ "resultMsgJSON" : true
485+ },
486+ "and" : [
487+ {
488+ "function" : " attributes_are_valid" ,
489+ "args" : {
490+ "reference_path" : " costInformation.marginalCosts.profileQuantityAndUnit" ,
491+ "checks" : [
492+ { "attribute" : " unit" , "count_as_valid" : " Unset" },
493+ { "attribute" : " perUnit" , "count_as_valid" : " Unset" },
494+ { "attribute" : " perMultiplier" , "count_as_valid" : " Unset" },
495+ { "attribute" : " perTimeUnit" , "count_as_valid" : " Unset" }
496+ ],
497+ "resultMsgJSON" : true
498+ }
499+ }
500+ ]
501+ }
502+ },
503+ {
504+ "name" : " installationCosts_are_set" ,
505+ "description" : " Report warnings if costInformation.installationCosts [EUR] are not set or incorrectly set for the defined assets. TODO: this will be replaced with Fixed Installation Costs and Variable Installation Costs." ,
506+ "type" : " warning" ,
507+ "message" : " Installation Costs [EUR] is incomplete or incorrect" ,
508+ "selects" : [{
509+ "function" : " get" ,
510+ "alias" : " assets" ,
511+ "args" : {
512+ "type" : [" HeatPump" , " HeatProducer" , " HeatStorage" , " HeatExchange" ]
513+ }
514+ }
515+ ],
516+ "check" : {
517+ "function" : " attributes_not_null" ,
518+ "dataset" : " assets" ,
519+ "args" : {
520+ "checks" : [
521+ { "attribute" : " costInformation.installationCosts.value" , "count_as_null" : [0.0 ] }
522+ ],
523+ "resultMsgJSON" : true
524+ },
525+ "and" : [
526+ {
527+ "function" : " attributes_are_valid" ,
528+ "args" : {
529+ "reference_path" : " costInformation.installationCosts.profileQuantityAndUnit" ,
530+ "checks" : [
531+ { "attribute" : " unit" , "count_as_valid" : " EURO" },
532+ { "attribute" : " perUnit" , "count_as_valid" : " Unset" },
533+ { "attribute" : " perMultiplier" , "count_as_valid" : " Unset" },
534+ { "attribute" : " perTimeUnit" , "count_as_valid" : " Unset" }
535+ ],
536+ "resultMsgJSON" : true
537+ }
538+ }
539+ ]
540+ }
304541 }
305542 ]
306543}
0 commit comments