/*
 * $Id: Mpi2Enum.java,v 1.11 2000/06/15 13:55:51 yamauchi Exp $
 *     (M\pi)^2 : enumeration for (M\pi)^2
 *	Copyright 1999 By YAMAUCHI Hitoshi 山内 斉 
 *	@author YAMAUCHI Hitoshi 山内 斉
 *
 * 	Mpi2Enum : some selectable name set
 *
 *-- 1999年8月 3日(火)
 *-- 入試問題作成，配点決定，採点，配点調整まで私がやってもいいのだ
 *-- ろうか．入試をなんだと思っているのだろうか．
 */

package jp.ac.tohoku.is.archi.mpi2.sysparam;

/**
 * Mpi2Enum : global constants for (M\pi)^2
 */
public interface Mpi2Enum {
    /**
     * rendering 方法
     */
    public static final int Radiosty_render	= 0;
    public static final int RayTracing_render	= 1;
    public static final int ELSE_render		= 2;

    /**
     * Allocation Scheme
     */
    public static final int Block_Alloc 	= 0;
    public static final int Distributed_Alloc	= 1;
    public static final int Skewed_Alloc	= 2;
    public static final int Random_Alloc	= 3;
    public static final int ELSE_Alloc		= 4;

    /**
     * Shading scheme 
     */
    public static final int FlatShading		= 0;
    public static final int GouroudShading	= 1;
    public static final int ELSE_Shading	= 2;

    /**
     * Ray propagation method (skip method)
     */
    public static final int NoSkip_rayprop		= 0;
    public static final int SobokuSkip_rayprop		= 1;
    public static final int ProximityClouds_rayprop	= 2;
    public static final int ELSE_rayprop		= 3;

    /**
     * Map generation method for proximity clouds method
     */
    public static final int NoPRC_mapgen		= 0;
    public static final int ReadMap_mapgen		= 1;
    public static final int GenerateMap_mapgen   	= 2;
    public static final int ELSE_mapgen			= 3;

    /**
     * Network type
     */
    public static final int Torus_network		= 0;
    public static final int MultiStage_network		= 1;
    public static final int ELSE_network		= 2;

    /**
     * first ray generation method in ray-tracing
     *   frgm ... Frg unit's Ray Generation Method
     */
    public static final int AllScan_frgm		= 0;
    public static final int ScanlineScan_frgm		= 1;
    public static final int DistributedScan_frgm	= 2;
    public static final int ELSE_frgm			= 3;

    /**
     * for communication tags (1 対 1 通信におけるメッセージの種類を示す)
     */
    public static final int TAG_RAY	  = 0; 	// 光線
    public static final int TAG_INTENSITY = 1; 	// 輝度情報
    public static final int TAG_HOST_COM  = 2;	// Host の制御コマンド:Host->PE
    public static final int TAG_PE_STATUS = 3;	// PE 稼働状況 	      :PE->Host
    public static final int TAG_INT_VER	  = 4;	// 輝度と頂点の情報(shading用)
    //----- Object
    // fixed size object (with change commMpi2_canRecvObject)
    public static final int TAG_TRIANGLE_OBJ = 5; // 三角形の物体
    public static final int TAG_SPHERE_OBJ   = 6; // 球体
    // variable size object
    public static final int TAG_VOLUME_OBJ   = 7; // volume 
    // Null object (どの object でもない object)
    public static final int TAG_NULL_OBJ     = 8;
    public static final int TAG_INTEGER      = 9;
    public static final int TAG_ELSE         = 10;
    public static final String [] TAG_STR = {
	"Ray", "Intensity", "HostCom", "PEStat", "IntVer", 
	"Triangle", "Sphere", "Volume", "NullObj", "int", "else"
    };

    
    /**
     * 物体の出力方法 (パッチ)
     */
    public static final int NORMAL_ObjOut	= 0;
    public static final int WITH_SHOT_RADOUT	= 1;
    public static final int WITH_UNSHOT_RADOUT	= 2;

    /**
     * HemiCube からのレイの放射方法
     */
    //     public static final int CONTINUOUS_Rayout_OnHC	= 0;
    //     public static final int DISTRIBUTED_Rayout_OnHC	= 1;
    //     public static final int ELSE_Rayout_OnHC		= 2;    

    /**
     * (M\pi)^2 のコミュニケータの識別子
     */
    public static final int MPI2COMM_OnePE		= 0;
    public static final int MPI2COMM_mpiJavaS1	 	= 1;
    public static final int MPI2COMM_mpiJavaEncoder 	= 2;
}
