/*
 * This model defines a mapping between a logical ROOM model and a physical model (nodes and threads).
 * 
 * <p>Hint: Press F3 to open declaration of selected element or import</p>
 */
MappingModel ReferenceModelCPP_Mapping {
	
	import TemplatePhysical.* from "Physical.etphys"
	import TemplateModel.* from "ReferenceCPP_Main.room"

	Mapping ReferenceCPP_Main.LogSys -> TemplatePhysicalSystem {
		SubSystemMapping subSystemRef -> node {
			ThreadMapping defaultThread -> DefaultPhysicalThread
		}
	}

}