@@ -98,6 +98,8 @@ SUBROUTINE InitSwapmesh()
98
98
! New mesh file, the state will be interpolated to this one
99
99
MeshFileNew = GETSTR(' MeshFileNew' )
100
100
101
+ NodeTypeOut = GETSTR(' NodeTypeNew' ,NodeTypeState)
102
+
101
103
! Curved meshes or not
102
104
useCurvedsOld = GETLOGICAL(" useCurvedsOld" )
103
105
useCurvedsNew = GETLOGICAL(" useCurvedsNew" )
@@ -307,7 +309,7 @@ END SUBROUTINE ReadMeshCoords
307
309
SUBROUTINE prepareVandermonde ()
308
310
! MODULES
309
311
USE MOD_Swapmesh_Vars, ONLY: NInter,NNew,NState,NState,NGeoOld,NGeoNew,NSuper
310
- USE MOD_Swapmesh_Vars, ONLY: NodeTypeState,nElemsNew,xCLInter
312
+ USE MOD_Swapmesh_Vars, ONLY: NodeTypeState,nElemsNew,xCLInter,NodeTypeOut
311
313
USE MOD_Swapmesh_Vars, ONLY: Vdm_CLNGeo_EquiNSuper,Vdm_CLNInter_GPNNew,Vdm_GPNState_GPNNew
312
314
USE MOD_Swapmesh_Vars, ONLY: xCLNew
313
315
USE MOD_Interpolation, ONLY: GetVandermonde
@@ -330,12 +332,12 @@ SUBROUTINE prepareVandermonde()
330
332
331
333
! Vandermonde from interpolation CL to new solution G/GL
332
334
ALLOCATE (Vdm_CLNInter_GPNNew(0 :NNew,0 :NInter))
333
- CALL GetVandermonde(NInter,NodeTypeCL,NNew,NodeType ,Vdm_CLNInter_GPNNew)
335
+ CALL GetVandermonde(NInter,NodeTypeCL,NNew,NodeTypeOut ,Vdm_CLNInter_GPNNew)
334
336
335
337
! Vandermonde for direct interpolation in equal elements
336
- IF (NNew.NE. NState)THEN
338
+ IF (( NNew.NE. NState) .OR. (NodeTypeState .NE. NodeTypeOut) )THEN
337
339
ALLOCATE (Vdm_GPNState_GPNNew(0 :NNew,0 :NState))
338
- CALL GetVandermonde(NState,NodeTypeState,NNew,NodeType ,Vdm_GPNState_GPNNew)
340
+ CALL GetVandermonde(NState,NodeTypeState,NNew,NodeTypeOut ,Vdm_GPNState_GPNNew)
339
341
END IF
340
342
341
343
IF (NGeoNew.NE. NInter)THEN
@@ -471,15 +473,32 @@ END SUBROUTINE ReadOldStateFile
471
473
! ===================================================================================================================================
472
474
SUBROUTINE WriteNewStateFile ()
473
475
! MODULES !
474
- USE MOD_HDF5_Output, ONLY: WriteState
475
- USE MOD_Swapmesh_Vars, ONLY: Time_State,MeshFileNew
476
+ USE MOD_PreProc
477
+ USE MOD_Globals
478
+ USE MOD_IO_HDF5
479
+ USE MOD_HDF5_Output
480
+ USE MOD_Output_Vars, ONLY: ProjectName
481
+ USE MOD_Swapmesh_Vars, ONLY: Time_State,MeshFileNew,NodeTypeOut,NodeTypeState
476
482
!- ---------------------------------------------------------------------------------------------------------------------------------!
477
483
IMPLICIT NONE
478
484
! INPUT / OUTPUT VARIABLES
479
485
!- ----------------------------------------------------------------------------------------------------------------------------------
480
486
! LOCAL VARIABLES
487
+ CHARACTER (LEN= 255 ) :: FileName,FileType
488
+
481
489
! ===================================================================================================================================
482
490
CALL WriteState(TRIM (MeshFileNew),Time_State,Time_State,isErrorFile= .FALSE. )
491
+
492
+ ! Update the nodetype attribute in the State file, delete old attri and rewrite
493
+ IF (NodeTypeOut.NE. NodeTypeState) THEN
494
+ SWRITE(UNIT_stdOut,' (A)' ) " Updating NodeType in Statefile to new NodeType."
495
+ FileType= MERGE (' ERROR_State' ,' State ' ,.FALSE. )
496
+ FileName= TRIM (TIMESTAMP(TRIM (ProjectName)// ' _' // TRIM (FileType),Time_State))// ' .h5'
497
+ CALL OpenDataFile(FileName,create= .FALSE. ,single= .TRUE. ,readOnly= .FALSE. )
498
+ CALL H5ADELETE_F( File_ID,' NodeType' ,iError)
499
+ CALL WriteAttribute(File_ID,' NodeType' ,1 ,StrScalar= (/ NodeTypeOut/ ))
500
+ CALL CloseDataFile()
501
+ END IF
483
502
END SUBROUTINE WriteNewStateFile
484
503
485
504
! ===================================================================================================================================
0 commit comments