customcode_sample

FLOW-3D Solver Custom 개발

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

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

Custom Developer Tools 에 대한 정보

Flow Science가 표준 설치의 일부로 배포하는 서브 루틴을 사용자가 커스터마이즈하여 사용자가 원하는 수식을 반영 개발하고자 할 경우 버전에 따라 아래와 같은 버전의 컴파일러가 필요합니다.

FLOW-3D 제품군의 다가오는 2023R2 release는 현재 빌드 도구를 업데이트하고 있습니다. 이는 FLOW-3D, FLOW-3D HYDRO 및 FLOW-3D CAST에 영향을 미칩니다.

2023R2 제품의 소스 코드를 사용자 정의하고 재컴파일하려는 사용자에게는 다음이 포함된 Intel oneAPI 버전 2022.3.1이 필요합니다.

Windows: Intel® MPI 라이브러리 및 Fortran 컴파일러 버전 2021.7.1 빌드 20221019 및 Microsoft Visual Studio 2019 Professional

Linux: Intel® MPI 라이브러리 및 Fortran 컴파일러 버전 2021.7.1 빌드 20221019 이전 버전의 빌드 도구는 변경되지 않았습니다.

이전 버전에 대한 안내

  1. 다음 주요 릴리스 인  FLOW-3D  v12.1 및  FLOW-3D  CAST  v5.1은 인텔 ® FORTRAN 컴파일러 버전 19.0.3.203 빌드 20190206 (Windows) 및 버전 19.0.3.199 빌드 20190206 (Linux)으로 빌드됩니다. 솔버를 사용자 지정하는 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을 사용하여 계속 빌드됩니다.
Custom Code Sample
Custom Code Sample

일반 사용자 정의 정보

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 솔버 사용자 정의에 대해 안내합니다.

이전 버전을 기준으로 설명을 드립니다.

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

Visual Studio 2010/2013 Professional Edition 용 Visual Studio 솔루션 파일custom_double_vs2010/2013.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 파일을 참고하시기 바랍니다.