콘텐츠로 이동

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)