customcode_sample

FLOW-3D Solver Custom 개발

<주의 사항>
Flow Science, Inc.는 사용자가 추가한 사용자 정의 Code에 대해 어떠한 책임도 지지 않습니다. FLOW-3D 지원에는 사용자 정의에 대한 일반적인 지침이 포함되어 있지만 특수 용도로 FLOW-3D를 수정하는 것에 대한 특정 정보는 포함되어 있지 않습니다. FLOW-3D 유지보수 지원에는 사용자 커스터마이징 문제 해결이 포함되지 않습니다.

Custom Developer Tools 에 대한 정보

Flow Science가 표준 설치의 일부로 배포하는 서브 루틴을 사용자가 커스터마이즈하여 사용자가 원하는 수식을 반영 개발하고자 할 경우 현재 국내에 보급된 FLOW-3D v12.0 및 FLOW-3D CAST v5.0 이하 버전의 경우 Intel® FORTRAN 버전 16.0.1 컴파일러가 필요합니다. Windows 운영 체제에서 실행하는 사용자는 Visual Studio 2010 또는 Visual Studio 2013이 필요합니다.

customcode_sample

향후 업그레이드되는 버전의 경우 다음과 같이 변경됨을 참고하시기 바랍니다.

  1. 다음 주요 릴리스인 FLOW-3D v12.1 및 FLOW-3D CAST v5.1
    Intel® FORTRAN 컴파일러 버전 19.0.3.203 빌드 20190206(윈도우즈) 및 버전 19.0.3.19 빌드 20190206(리눅스) 를 사용해야 합니다.
    사용자가 Solver의 Custom Code를 개발하여 사용하기를 원하는 Windows 사용자들은 Microsoft Visual Studio 2017 Professional이 필요합니다.
  2. 현재 버전인 FLOW-3D v12.0 및 FLOW-3D CAST v5.0과 그에 대한 후속 업데이트는 Intel® FORTRAN 버전 16.0.1 및 Microsoft Visual Studio 2010/2013 Professional을 계속 사용하는 것을 유의하십시오.

이 내용은 Solver에 대해 제공된 소스 코드를 수정하고 다시 컴파일(즉, 사용자 정의)하는 커스텀 코드 개발 사용자에게만 적용됩니다. 솔버를 사용자 정의하여 개발하지 않을 경우 어떠한 조치도 필요하지 않습니다. 이 컴파일러 업데이트에 대해 궁금한 점이 있으면 언제든지 flow3d@stikorea.co.kr 로 문의하십시오.

일반 사용자 정의 정보

FLOW-3D는 사용자가 솔버의 기능을 사용자 정의할 수 있도록 FORTRAN 소스 서브 루틴 파일을 제공하여 사용자에게 필요한 요구 사항을 충족합니다. 제공된 FORTRAN 서브 루틴을 통해 사용자는 경계 조건을 사용자 정의할 수 있고, 고유한 재료 특성의 상관 관계를 포함할 수도 있으며, 사용자가 정의한 유체 힘(예: 전자기력)을 지정하고, 물리적 모델을 추가하는 등의 작업을 수행할 수 있습니다.

사용자가 사용자 정의에 사용할 수 있는 여러 “더미”변수가 제공되었습니다. 사용자 정의를 위해 사용자 정의가 가능한 목록도 제공합니다.

 Linux 및 Windows 배포용 Makefile이 제공되고 Windows 배포용 Visual Studio 솔루션 파일이 제공되어 자신의 사용자 정의 코드를 포함시켜 사용자가 FLOW-3D를 다시 컴파일 할 수 있습니다.

  • FLOW-3D그래픽 인터페이스를 통해 Custom Double Precision 버전을 실행하려면 Model Setup‣General dock widget의 Version Options 영역에서 Queued When Prompt 옵션을 선택하십시오. 그런 다음 버전을 묻는 메시지가 나타나면 Custom double precision을 선택하십시오. 또는 로컬 및 원격 시스템의 기본 설정 ‣ 기본 버전 옵션에서 기본값으로 설정할 수 있습니다.
  • 배치 모드 또는 명령 프롬프트를 통해 사용자 정의 버전을 실행하려면사용자 정의 배정도를 위한 환경 변수 F3D_VERSION을 prehyd로 설정해야 합니다.

Windows에서FLOW-3D 사용자 정의

Windows에서 현재 버전의 FLOW-3D 솔버를 사용자 정의하려면 다음 소프트웨어가 필요합니다.

  • Microsoft Visual Studio 2010 Professional Edition 또는 Microsoft Visual Studio 2013 Professional Edition
  • Intel® FORTRAN 16.0.1

명령행 빌드 환경을 선호하는 경우 Intel  FORTRAN 16.0.1 및 Windows Platform SDK 설치를 고려하십시오. 인텔  FORTRAN 16.0.1의 시스템 요구 사항에 대한 자세한 내용은 컴파일러와 함께 제공된 설명서를 참조하십시오.

Visual Studio 2010 Professional Edition 용 Visual Studio 솔루션 파일custom_double_vs2010.sln은 prehyd디렉토리에 있습니다. 솔루션 파일 이름은 *.sln 으로 지정됩니다.

솔루션 파일은 Visual Studio 내에서 솔버 실행 파일을 빌드하는 데 사용됩니다. FORTRAN 소스 파일의 확장자 .F90는 C:\flow3d\v12.0\prehyd디렉토리에 있습니다. 오브젝트 파일은 편집할 수 없는 파일로 확장자가 .OBJ인 파일로 있으며 소스 파일의 컴파일 된 버전입니다.

