Thank you! The DG type of elemental field is necessary. And I still encounter the problem that I cannot define the similar variable Phys of Peddy for elemetal field.

I checked the source code "CalcFields .F90" and "FourierLoss.F90", I found I should define another dummy solver in an initialization subroutine? And maybe I should also define these variables in this dummy solver? As:

- Code: Select all
`! Create DG solver structures on-the-fly without actually solving the matrix equations.`

ALLOCATE(Solvers(n+1))

Solvers(1:n) = Model % Solvers

Solvers(n+1) % Values => ListAllocate()

DGSolverParams => Solvers(n+1) % Values

CALL ListAddLogical( DGSolverParams, 'Discontinuous Galerkin', .TRUE. )

Solvers(n+1) % DG = .TRUE.

Solvers(n+1) % PROCEDURE = 0

Solvers(n+1) % ActiveElements => NULL()

CALL ListAddString( DGSolverParams, 'Exec Solver', 'never' )

CALL ListAddLogical( DGSolverParams, 'No Matrix',.TRUE.)

CALL ListAddLogical( DGSolverParams, 'Optimize Bandwidth',.FALSE.)

CALL ListAddString( DGSolverParams, 'Equation', 'CoreLoss_Dummy' )

CALL ListAddString( DGSolverParams, 'Procedure', &

'CoreLoss CoreLossSolver_Dummy',.FALSE. )

CALL ListAddString( DGSolverParams, "Exported Variable 1 =", "Core Loss Phys e" )

CALL ListAddString( DGSolverParams, "Exported Variable 2 =", "Core Loss Peddy e")

CALL ListAddString( DGSolverParams, "Exported Variable 3 =", "CoreLoss_e" )

!PRINT *, "Initial Done", i

DEALLOCATE(Model % Solvers)

Model % Solvers => Solvers

Model % NumberOfSolvers = n+1

END SUBROUTINE CoreLossSolver_init0

An additional dummy solver is also defined:

- Code: Select all
`!------------------------------------------------------------------------------`

SUBROUTINE CoreLossSolver_Dummy(Model,Solver,dt,Transient)

!------------------------------------------------------------------------------

USE MagnetoDynamicsUtils

IMPLICIT NONE

!------------------------------------------------------------------------------

TYPE(Solver_t) :: Solver

TYPE(Model_t) :: Model

REAL(KIND=dp) :: dt

LOGICAL :: Transient

!------------------------------------------------------------------------------

END SUBROUTINE CoreLossSolver_Dummy

!------------------------------------------------------------------------------

But when I want to link the pointer to the variable "Core Loss Phys e" in the actual subroutine CoreLossSolver, as:

- Code: Select all
`Ph_E => VariableGet( Mesh % Variables,'Core Loss Phys e' )`

IF(.NOT. ASSOCIATED( Ph_E ))THEN

CALL Fatal('CoreLossSolver','Variable Core Loss Phys e does not exist')

END IF

The ERROR is reported:

- Code: Select all
`Model Input: Unlisted keyword: [keddy] in section: [constants]`

Model Input: Unlisted keyword: [axiall] in section: [constants]

WARNING:: CheckTimer: Requesting time from non-existing timer: LoadMesh

WARNING:: CheckTimer: Requesting time from non-existing timer: MeshStabParams

MAIN:

MAIN: -------------------------------------

MAIN: Time: 1/5 1.0000003999999999E-004

MAIN: -------------------------------------

MAIN:

WARNING:: CheckTimer: Requesting time from non-existing timer: PeriodicProjector

20 0.1011E+00

40 0.1733E-01

60 0.2544E-02

80 0.1113E-04

100 0.6558E-05

ComputeChange: NS (ITER=1) (NRM,RELC): ( 2543.3687 1.0000000 ) :: mgdyn2d

20 0.7383E-03

40 0.2947E-03

60 0.2052E-03

80 0.1853E-04

100 0.1077E-06

ComputeChange: NS (ITER=2) (NRM,RELC): ( 2556.8740 0.69178087E-01 ) :: mgdyn2d

20 0.6419E-05

40 0.5531E-05

60 0.4932E-05

80 0.9396E-07

ComputeChange: NS (ITER=3) (NRM,RELC): ( 2550.2542 0.97899601E-02 ) :: mgdyn2d

ComputeChange: NS (ITER=4) (NRM,RELC): ( 2550.8919 0.21344349E-03 ) :: mgdyn2d

ComputeChange: NS (ITER=5) (NRM,RELC): ( 2550.8838 0.29937164E-05 ) :: mgdyn2d

ComputeChange: NS (ITER=6) (NRM,RELC): ( 2550.8838 0.99764275E-07 ) :: mgdyn2d

WARNING:: GetPermittivity: Permittivity not defined in material, defaulting to that of vacuum

ComputeChange: NS (ITER=1) (NRM,RELC): ( 0.79328062E-01 2.0000000 ) :: calcfields

ComputeChange: NS (ITER=2) (NRM,RELC): ( 0.88136685E-01 0.10519973 ) :: calcfields

ComputeChange: NS (ITER=6) (NRM,RELC): ( 0.50781544E-03 2.0000000 ) :: calcfields

ComputeChange: NS (ITER=9) (NRM,RELC): ( 545766.69 2.0000000 ) :: calcfields

Nsize = 12704

Nelem = 76602

CurrentTimeStep = 1

Ph % Values(1) = 0.0000000000000000

Nelem = 11362

ERROR:: CoreLossSolver: Variable Core Loss Phys e does not exist

It seems that the defined variable for elemental field is not linked, or defined.

The source code is uploaded. I do not know why did this problem occur?