STAR-CCM+ Macro를 사용하여 interface만 선택하는 1가지 방법

작업할 내용

이전 글을 통해 STAR-CCM+의 Macro기능은 Java언어를 사용한다는 것을 알 수있었다. 이번에는 STAR-CCM+에서 많이 사용하는 Interface를 Collection을 사용하여 선택 및 설정하는 방법에 대해서 알아보고자 한다.

Interface는 Boundary의 interface 설정과 Interface의 Interface 설정으로 구분된다. 보통 Boundary의 Interface(1번)는 특정 해석 설정을 하기 보다는 Report를 사용한 결과를 추출할 때 사용하거나 Scene에서 interface의 특정 Scalar 결과를 보고자 할 때 사용할 수 있다.

사용할 코드

이 때 사용할 수 있는 코드는 다음과 같다

       Region fluidRegion = sim.getRegionManager().getRegion("Region 1");

        if (fluidRegion != null) {
            Collection<Boundary> boundaries = fluidRegion.getBoundaryManager().getBoundaries();
            for (Boundary boundary : boundaries) {
                if (boundary instanceof InterfaceBoundary) {
                    sim.println("InterfaceBoundary name: " + boundary.getPresentationName());
                }
            }
        } else {
            sim.println("Fluid region not found");
        }

Interface Boundary이기 때문에 Collection<Boundary> 를 사용하여 모든 Boundary를 가지고 온다. 그리고 향상된 for문을 사용하여 각각 boundary를 반복하면 boundary type을 확인한다. 이때 InterfaceBoundary 타입을 가지고 있는지 확인하고 만약 타입이 InterfaceBoundary라면 boundary이름을 출력하게 된다.

다음으로 Interface설정을 변경할 때(2번) 사용하는 코드는 다음과 같다.

      Collection<Interface> bi = sim.getInterfaceManager().getObjects();
        
        for(Interface i : bi){
           sim.println(i.getPresentationName());
        }

Collection<Interface>를 사용하여 모든 Interface를 가지고 오고, 향상된 for문을 사용하여 각각의 interface의 이름을 출력하게 된다.

위 코드를 사용하여 Report 및 Scene에 대상을 추가하거나, Interface의 세부 해석 설정을 할 수 있다.

위로 스크롤