Intel Fortran 컴파일러 문법 설명서
https://software.intel.com/en-us/fortran-compiler-developer-guide-and-reference-a-to-z-reference

Visual Studio 솔루션 파일: 컴파일 및 링크

Visual Studio솔루션 파일은 Visual Studio에서 실행 파일을 빌드하는데 필요한 파일을 추적하는 데 사용됩니다. 여기에는 프로젝트의 모든 파일 목록과 종속성 목록이 포함됩니다. 종속성은 특정 파일의 변경으로 인해 영향을 받는 파일을 추적하는데 사용됩니다. 

솔루션 탐색기에는 Visual Studio에서 소스 파일, 오브젝트 파일, 모듈 및 라이브러리, 실행 파일을 빌드하는 데 필요한 모든 파일의 목록이 포함되어 있습니다. 파일은 알파벳 순서로 정렬됩니다. 소스 파일을 편집하려면 솔루션 탐색기*.F90에서 해당 파일을 두 번 클릭하면 상황에 맞는 편집 창에서 열립니다.

소스 파일을 변경한 후에는 파일을 저장하고 빌드 메뉴에서 솔루션 빌드를 선택하여 실행 파일을 다시 빌드하십시오. Visual Studio 구성 관리자를 사용하여 프로젝트를 릴리스 모드 및 x64 모드로 설정하십시오. 

수정한 파일을 컴파일하고 새 실행 파일을 만듭니다. 새로운 hydr3d.exe실행 파일이 생성되어 C:\flow3d\v12.0\prehyd하위 디렉토리에 배치됩니다.

Build 방법

컴파일 및 링크하려면 /prehyd 에서 솔루션 파일 custom_double_vs2010.sln을 여십시오. Visual Studio 구성 관리자를 사용하여 프로젝트를 릴리스 모드 및 x64 모드 로 설정하십시오. 소스 코드를 필요한대로 변경하고 저장한 다음 빌드 메뉴에서 솔루션 빌드를 선택하십시오.

사용자 정의 가능한 소스 디렉토리 구조

FLOW-3D customization 가능한 서브 루틴 및 표준 배포 실행 파일의 디렉토리 구조는 다음과 같습니다.

-- double -- hydr3d
-- prehyd -- comdeck
             prep3d
             hydr3d
             utility
-- source--  comdeck
             prep3d
             hydr3d
             utility

디렉토리 /opt/flow3d/v12.0/double에는 (customization 할 수 없는) 솔버의 공식 릴리스가 hydr3d 포함되어 있습니다. customization 가능한 소스 코드는 /opt/flow3d/v12.0/prehyd 디렉토리에 있습니다.

customizable디렉토리 아래 source에는 4 개의 하위 디렉토리가 있습니다. 전처리기와 솔버가 공유하는 서브 루틴은 utility 라는 디렉토리에 있습니다. 전처리기만 사용하는 서브 루틴은 제목이 지정된 디렉토리 prep3d에 있으며 솔버만 사용하는 서브 루틴은 hydr3d에 있습니다.

FORTRAN 포함 문

FLOW-3D 서브 루틴, 글로벌 변수에 대한 일반적인 블록 선언문은 디렉토리 comdeck에 있는 파일에 있습니다. 이러한 comdeck파일은 “Header File”이며 “include”문을 사용하여 서브 루틴에 통합됩니다. 일반적인 “include”문은 다음과 같습니다.

 include ‘../comdeck/params.f90’

컴파일시 comdeck파일의 FORTRAN 소스는 “include”문을 포함하는 서브 루틴에 인라인 됩니다. 공통 블록 및 설명을 일관되게 정의할 수 있습니다. 예를 들어 특정 셀의 인접 항목에 대한 색인 계산과 같이 자주 사용되는 FORTRAN 소스 코드가 포함된 comdeck 파일도 있습니다. 이 경우 comdeck 파일은 일반적으로 사용되는 소스 코드를 인라인 하는 간단한 방법입니다.

comdeck파일의 공통 블록, 모듈 또는 매개 변수는 제공된 루틴으로 오브젝트 파일로 이미 컴파일 되었으므로 변경하지 마십시오. 이러한 정의를 변경하면 불일치가 발생하여 FLOW-3D 가 예측할 수 없는 방식으로 작동합니다. 

Customization 가능 이름 목록 USRDAT 그리고 공통 블록 cbusr이 파일을 참조하는 모든 서브 루틴이 다시 컴파일 되면 변경될 수 있습니다 (이를 참조하는 모든 루틴이 소스 파일로 제공됨). 추가 공통 블록은 새 comdeck파일에 정의될 수 있으며, 필요에 따라 소스 파일에 포함될 수 있습니다.

<주의>

comdeck파일의 공통 블록, 모듈 또는 매개 변수는 제공된 루틴으로 오브젝트 파일로 이미 컴파일 되었으므로 변경하지 마십시오. 이러한 정의를 변경하면 불일치가 발생하여 FLOW-3D 가 예측할 수 없는 방식으로 작동합니다.

FLOW-3D 솔버의 서브 루틴 및 기능에서 일반적으로 사용되는 일부 include 파일에 대한 자세한 설명은 FLOW-3D 설치 파일에 포함되어 있는 Help 파일을 참고하시기 바랍니다.