Python API Reference
Information
Python API 사용 방법은 리눅스를 기반으로 설명합니다.
5.1 Flow360 Client 설치
Flow360 클라이언트는 Python Package Index (PyPI)에서 설치(업데이트) 가능합니다.
Flow360 클라이언트 설치 전 Python-setuptools
패키지를 설치해야 합니다.
sudo apt-get install python3-setuptools
설치 준비가 완료되었으면 flow360client 패키지를 설치합니다.
pip3 install flow360client
pip3 install --upgrade flow360client
5.2 계정과 비밀번호로 로그인
계정을 생성하지 않은 사용자는 https://flow360.simulation.cloud/signup 에서 계정을 생성할 수 있습니다.
계정이 생성된 사용자는 다음과 같이 로그인을 할 수 있습니다.
python3
>>> import flow360client
enter your email registered at flexcompute:********@gmail.com
Password: ***********
Do you want to keep logged in on this machine ([Y]es / [N]o)Y
Flow360 클라이언트를 설치하고 로그인한 후에는, 이 문서의 Quick Start 섹션에 있는 ONERA M6 Wing 튜토리얼을 사용하여 첫 번째 케이스를 실행할 수 있습니다.
5.3 flow360client 모듈
- flow360client.NewCase(meshId, config, caseName=None, tags=[], priority='high', parentId=None)
mesh Id를 이용하여 해석 케이스를 Submit 합니다.
파라미터: | |
---|---|
- meshId (str) – Mesh Id (형식: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx) | |
- config (path (str) or dict) – ```Flow360.json``` 의 해석 파라미터. 해당 json 파일 경로 또는 python 딕셔너리로 사용 가능 | |
- caseName (str, optional) – 해석 케이스 이름 (공란 시 config 파일명을 사용), Python 딕셔너리 사용 시 입력 필수 | |
- tags (list, optional) – 태그 리스트 | |
- priority (str, optional) – 해석 우선순위, ‘high’ 또는 ‘low’, 기본값: ‘high’ | |
- parentId (str, optional) – 분기된 케이스들의 상위 케이스 Id (형식: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx), 기본값: None | |
반환값(형식): | 케이스 id (str, 형식: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx) |
- flow360client.NewCaseListWithPhase(meshId, config, caseName=None, tags=[], priority='high', parentId=None, phaseCount=1)
이전 케이스에서 파생된 동일한 mesh Id를 갖는 각각의 하위 케이스들을 순차적으로 submit 합니다.
maxPhysicalStep
은 케이스에 대해 균등하게 분배됩니다.
이 기능은 한 비정상 해석 케이스가 오랜 시간 실행되지 않도록 하기 위해 사용됩니다.
(예를 들어 maxPhysicalStep=1000
이고 phaseCount=2
인 경우, 위 API는 각각 maxPhysicalStep=500
인 2개의 케이스를 submit 합니다.)
파라미터: | |
---|---|
- meshId (str) – Mesh Id (형식: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx) | |
- config (path (str) or dict) – ```Flow360.json```. 해당 json 파일 경로 또는 python 딕셔너리로 사용 가능 | |
- caseName (str, optional) – 해석 케이스 이름 (공란 시 config 파일명을 사용), Python 딕셔너리 사용 시 입력 필수 | |
- tags (list, optional) – 태그 리스트 | |
- priority (str, optional) – 해석 우선순위, ‘high’ 또는 ‘low’, 기본값: ‘high’ | |
- parentId (str, optional) – 분기된 케이스들의 상위 케이스 Id (형식: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx) | |
- phaseCount (int, optional) – [상기 설명 참조], 기본값: 1 | |
반환값(형식): | 리스트 형식의 케이스 id (str, 형식: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx) |
- flow360client.NewMesh(fname, noSlipWalls=None, meshName=None, tags=[], fmat=None, endianness=None, solverVersion=None, meshJson=None)
새 mesh(CGNS, UGRID mesh 포멧 지원)를 업로드합니다.
CGNS 형식 mesh의 경우, noSlipWalls
가 업로드 전에 mesh와 함께 검증됩니다. (h5py
가 설치되어 있어야 합니다.)
* h5py
: HDF5
데이터 포멧을 Python에서 다룰 수 있도록 하는 패키지입니다.
파라미터: | |
---|---|
- fname (path (str)) – mesh 파일 경로 | |
- noSlipWalls (list, optional) – Flow360.json. 해당 json 파일 경로 또는 python 딕셔너리로 사용 가능 | |
- meshName (str, optional) – mesh 이름, mesh 파일이 없다면 기본값 None 사용 | |
- tags (list, optional) – mesh 태그 리스트 | |
- fmat (str, optional) – mesh 파일 형식(aflr3, cgns 지원). 입력하지 않으면 자동 추론합니다. | |
- endianness (str, optional) – UGRID mesh의 Endian은 .b8.ugrid에 대해 'big', .lb8.ugrid에 대해 'little'입니다. 입력하지 않을 경우 파일 확장자를 통해 처리합니다. | |
- solverVersion (str, optional) – 현재 mesh 및 mesh에서 생성된 케이스에 사용되는 솔버의 버전. 입력하지 않을 경우 최신 버전을 사용합니다. | |
- meshJson (path (str) or dict, optional) – mesh에 대한 Flow360Mesh.json. 해당 json 파일 경로 또는 python 딕셔너리 입력. noSlipWalls를 사용하지 않으면 필수로 입력합니다. | |
반환값(형식): | 리스트 형식의 케이스 id (str, 형식: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx) |
- flow360client.NewMeshFromSurface(surfaceMeshId, config, meshName=None, tags=[], solverVersion=None)
표면 격자(surface mesh) 에서 새로운 공간 격자(volume mesh)를 생성합니다.
파라미터: | |
---|---|
- surfaceMeshId (str) – surface mesh id (형식: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx) | |
- config (path (str) or dict) – Flow360SurfaceToVolumeMesh.json volume mesh를 위한 파라미터. 해당 json 파일 경로 또는 python 딕셔너리 입력 | |
- meshName (str, optional) – mesh 이름. 입력하지 않으면 config 파일명을 사용하고, python 딕셔너리 사용 시 필수로 입력합니다. | |
- tags (list, optional) – mesh 태그 리스트 | |
- solverVersion (str, optional) – 현재 mesh 및 mesh에서 생성된 케이스에 사용되는 솔버의 버전. 입력하지 않을 경우 최신 버전을 사용합니다. | |
반환값(형식): | mesh id (str, 형식: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx) |
- flow360client.NewSurfaceMeshFromGeometry(fileName, geometryToSurfaceMeshJson, surfaceMeshName=None, tags=[], solverVersion=None)
형상(geometry) 파일로부터 새로운 표면 격자(surface mesh) 생성합니다.
파라미터: | |
---|---|
- fileName (path (str)) – Geometry 파일 경로. CSM(Engineering Sketch Pad) 파일 지원 | |
- geometryToSurfaceMesh.Json (path (str) or dict) – Flow360GeometryToSurfaceMesh.json. 해당 json 파일 경로 또는 python 딕셔너리 입력 | |
- surfaceMeshName (str, optional) – surface mesh 이름 | |
- tags (list, optional) – surface mesh 태그 리스트 | |
- solverVersion (str, optional) – 현재 mesh 및 mesh에서 생성된 케이스에 사용되는 솔버의 버전. 입력하지 않을 경우 최신 버전을 사용합니다. | |
반환값(형식): | surface mesh id (str, 형식: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx) |
- flow360client.noSlipWallsFromMapbc(mapbcFile)
mapbc 파일 (UGRID)로부터 noSlipWalls
를 읽습니다.
파라미터: | mapbcFile (path (str)) – mapbc 파일 경로 | 반환값(형식): | no-slip wall 리스트 (list) |
---|
- flow360client.generator.case.generateCaseJson()
Flow360Case.json
생성을 위한 설명이 포함된 대화형 명령줄 생성기 입니다.
다음의 구성이 포함됩니다.
- geometry
- freestream
- boundaries
- slidingInterfaces
- timeStepping
- navierStokesSolver
- turbulenceModelSolver
- volumeOutput
- surfaceOutput
반환값(형식): | Flow360Case.json - 시뮬레이션 config 파일 (list) |
---|
- flow360client.case.DeleteCase(caseId)
caseId를 갖는 케이스를 삭제합니다.
파라미터: | caseId ((str)) – 삭제할 케이스의 id (형식: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx) | 반환값(형식): | 삭제 작업의 http 응답(http 응답) |
---|
- flow360client.case.DownloadResultsFile(caseId, src, target=None)
입력한 caseId에 대해 결과 파일을 다운로드 합니다. 이 함수를 통해 다운로드되는 파일은 다음과 같습니다.
- surfaces.tar.gz - 시각화(visualization) 또는 후처리를 위한 surface 데이터
- volumes.tar.gz - 시각화(visualization) 또는 후처리를 위한 volumetric 데이터
- nonlinear_residual_v2.csv- 비선형 잔차(nonlinear residuals)
- linear_residual_v2.csv - 선형 잔차(linear residuals)
- cfl_v2.csv - cfl number
- minmax_state_v2.csv - 해석 케이스의 pressure, density, velocity 등의 최대/최소값 및 그 위치. (min_rho, min_rho_x, min_rho_y, min_rho_z, min_p, min_p_x, min_p_y, min_p_z, max_umag, max_umag_x, max_umag_y, max_umag_z)
- surface_forces_v2.csv - 각각의 경계면에서의 surface forces. (CL, CD, CFx, CFy, CFz, CMx, CMy, CMz, CLPressure, CDPressure, CFxPressure, CFyPressure, CFzPressure, CMxPressure, CMyPressure, CMzPressure, CLViscous, CDViscous, CFxViscous, CFyViscous, CFzViscous, CMxViscous, CMyViscous, CMzViscous, HeatTransfer)
- total_forces_v2.csv - 해석 케이스 경계면(all no-slip walls)에서의 total forces. (CL, CD, CFx, CFy, CFz, CMx, CMy, CMz, CLPressure, CDPressure, CFxPressure, CFyPressure, CFzPressure, CMxPressure, CMyPressure, CMzPressure, CLViscous, CDViscous, CFxViscous, CFyViscous, CFzViscous, CMxViscous, CMyViscous, CMzViscous, HeatTransfer)
- bet_forces_v2.csv - BET model을 사용한 케이스에 대한 forces. (Disk\_Force_x, Disk\_Force_y, Disk\_Force_z, Disk\_Moment_x, Disk\_Moment_y, Disk\_Moment_z, Disk\_Blade\_R\
_Radius, Disk\_Blade\_R\ _ThrustCoeff, Disk\_Blade\_R\ _TorqueCoeff, 여기서 i는 BET disk의 인덱스, b는 블레이드 인덱스, j는 loading node의 인덱스) - actuatorDisk_output_v2.csv - actuatorDisk model의 결과. (Disk\_Power, 여기서 i는 actuator disk의 인덱스)
파라미터: | caseId (str) – 케이스 id (형식: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx) |
---|---|
src (str) - 다룬로드 대상 파일명 | |
target (str, optional) - 로컬에 저장될 파일명, 미입력 시 src 파일명을 사용합니다. |
- flow360client.case.DownloadSurfaceResults(caseId, fileName=None)
주어진 caseId의 surface 관련 결과를 다운로드 합니다.
파라미터: | caseId (str) – 케이스 id (형식: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx) |
---|---|
fileName (str, optional) - 결과 파일을 저장할 (압축)파일명, '.tar.gz' 확장자를 사용해야 하며, 미입력 시 'surfaces.tar.gz' 파일명으로 저장됩니다 |
- **flow360client.case.DownloadVolumetricResults(caseId, fileName=None)
주어진 caseId의 volumetric 관련 결과를 다운로드 합니다.
파라미터: | caseId (str) – 케이스 id (형식: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx) |
---|---|
fileName (str, optional) - 결과 파일을 저장할 (압축)파일명, '.tar.gz' 확장자를 사용해야 하며, 미입력 시 'volumes.tar.gz' 파일명으로 저장됩니다 |
- flow360client.case.GetCaseInfo(caseId)
주어진 caseId의 케이스에 대한 정보를 획득합니다.
파라미터: | caseId (str) – 케이스 id (형식: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx) | 반환값(형식): | http 응답을 반환(http 응답) |
---|
- flow360client.case.GetCaseLinearResidual(caseId)
주어진 caseId의 케이스 해석에 사용된 솔버의 linear residual(선형 잔차) 정보를 획득합니다.
파라미터: | caseId (str) – 케이스 id (형식: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx) | 반환값(형식): | 해석 사용된 솔버에 대한 선형 잔차(dict) |
---|
-
예: SpalartAllmaras 난류 모델을 사용한 케이스의 반환 형식은 다음과 같습니다.
{ 'physical_step': [...], 'pseudo_step': [...], '0_NavierStokes_linearIterations': [...], '0_cont': [...], '1_momx': [...], '2_momy': [...], '3_momz': [...], '4_energ': [...], '5_SpalartAllmaras_linearIterations': [...], '5_nuHat': [...] }
-
flow360client.case.GetCaseResidual(caseId)
주어진 caseId의 케이스 해석에 사용된 솔버의 nonlinear residual(비선형 잔차) 정보를 획득합니다.
파라미터: | caseId (str) – 케이스 id (형식: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx) | 반환값(형식): | 해석에 사용된 솔버에 대한 비선형 잔차(dict) |
---|
-
반환 형식의 예
{ 'physical_step': [...], 'pseudo_step': [...], '0_cont': [...], '1_momx': [...], '2_momy': [...], '3_momz': [...], '4_energ': [...], '5_nuHat': [...] }
-
**flow360client.case.GetCaseTotalForces(caseId)
주어진 caseId 케이스의 total forces 정보를 획득합니다.
파라미터: | caseId (str) – 케이스 id (형식: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx) | 반환값(형식): | 해석 결과로 획득된 total forces의 coefficient 값(dict) |
---|
-
반환 형식의 예
{ 'physical_step': [...], 'pseudo_step': [...], 'CL': [...], 'CD': [...], 'CFx': [...], 'CFy': [...], 'CFz': [...], 'CMx': [...], 'CMy': [...], 'CMz': [...], 'CLPressure': [...], 'CDPressure': [...], 'CFxPressure': [...], 'CFyPressure': [...], 'CFzPressure': [...], 'CMxPressure': [...], 'CMyPressure': [...], 'CMzPressure': [...], 'CLViscous': [...], 'CDViscous': [...], 'CFxViscous': [...], 'CFyViscous': [...], 'CFzViscous': [...], 'CMxViscous': [...], 'CMyViscous': [...], 'CMzViscous': [...], 'HeatTransfer': [...] }
-
**flow360client.mesh.DeleteMesh(meshId)
주어진 meshID에 해당하는 mesh를 삭제합니다.
파라미터: | meshId (str) – 삭제할 mesh id (형식: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx) | 반환값(형식): | 삭제 작업의 http 응답을 반환(http 응답) |
---|
- flow360client.mesh.GetMeshInfo(meshId)
주어진 meshId에 해당하는 정보를 획득합니다.
파라미터: | meshId (str) – mesh id (형식: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx) | 반환값(형식): | http 응답을 반환(http 응답) |
---|
- flow360client.mesh.ListMeshes(include_deleted=False)
mesh 목록을 획득합니다.
파라미터: | include_deleted (bool, optional) – 삭제된 mesh를 목록에 포함시킬지 여부 | 반환값(형식): | mesh 목록(list) |
---|
- flow360client.surfaceMesh.DeleteSurfaceMesh(surfaceMeshId)
주어진 surfaceMeshId에 해당하는 surface mesh를 삭제합니다.
파라미터: | surfaceMeshId (str) – 삭제할 surface mesh id (형식: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx) | 반환값(형식): | 삭제 작업의 http 응답을 반환(http 응답) |
---|
- flow360client.surfaceMesh.GetSurfaceMeshInfo(surfaceMeshId)
주어진 surfaceMeshId에 해당하는 surface mesh 정보를 획득합니다.
파라미터: | surfaceMeshId (str) – surface mesh id (형식: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx) | 반환값(형식): | http 응답을 반환(http 응답) |
---|
- flow360client.surfaceMesh.ListSurfaceMeshes(include_deleted=False)
surface mesh 목록을 획득합니다.
파라미터: | include_deleted (bool, optional) – 삭제된 mesh를 목록에 포함시킬지 여부 | 반환값(형식): | surface mesh 목록(list) |
---|