사용자 라이브러리 빌드

솔버 API를 사용하려면 솔버를 실행할 플랫폼의 기본 공유 라이브러리에 컴파일해야 합니다.

컴파일러가 필요한 경우 http://www.visualstudio.com/en-us/downloads에서 Microsoft Visual Studio Express를 무료로 다운로드할 수 있습니다.

사용자 함수에는 C 이름 변형 규칙(extern "C")이 있어야 하며 C 호출 규칙(Windows의 __stdcall)을 사용해야 합니다. 아래 헤더 파일(샘플 프로젝트에 ViscosityUserFunctions.h로 제공됨)에서 시작하는 것이 좋습니다.
주: 예제 코드는 설치된 디렉터리 폴더에 제공되어 있습니다. Windows 탐색기를 사용하여 설치된 디렉터리 폴더(일반적으로 C:₩Program Files₩Autodesk₩Moldflow Insight 20xx₩data₩solverapi)로 이동하십시오.
#ifdef __cplusplus
extern "C" {
#endif

#include <stdlib.h>

#ifdef _WIN32
#define DLLEXPORT __declspec(dllexport)
#define STDCALL __stdcall
#else
#define DLLEXPORT
#define STDCALL
#endif
	// Required functions.
	DLLEXPORT double STDCALL SolverUserHb3dViscosity(double temperature, double shearRate, double pressure);
	// Optional functions.
	DLLEXPORT void STDCALL SolverUserHb3dInitialize();
	DLLEXPORT void STDCALL SolverUserHb3dAnalysisSetup();
	DLLEXPORT void STDCALL SolverUserHb3dTimeStepComplete(double time);
	DLLEXPORT void STDCALL SolverUserHb3dCleanup();
	DLLEXPORT double STDCALL SolverUserHb3dViscosityAtNode(double temperature, double shearRate, double pressure, size_t nodeId);
	DLLEXPORT double STDCALL SolverUserHb3dViscosityAtLaminateOfNode(double temperature, double shearRate, double pressure, size_t nodeId, unsigned int laminateId);

#ifdef __cplusplus
}
#endif

열가소성 수지 점도에 대한 사용자 라이브러리를 사용하도록 설정한 경우 SolverUserHb3dViscosity 함수를 정의해야 합니다. 다른 함수는 선택 사항입니다.

Windows에서 사용자 라이브러리 빌드

Windows에서 사용자 라이브러리를 64비트 릴리스 DLL로 빌드하십시오. 예제 Microsoft Visual Studio 2012 프로젝트인 MoldflowUserFunctions_xxx.vcxproj를 변경하지 않고 직접 컴파일하여 설치할 수 있습니다.

결과 DLL의 이름을 MoldflowUserFunctions.dll로 지정하고 관리자가 mhb3d.exe와 동일한 디렉터리(일반적으로 C:₩Program Files₩Autodesk₩Moldflow Insight 20xx₩bin)에 복사해야 합니다. 이 DLL은 고급 솔버 변수에서 사용자 라이브러리를 사용하도록 설정한 경우에만 열립니다.

새 Visual Studio 프로젝트를 만드는 경우 다음 옵션이 설정되었는지 확인하십시오.
  • 일반 > 대상 이름 = MoldflowUserFunctions
  • 일반 > 구성 유형 = 동적 라이브러리(.dll)
  • 일반 > 문자 집합 = 유니코드 문자 집합 사용
  • C/C++ > 코드 생성 > 런타임 라이브러리 = 다중 스레드(/MT)
  • 링커 > 고급 > 대상 컴퓨터 = MachineX64(/MACHINE:X64)

Linux에서 사용자 라이브러리 빌드

Linux에서 사용자 라이브러리를 64비트 ELF 공유 객체(.so)로 빌드하십시오. data/solverapi 디렉터리에 소스 코드 및 makefiles가 포함된 예제가 들어 있습니다. 다음과 같은 명령으로 이러한 예제를 컴파일하십시오.

make -f Makefile_Example1

결과 공유 라이브러리의 이름을 MoldflowUserFunctions.so(대/소문자 구분)로 지정하고 쓰기 권한이 있는 사용자가 설치의 lib 디렉터리(일반적으로 워크스테이션 설치의 경우 /opt/Autodesk/moldflow/20xx/lib)에 복사해야 합니다. 이 라이브러리는 고급 솔버 변수에서 사용자 라이브러리를 사용하도록 설정한 경우에만 열립니다.

개발 어드바이스

SolverUserHb3dViscosity 함수는 해석에서 여러 번 호출할 수 있습니다. 스레드로부터 안전해야 하므로 전역 상태에 액세스할 때는 주의하십시오. 3D 유동 솔버의 특성 때문에 함수가 시간 단계 내에서 시간순에 관계없이 호출될 수 있으므로 시간이 일정하게 증가한다고 가정하지 마십시오.

SolverUserHb3dViscosity 함수를 포함하는 다중 스레드 코드 내에서 SolverUtilityHb3dFail 함수를 호출하는 경우 솔버가 즉시 종료되지 않고 현재 시간 단계의 끝까지 계속 실행됩니다. 이렇게 하면 코드에서 리소스에 액세스할 때 리소스가 제대로 해제될 수 있음을 확신할 수 있습니다.